[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/vendor/codemirror/mode/css/ -> css.js (source)

   1  // CodeMirror, copyright (c) by Marijn Haverbeke and others
   2  // Distributed under an MIT license: https://codemirror.net/5/LICENSE
   3  
   4  (function(mod) {
   5    if (typeof exports == "object" && typeof module == "object") // CommonJS
   6      mod(require("../../lib/codemirror"));
   7    else if (typeof define == "function" && define.amd) // AMD
   8      define(["../../lib/codemirror"], mod);
   9    else // Plain browser env
  10      mod(CodeMirror);
  11  })(function(CodeMirror) {
  12  "use strict";
  13  
  14  CodeMirror.defineMode("css", function(config, parserConfig) {
  15    var inline = parserConfig.inline
  16    if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode("text/css");
  17  
  18    var indentUnit = config.indentUnit,
  19        tokenHooks = parserConfig.tokenHooks,
  20        documentTypes = parserConfig.documentTypes || {},
  21        mediaTypes = parserConfig.mediaTypes || {},
  22        mediaFeatures = parserConfig.mediaFeatures || {},
  23        mediaValueKeywords = parserConfig.mediaValueKeywords || {},
  24        propertyKeywords = parserConfig.propertyKeywords || {},
  25        nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},
  26        fontProperties = parserConfig.fontProperties || {},
  27        counterDescriptors = parserConfig.counterDescriptors || {},
  28        colorKeywords = parserConfig.colorKeywords || {},
  29        valueKeywords = parserConfig.valueKeywords || {},
  30        allowNested = parserConfig.allowNested,
  31        lineComment = parserConfig.lineComment,
  32        supportsAtComponent = parserConfig.supportsAtComponent === true,
  33        highlightNonStandardPropertyKeywords = config.highlightNonStandardPropertyKeywords !== false;
  34  
  35    var type, override;
  36    function ret(style, tp) { type = tp; return style; }
  37  
  38    // Tokenizers
  39  
  40    function tokenBase(stream, state) {
  41      var ch = stream.next();
  42      if (tokenHooks[ch]) {
  43        var result = tokenHooks[ch](stream, state);
  44        if (result !== false) return result;
  45      }
  46      if (ch == "@") {
  47        stream.eatWhile(/[\w\\\-]/);
  48        return ret("def", stream.current());
  49      } else if (ch == "=" || (ch == "~" || ch == "|") && stream.eat("=")) {
  50        return ret(null, "compare");
  51      } else if (ch == "\"" || ch == "'") {
  52        state.tokenize = tokenString(ch);
  53        return state.tokenize(stream, state);
  54      } else if (ch == "#") {
  55        stream.eatWhile(/[\w\\\-]/);
  56        return ret("atom", "hash");
  57      } else if (ch == "!") {
  58        stream.match(/^\s*\w*/);
  59        return ret("keyword", "important");
  60      } else if (/\d/.test(ch) || ch == "." && stream.eat(/\d/)) {
  61        stream.eatWhile(/[\w.%]/);
  62        return ret("number", "unit");
  63      } else if (ch === "-") {
  64        if (/[\d.]/.test(stream.peek())) {
  65          stream.eatWhile(/[\w.%]/);
  66          return ret("number", "unit");
  67        } else if (stream.match(/^-[\w\\\-]*/)) {
  68          stream.eatWhile(/[\w\\\-]/);
  69          if (stream.match(/^\s*:/, false))
  70            return ret("variable-2", "variable-definition");
  71          return ret("variable-2", "variable");
  72        } else if (stream.match(/^\w+-/)) {
  73          return ret("meta", "meta");
  74        }
  75      } else if (/[,+>*\/]/.test(ch)) {
  76        return ret(null, "select-op");
  77      } else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {
  78        return ret("qualifier", "qualifier");
  79      } else if (/[:;{}\[\]\(\)]/.test(ch)) {
  80        return ret(null, ch);
  81      } else if (stream.match(/^[\w-.]+(?=\()/)) {
  82        if (/^(url(-prefix)?|domain|regexp)$/i.test(stream.current())) {
  83          state.tokenize = tokenParenthesized;
  84        }
  85        return ret("variable callee", "variable");
  86      } else if (/[\w\\\-]/.test(ch)) {
  87        stream.eatWhile(/[\w\\\-]/);
  88        return ret("property", "word");
  89      } else {
  90        return ret(null, null);
  91      }
  92    }
  93  
  94    function tokenString(quote) {
  95      return function(stream, state) {
  96        var escaped = false, ch;
  97        while ((ch = stream.next()) != null) {
  98          if (ch == quote && !escaped) {
  99            if (quote == ")") stream.backUp(1);
 100            break;
 101          }
 102          escaped = !escaped && ch == "\\";
 103        }
 104        if (ch == quote || !escaped && quote != ")") state.tokenize = null;
 105        return ret("string", "string");
 106      };
 107    }
 108  
 109    function tokenParenthesized(stream, state) {
 110      stream.next(); // Must be '('
 111      if (!stream.match(/^\s*[\"\')]/, false))
 112        state.tokenize = tokenString(")");
 113      else
 114        state.tokenize = null;
 115      return ret(null, "(");
 116    }
 117  
 118    // Context management
 119  
 120    function Context(type, indent, prev) {
 121      this.type = type;
 122      this.indent = indent;
 123      this.prev = prev;
 124    }
 125  
 126    function pushContext(state, stream, type, indent) {
 127      state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);
 128      return type;
 129    }
 130  
 131    function popContext(state) {
 132      if (state.context.prev)
 133        state.context = state.context.prev;
 134      return state.context.type;
 135    }
 136  
 137    function pass(type, stream, state) {
 138      return states[state.context.type](type, stream, state);
 139    }
 140    function popAndPass(type, stream, state, n) {
 141      for (var i = n || 1; i > 0; i--)
 142        state.context = state.context.prev;
 143      return pass(type, stream, state);
 144    }
 145  
 146    // Parser
 147  
 148    function wordAsValue(stream) {
 149      var word = stream.current().toLowerCase();
 150      if (valueKeywords.hasOwnProperty(word))
 151        override = "atom";
 152      else if (colorKeywords.hasOwnProperty(word))
 153        override = "keyword";
 154      else
 155        override = "variable";
 156    }
 157  
 158    var states = {};
 159  
 160    states.top = function(type, stream, state) {
 161      if (type == "{") {
 162        return pushContext(state, stream, "block");
 163      } else if (type == "}" && state.context.prev) {
 164        return popContext(state);
 165      } else if (supportsAtComponent && /@component/i.test(type)) {
 166        return pushContext(state, stream, "atComponentBlock");
 167      } else if (/^@(-moz-)?document$/i.test(type)) {
 168        return pushContext(state, stream, "documentTypes");
 169      } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {
 170        return pushContext(state, stream, "atBlock");
 171      } else if (/^@(font-face|counter-style)/i.test(type)) {
 172        state.stateArg = type;
 173        return "restricted_atBlock_before";
 174      } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {
 175        return "keyframes";
 176      } else if (type && type.charAt(0) == "@") {
 177        return pushContext(state, stream, "at");
 178      } else if (type == "hash") {
 179        override = "builtin";
 180      } else if (type == "word") {
 181        override = "tag";
 182      } else if (type == "variable-definition") {
 183        return "maybeprop";
 184      } else if (type == "interpolation") {
 185        return pushContext(state, stream, "interpolation");
 186      } else if (type == ":") {
 187        return "pseudo";
 188      } else if (allowNested && type == "(") {
 189        return pushContext(state, stream, "parens");
 190      }
 191      return state.context.type;
 192    };
 193  
 194    states.block = function(type, stream, state) {
 195      if (type == "word") {
 196        var word = stream.current().toLowerCase();
 197        if (propertyKeywords.hasOwnProperty(word)) {
 198          override = "property";
 199          return "maybeprop";
 200        } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {
 201          override = highlightNonStandardPropertyKeywords ? "string-2" : "property";
 202          return "maybeprop";
 203        } else if (allowNested) {
 204          override = stream.match(/^\s*:(?:\s|$)/, false) ? "property" : "tag";
 205          return "block";
 206        } else {
 207          override += " error";
 208          return "maybeprop";
 209        }
 210      } else if (type == "meta") {
 211        return "block";
 212      } else if (!allowNested && (type == "hash" || type == "qualifier")) {
 213        override = "error";
 214        return "block";
 215      } else {
 216        return states.top(type, stream, state);
 217      }
 218    };
 219  
 220    states.maybeprop = function(type, stream, state) {
 221      if (type == ":") return pushContext(state, stream, "prop");
 222      return pass(type, stream, state);
 223    };
 224  
 225    states.prop = function(type, stream, state) {
 226      if (type == ";") return popContext(state);
 227      if (type == "{" && allowNested) return pushContext(state, stream, "propBlock");
 228      if (type == "}" || type == "{") return popAndPass(type, stream, state);
 229      if (type == "(") return pushContext(state, stream, "parens");
 230  
 231      if (type == "hash" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {
 232        override += " error";
 233      } else if (type == "word") {
 234        wordAsValue(stream);
 235      } else if (type == "interpolation") {
 236        return pushContext(state, stream, "interpolation");
 237      }
 238      return "prop";
 239    };
 240  
 241    states.propBlock = function(type, _stream, state) {
 242      if (type == "}") return popContext(state);
 243      if (type == "word") { override = "property"; return "maybeprop"; }
 244      return state.context.type;
 245    };
 246  
 247    states.parens = function(type, stream, state) {
 248      if (type == "{" || type == "}") return popAndPass(type, stream, state);
 249      if (type == ")") return popContext(state);
 250      if (type == "(") return pushContext(state, stream, "parens");
 251      if (type == "interpolation") return pushContext(state, stream, "interpolation");
 252      if (type == "word") wordAsValue(stream);
 253      return "parens";
 254    };
 255  
 256    states.pseudo = function(type, stream, state) {
 257      if (type == "meta") return "pseudo";
 258  
 259      if (type == "word") {
 260        override = "variable-3";
 261        return state.context.type;
 262      }
 263      return pass(type, stream, state);
 264    };
 265  
 266    states.documentTypes = function(type, stream, state) {
 267      if (type == "word" && documentTypes.hasOwnProperty(stream.current())) {
 268        override = "tag";
 269        return state.context.type;
 270      } else {
 271        return states.atBlock(type, stream, state);
 272      }
 273    };
 274  
 275    states.atBlock = function(type, stream, state) {
 276      if (type == "(") return pushContext(state, stream, "atBlock_parens");
 277      if (type == "}" || type == ";") return popAndPass(type, stream, state);
 278      if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top");
 279  
 280      if (type == "interpolation") return pushContext(state, stream, "interpolation");
 281  
 282      if (type == "word") {
 283        var word = stream.current().toLowerCase();
 284        if (word == "only" || word == "not" || word == "and" || word == "or")
 285          override = "keyword";
 286        else if (mediaTypes.hasOwnProperty(word))
 287          override = "attribute";
 288        else if (mediaFeatures.hasOwnProperty(word))
 289          override = "property";
 290        else if (mediaValueKeywords.hasOwnProperty(word))
 291          override = "keyword";
 292        else if (propertyKeywords.hasOwnProperty(word))
 293          override = "property";
 294        else if (nonStandardPropertyKeywords.hasOwnProperty(word))
 295          override = highlightNonStandardPropertyKeywords ? "string-2" : "property";
 296        else if (valueKeywords.hasOwnProperty(word))
 297          override = "atom";
 298        else if (colorKeywords.hasOwnProperty(word))
 299          override = "keyword";
 300        else
 301          override = "error";
 302      }
 303      return state.context.type;
 304    };
 305  
 306    states.atComponentBlock = function(type, stream, state) {
 307      if (type == "}")
 308        return popAndPass(type, stream, state);
 309      if (type == "{")
 310        return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top", false);
 311      if (type == "word")
 312        override = "error";
 313      return state.context.type;
 314    };
 315  
 316    states.atBlock_parens = function(type, stream, state) {
 317      if (type == ")") return popContext(state);
 318      if (type == "{" || type == "}") return popAndPass(type, stream, state, 2);
 319      return states.atBlock(type, stream, state);
 320    };
 321  
 322    states.restricted_atBlock_before = function(type, stream, state) {
 323      if (type == "{")
 324        return pushContext(state, stream, "restricted_atBlock");
 325      if (type == "word" && state.stateArg == "@counter-style") {
 326        override = "variable";
 327        return "restricted_atBlock_before";
 328      }
 329      return pass(type, stream, state);
 330    };
 331  
 332    states.restricted_atBlock = function(type, stream, state) {
 333      if (type == "}") {
 334        state.stateArg = null;
 335        return popContext(state);
 336      }
 337      if (type == "word") {
 338        if ((state.stateArg == "@font-face" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||
 339            (state.stateArg == "@counter-style" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))
 340          override = "error";
 341        else
 342          override = "property";
 343        return "maybeprop";
 344      }
 345      return "restricted_atBlock";
 346    };
 347  
 348    states.keyframes = function(type, stream, state) {
 349      if (type == "word") { override = "variable"; return "keyframes"; }
 350      if (type == "{") return pushContext(state, stream, "top");
 351      return pass(type, stream, state);
 352    };
 353  
 354    states.at = function(type, stream, state) {
 355      if (type == ";") return popContext(state);
 356      if (type == "{" || type == "}") return popAndPass(type, stream, state);
 357      if (type == "word") override = "tag";
 358      else if (type == "hash") override = "builtin";
 359      return "at";
 360    };
 361  
 362    states.interpolation = function(type, stream, state) {
 363      if (type == "}") return popContext(state);
 364      if (type == "{" || type == ";") return popAndPass(type, stream, state);
 365      if (type == "word") override = "variable";
 366      else if (type != "variable" && type != "(" && type != ")") override = "error";
 367      return "interpolation";
 368    };
 369  
 370    return {
 371      startState: function(base) {
 372        return {tokenize: null,
 373                state: inline ? "block" : "top",
 374                stateArg: null,
 375                context: new Context(inline ? "block" : "top", base || 0, null)};
 376      },
 377  
 378      token: function(stream, state) {
 379        if (!state.tokenize && stream.eatSpace()) return null;
 380        var style = (state.tokenize || tokenBase)(stream, state);
 381        if (style && typeof style == "object") {
 382          type = style[1];
 383          style = style[0];
 384        }
 385        override = style;
 386        if (type != "comment")
 387          state.state = states[state.state](type, stream, state);
 388        return override;
 389      },
 390  
 391      indent: function(state, textAfter) {
 392        var cx = state.context, ch = textAfter && textAfter.charAt(0);
 393        var indent = cx.indent;
 394        if (cx.type == "prop" && (ch == "}" || ch == ")")) cx = cx.prev;
 395        if (cx.prev) {
 396          if (ch == "}" && (cx.type == "block" || cx.type == "top" ||
 397                            cx.type == "interpolation" || cx.type == "restricted_atBlock")) {
 398            // Resume indentation from parent context.
 399            cx = cx.prev;
 400            indent = cx.indent;
 401          } else if (ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") ||
 402              ch == "{" && (cx.type == "at" || cx.type == "atBlock")) {
 403            // Dedent relative to current context.
 404            indent = Math.max(0, cx.indent - indentUnit);
 405          }
 406        }
 407        return indent;
 408      },
 409  
 410      electricChars: "}",
 411      blockCommentStart: "/*",
 412      blockCommentEnd: "*/",
 413      blockCommentContinue: " * ",
 414      lineComment: lineComment,
 415      fold: "brace"
 416    };
 417  });
 418  
 419    function keySet(array) {
 420      var keys = {};
 421      for (var i = 0; i < array.length; ++i) {
 422        keys[array[i].toLowerCase()] = true;
 423      }
 424      return keys;
 425    }
 426  
 427    var documentTypes_ = [
 428      "domain", "regexp", "url", "url-prefix"
 429    ], documentTypes = keySet(documentTypes_);
 430  
 431    var mediaTypes_ = [
 432      "all", "aural", "braille", "handheld", "print", "projection", "screen",
 433      "tty", "tv", "embossed"
 434    ], mediaTypes = keySet(mediaTypes_);
 435  
 436    var mediaFeatures_ = [
 437      "width", "min-width", "max-width", "height", "min-height", "max-height",
 438      "device-width", "min-device-width", "max-device-width", "device-height",
 439      "min-device-height", "max-device-height", "aspect-ratio",
 440      "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio",
 441      "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color",
 442      "max-color", "color-index", "min-color-index", "max-color-index",
 443      "monochrome", "min-monochrome", "max-monochrome", "resolution",
 444      "min-resolution", "max-resolution", "scan", "grid", "orientation",
 445      "device-pixel-ratio", "min-device-pixel-ratio", "max-device-pixel-ratio",
 446      "pointer", "any-pointer", "hover", "any-hover", "prefers-color-scheme",
 447      "dynamic-range", "video-dynamic-range"
 448    ], mediaFeatures = keySet(mediaFeatures_);
 449  
 450    var mediaValueKeywords_ = [
 451      "landscape", "portrait", "none", "coarse", "fine", "on-demand", "hover",
 452      "interlace", "progressive",
 453      "dark", "light",
 454      "standard", "high"
 455    ], mediaValueKeywords = keySet(mediaValueKeywords_);
 456  
 457    var propertyKeywords_ = [
 458      "align-content", "align-items", "align-self", "alignment-adjust",
 459      "alignment-baseline", "all", "anchor-point", "animation", "animation-delay",
 460      "animation-direction", "animation-duration", "animation-fill-mode",
 461      "animation-iteration-count", "animation-name", "animation-play-state",
 462      "animation-timing-function", "appearance", "azimuth", "backdrop-filter",
 463      "backface-visibility", "background", "background-attachment",
 464      "background-blend-mode", "background-clip", "background-color",
 465      "background-image", "background-origin", "background-position",
 466      "background-position-x", "background-position-y", "background-repeat",
 467      "background-size", "baseline-shift", "binding", "bleed", "block-size",
 468      "bookmark-label", "bookmark-level", "bookmark-state", "bookmark-target",
 469      "border", "border-bottom", "border-bottom-color", "border-bottom-left-radius",
 470      "border-bottom-right-radius", "border-bottom-style", "border-bottom-width",
 471      "border-collapse", "border-color", "border-image", "border-image-outset",
 472      "border-image-repeat", "border-image-slice", "border-image-source",
 473      "border-image-width", "border-left", "border-left-color", "border-left-style",
 474      "border-left-width", "border-radius", "border-right", "border-right-color",
 475      "border-right-style", "border-right-width", "border-spacing", "border-style",
 476      "border-top", "border-top-color", "border-top-left-radius",
 477      "border-top-right-radius", "border-top-style", "border-top-width",
 478      "border-width", "bottom", "box-decoration-break", "box-shadow", "box-sizing",
 479      "break-after", "break-before", "break-inside", "caption-side", "caret-color",
 480      "clear", "clip", "color", "color-profile", "column-count", "column-fill",
 481      "column-gap", "column-rule", "column-rule-color", "column-rule-style",
 482      "column-rule-width", "column-span", "column-width", "columns", "contain",
 483      "content", "counter-increment", "counter-reset", "crop", "cue", "cue-after",
 484      "cue-before", "cursor", "direction", "display", "dominant-baseline",
 485      "drop-initial-after-adjust", "drop-initial-after-align",
 486      "drop-initial-before-adjust", "drop-initial-before-align", "drop-initial-size",
 487      "drop-initial-value", "elevation", "empty-cells", "fit", "fit-content", "fit-position",
 488      "flex", "flex-basis", "flex-direction", "flex-flow", "flex-grow",
 489      "flex-shrink", "flex-wrap", "float", "float-offset", "flow-from", "flow-into",
 490      "font", "font-family", "font-feature-settings", "font-kerning",
 491      "font-language-override", "font-optical-sizing", "font-size",
 492      "font-size-adjust", "font-stretch", "font-style", "font-synthesis",
 493      "font-variant", "font-variant-alternates", "font-variant-caps",
 494      "font-variant-east-asian", "font-variant-ligatures", "font-variant-numeric",
 495      "font-variant-position", "font-variation-settings", "font-weight", "gap",
 496      "grid", "grid-area", "grid-auto-columns", "grid-auto-flow", "grid-auto-rows",
 497      "grid-column", "grid-column-end", "grid-column-gap", "grid-column-start",
 498      "grid-gap", "grid-row", "grid-row-end", "grid-row-gap", "grid-row-start",
 499      "grid-template", "grid-template-areas", "grid-template-columns",
 500      "grid-template-rows", "hanging-punctuation", "height", "hyphens", "icon",
 501      "image-orientation", "image-rendering", "image-resolution", "inline-box-align",
 502      "inset", "inset-block", "inset-block-end", "inset-block-start", "inset-inline",
 503      "inset-inline-end", "inset-inline-start", "isolation", "justify-content",
 504      "justify-items", "justify-self", "left", "letter-spacing", "line-break",
 505      "line-height", "line-height-step", "line-stacking", "line-stacking-ruby",
 506      "line-stacking-shift", "line-stacking-strategy", "list-style",
 507      "list-style-image", "list-style-position", "list-style-type", "margin",
 508      "margin-bottom", "margin-left", "margin-right", "margin-top", "marks",
 509      "marquee-direction", "marquee-loop", "marquee-play-count", "marquee-speed",
 510      "marquee-style", "mask-clip", "mask-composite", "mask-image", "mask-mode",
 511      "mask-origin", "mask-position", "mask-repeat", "mask-size","mask-type",
 512      "max-block-size", "max-height", "max-inline-size",
 513      "max-width", "min-block-size", "min-height", "min-inline-size", "min-width",
 514      "mix-blend-mode", "move-to", "nav-down", "nav-index", "nav-left", "nav-right",
 515      "nav-up", "object-fit", "object-position", "offset", "offset-anchor",
 516      "offset-distance", "offset-path", "offset-position", "offset-rotate",
 517      "opacity", "order", "orphans", "outline", "outline-color", "outline-offset",
 518      "outline-style", "outline-width", "overflow", "overflow-style",
 519      "overflow-wrap", "overflow-x", "overflow-y", "padding", "padding-bottom",
 520      "padding-left", "padding-right", "padding-top", "page", "page-break-after",
 521      "page-break-before", "page-break-inside", "page-policy", "pause",
 522      "pause-after", "pause-before", "perspective", "perspective-origin", "pitch",
 523      "pitch-range", "place-content", "place-items", "place-self", "play-during",
 524      "position", "presentation-level", "punctuation-trim", "quotes",
 525      "region-break-after", "region-break-before", "region-break-inside",
 526      "region-fragment", "rendering-intent", "resize", "rest", "rest-after",
 527      "rest-before", "richness", "right", "rotate", "rotation", "rotation-point",
 528      "row-gap", "ruby-align", "ruby-overhang", "ruby-position", "ruby-span",
 529      "scale", "scroll-behavior", "scroll-margin", "scroll-margin-block",
 530      "scroll-margin-block-end", "scroll-margin-block-start", "scroll-margin-bottom",
 531      "scroll-margin-inline", "scroll-margin-inline-end",
 532      "scroll-margin-inline-start", "scroll-margin-left", "scroll-margin-right",
 533      "scroll-margin-top", "scroll-padding", "scroll-padding-block",
 534      "scroll-padding-block-end", "scroll-padding-block-start",
 535      "scroll-padding-bottom", "scroll-padding-inline", "scroll-padding-inline-end",
 536      "scroll-padding-inline-start", "scroll-padding-left", "scroll-padding-right",
 537      "scroll-padding-top", "scroll-snap-align", "scroll-snap-type",
 538      "shape-image-threshold", "shape-inside", "shape-margin", "shape-outside",
 539      "size", "speak", "speak-as", "speak-header", "speak-numeral",
 540      "speak-punctuation", "speech-rate", "stress", "string-set", "tab-size",
 541      "table-layout", "target", "target-name", "target-new", "target-position",
 542      "text-align", "text-align-last", "text-combine-upright", "text-decoration",
 543      "text-decoration-color", "text-decoration-line", "text-decoration-skip",
 544      "text-decoration-skip-ink", "text-decoration-style", "text-emphasis",
 545      "text-emphasis-color", "text-emphasis-position", "text-emphasis-style",
 546      "text-height", "text-indent", "text-justify", "text-orientation",
 547      "text-outline", "text-overflow", "text-rendering", "text-shadow",
 548      "text-size-adjust", "text-space-collapse", "text-transform",
 549      "text-underline-position", "text-wrap", "top", "touch-action", "transform", "transform-origin",
 550      "transform-style", "transition", "transition-delay", "transition-duration",
 551      "transition-property", "transition-timing-function", "translate",
 552      "unicode-bidi", "user-select", "vertical-align", "visibility", "voice-balance",
 553      "voice-duration", "voice-family", "voice-pitch", "voice-range", "voice-rate",
 554      "voice-stress", "voice-volume", "volume", "white-space", "widows", "width",
 555      "will-change", "word-break", "word-spacing", "word-wrap", "writing-mode", "z-index",
 556      // SVG-specific
 557      "clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color",
 558      "flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events",
 559      "color-interpolation", "color-interpolation-filters",
 560      "color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering",
 561      "marker", "marker-end", "marker-mid", "marker-start", "paint-order", "shape-rendering", "stroke",
 562      "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin",
 563      "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering",
 564      "baseline-shift", "dominant-baseline", "glyph-orientation-horizontal",
 565      "glyph-orientation-vertical", "text-anchor", "writing-mode",
 566    ], propertyKeywords = keySet(propertyKeywords_);
 567  
 568    var nonStandardPropertyKeywords_ = [
 569      "accent-color", "aspect-ratio", "border-block", "border-block-color", "border-block-end",
 570      "border-block-end-color", "border-block-end-style", "border-block-end-width",
 571      "border-block-start", "border-block-start-color", "border-block-start-style",
 572      "border-block-start-width", "border-block-style", "border-block-width",
 573      "border-inline", "border-inline-color", "border-inline-end",
 574      "border-inline-end-color", "border-inline-end-style",
 575      "border-inline-end-width", "border-inline-start", "border-inline-start-color",
 576      "border-inline-start-style", "border-inline-start-width",
 577      "border-inline-style", "border-inline-width", "content-visibility", "margin-block",
 578      "margin-block-end", "margin-block-start", "margin-inline", "margin-inline-end",
 579      "margin-inline-start", "overflow-anchor", "overscroll-behavior", "padding-block", "padding-block-end",
 580      "padding-block-start", "padding-inline", "padding-inline-end",
 581      "padding-inline-start", "scroll-snap-stop", "scrollbar-3d-light-color",
 582      "scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color",
 583      "scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color",
 584      "scrollbar-track-color", "searchfield-cancel-button", "searchfield-decoration",
 585      "searchfield-results-button", "searchfield-results-decoration", "shape-inside", "zoom"
 586    ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);
 587  
 588    var fontProperties_ = [
 589      "font-display", "font-family", "src", "unicode-range", "font-variant",
 590       "font-feature-settings", "font-stretch", "font-weight", "font-style"
 591    ], fontProperties = keySet(fontProperties_);
 592  
 593    var counterDescriptors_ = [
 594      "additive-symbols", "fallback", "negative", "pad", "prefix", "range",
 595      "speak-as", "suffix", "symbols", "system"
 596    ], counterDescriptors = keySet(counterDescriptors_);
 597  
 598    var colorKeywords_ = [
 599      "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige",
 600      "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown",
 601      "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue",
 602      "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod",
 603      "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen",
 604      "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen",
 605      "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet",
 606      "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick",
 607      "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite",
 608      "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew",
 609      "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender",
 610      "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral",
 611      "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink",
 612      "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey",
 613      "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta",
 614      "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple",
 615      "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise",
 616      "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin",
 617      "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered",
 618      "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred",
 619      "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue",
 620      "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown",
 621      "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue",
 622      "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan",
 623      "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white",
 624      "whitesmoke", "yellow", "yellowgreen"
 625    ], colorKeywords = keySet(colorKeywords_);
 626  
 627    var valueKeywords_ = [
 628      "above", "absolute", "activeborder", "additive", "activecaption", "afar",
 629      "after-white-space", "ahead", "alias", "all", "all-scroll", "alphabetic", "alternate",
 630      "always", "amharic", "amharic-abegede", "antialiased", "appworkspace",
 631      "arabic-indic", "armenian", "asterisks", "attr", "auto", "auto-flow", "avoid", "avoid-column", "avoid-page",
 632      "avoid-region", "axis-pan", "background", "backwards", "baseline", "below", "bidi-override", "binary",
 633      "bengali", "blink", "block", "block-axis", "blur", "bold", "bolder", "border", "border-box",
 634      "both", "bottom", "break", "break-all", "break-word", "brightness", "bullets", "button",
 635      "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "calc", "cambodian",
 636      "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret",
 637      "cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch",
 638      "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote",
 639      "col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse",
 640      "compact", "condensed", "conic-gradient", "contain", "content", "contents",
 641      "content-box", "context-menu", "continuous", "contrast", "copy", "counter", "counters", "cover", "crop",
 642      "cross", "crosshair", "cubic-bezier", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal",
 643      "decimal-leading-zero", "default", "default-button", "dense", "destination-atop",
 644      "destination-in", "destination-out", "destination-over", "devanagari", "difference",
 645      "disc", "discard", "disclosure-closed", "disclosure-open", "document",
 646      "dot-dash", "dot-dot-dash",
 647      "dotted", "double", "down", "drop-shadow", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out",
 648      "element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede",
 649      "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er",
 650      "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er",
 651      "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et",
 652      "ethiopic-halehame-gez", "ethiopic-halehame-om-et",
 653      "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et",
 654      "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig",
 655      "ethiopic-numeric", "ew-resize", "exclusion", "expanded", "extends", "extra-condensed",
 656      "extra-expanded", "fantasy", "fast", "fill", "fill-box", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes",
 657      "forwards", "from", "geometricPrecision", "georgian", "grayscale", "graytext", "grid", "groove",
 658      "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hard-light", "hebrew",
 659      "help", "hidden", "hide", "higher", "highlight", "highlighttext",
 660      "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "hue", "hue-rotate", "icon", "ignore",
 661      "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite",
 662      "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis",
 663      "inline-block", "inline-flex", "inline-grid", "inline-table", "inset", "inside", "intrinsic", "invert",
 664      "italic", "japanese-formal", "japanese-informal", "justify", "kannada",
 665      "katakana", "katakana-iroha", "keep-all", "khmer",
 666      "korean-hangul-formal", "korean-hanja-formal", "korean-hanja-informal",
 667      "landscape", "lao", "large", "larger", "left", "level", "lighter", "lighten",
 668      "line-through", "linear", "linear-gradient", "lines", "list-item", "listbox", "listitem",
 669      "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian",
 670      "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian",
 671      "lower-roman", "lowercase", "ltr", "luminosity", "malayalam", "manipulation", "match", "matrix", "matrix3d",
 672      "media-play-button", "media-slider", "media-sliderthumb",
 673      "media-volume-slider", "media-volume-sliderthumb", "medium",
 674      "menu", "menulist", "menulist-button",
 675      "menutext", "message-box", "middle", "min-intrinsic",
 676      "mix", "mongolian", "monospace", "move", "multiple", "multiple_mask_images", "multiply", "myanmar", "n-resize",
 677      "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop",
 678      "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap",
 679      "ns-resize", "numbers", "numeric", "nw-resize", "nwse-resize", "oblique", "octal", "opacity", "open-quote",
 680      "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset",
 681      "outside", "outside-shape", "overlay", "overline", "padding", "padding-box",
 682      "painted", "page", "paused", "persian", "perspective", "pinch-zoom", "plus-darker", "plus-lighter",
 683      "pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d",
 684      "progress", "push-button", "radial-gradient", "radio", "read-only",
 685      "read-write", "read-write-plaintext-only", "rectangle", "region",
 686      "relative", "repeat", "repeating-linear-gradient", "repeating-radial-gradient",
 687      "repeating-conic-gradient", "repeat-x", "repeat-y", "reset", "reverse",
 688      "rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY",
 689      "rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running",
 690      "s-resize", "sans-serif", "saturate", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen",
 691      "scroll", "scrollbar", "scroll-position", "se-resize", "searchfield",
 692      "searchfield-cancel-button", "searchfield-decoration",
 693      "searchfield-results-button", "searchfield-results-decoration", "self-start", "self-end",
 694      "semi-condensed", "semi-expanded", "separate", "sepia", "serif", "show", "sidama",
 695      "simp-chinese-formal", "simp-chinese-informal", "single",
 696      "skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal",
 697      "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow",
 698      "small", "small-caps", "small-caption", "smaller", "soft-light", "solid", "somali",
 699      "source-atop", "source-in", "source-out", "source-over", "space", "space-around", "space-between", "space-evenly", "spell-out", "square",
 700      "square-button", "start", "static", "status-bar", "stretch", "stroke", "stroke-box", "sub",
 701      "subpixel-antialiased", "svg_masks", "super", "sw-resize", "symbolic", "symbols", "system-ui", "table",
 702      "table-caption", "table-cell", "table-column", "table-column-group",
 703      "table-footer-group", "table-header-group", "table-row", "table-row-group",
 704      "tamil",
 705      "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai",
 706      "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight",
 707      "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er",
 708      "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top",
 709      "trad-chinese-formal", "trad-chinese-informal", "transform",
 710      "translate", "translate3d", "translateX", "translateY", "translateZ",
 711      "transparent", "ultra-condensed", "ultra-expanded", "underline", "unidirectional-pan", "unset", "up",
 712      "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal",
 713      "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url",
 714      "var", "vertical", "vertical-text", "view-box", "visible", "visibleFill", "visiblePainted",
 715      "visibleStroke", "visual", "w-resize", "wait", "wave", "wider",
 716      "window", "windowframe", "windowtext", "words", "wrap", "wrap-reverse", "x-large", "x-small", "xor",
 717      "xx-large", "xx-small"
 718    ], valueKeywords = keySet(valueKeywords_);
 719  
 720    var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)
 721      .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)
 722      .concat(valueKeywords_);
 723    CodeMirror.registerHelper("hintWords", "css", allWords);
 724  
 725    function tokenCComment(stream, state) {
 726      var maybeEnd = false, ch;
 727      while ((ch = stream.next()) != null) {
 728        if (maybeEnd && ch == "/") {
 729          state.tokenize = null;
 730          break;
 731        }
 732        maybeEnd = (ch == "*");
 733      }
 734      return ["comment", "comment"];
 735    }
 736  
 737    CodeMirror.defineMIME("text/css", {
 738      documentTypes: documentTypes,
 739      mediaTypes: mediaTypes,
 740      mediaFeatures: mediaFeatures,
 741      mediaValueKeywords: mediaValueKeywords,
 742      propertyKeywords: propertyKeywords,
 743      nonStandardPropertyKeywords: nonStandardPropertyKeywords,
 744      fontProperties: fontProperties,
 745      counterDescriptors: counterDescriptors,
 746      colorKeywords: colorKeywords,
 747      valueKeywords: valueKeywords,
 748      tokenHooks: {
 749        "/": function(stream, state) {
 750          if (!stream.eat("*")) return false;
 751          state.tokenize = tokenCComment;
 752          return tokenCComment(stream, state);
 753        }
 754      },
 755      name: "css"
 756    });
 757  
 758    CodeMirror.defineMIME("text/x-scss", {
 759      mediaTypes: mediaTypes,
 760      mediaFeatures: mediaFeatures,
 761      mediaValueKeywords: mediaValueKeywords,
 762      propertyKeywords: propertyKeywords,
 763      nonStandardPropertyKeywords: nonStandardPropertyKeywords,
 764      colorKeywords: colorKeywords,
 765      valueKeywords: valueKeywords,
 766      fontProperties: fontProperties,
 767      allowNested: true,
 768      lineComment: "//",
 769      tokenHooks: {
 770        "/": function(stream, state) {
 771          if (stream.eat("/")) {
 772            stream.skipToEnd();
 773            return ["comment", "comment"];
 774          } else if (stream.eat("*")) {
 775            state.tokenize = tokenCComment;
 776            return tokenCComment(stream, state);
 777          } else {
 778            return ["operator", "operator"];
 779          }
 780        },
 781        ":": function(stream) {
 782          if (stream.match(/^\s*\{/, false))
 783            return [null, null]
 784          return false;
 785        },
 786        "$": function(stream) {
 787          stream.match(/^[\w-]+/);
 788          if (stream.match(/^\s*:/, false))
 789            return ["variable-2", "variable-definition"];
 790          return ["variable-2", "variable"];
 791        },
 792        "#": function(stream) {
 793          if (!stream.eat("{")) return false;
 794          return [null, "interpolation"];
 795        }
 796      },
 797      name: "css",
 798      helperType: "scss"
 799    });
 800  
 801    CodeMirror.defineMIME("text/x-less", {
 802      mediaTypes: mediaTypes,
 803      mediaFeatures: mediaFeatures,
 804      mediaValueKeywords: mediaValueKeywords,
 805      propertyKeywords: propertyKeywords,
 806      nonStandardPropertyKeywords: nonStandardPropertyKeywords,
 807      colorKeywords: colorKeywords,
 808      valueKeywords: valueKeywords,
 809      fontProperties: fontProperties,
 810      allowNested: true,
 811      lineComment: "//",
 812      tokenHooks: {
 813        "/": function(stream, state) {
 814          if (stream.eat("/")) {
 815            stream.skipToEnd();
 816            return ["comment", "comment"];
 817          } else if (stream.eat("*")) {
 818            state.tokenize = tokenCComment;
 819            return tokenCComment(stream, state);
 820          } else {
 821            return ["operator", "operator"];
 822          }
 823        },
 824        "@": function(stream) {
 825          if (stream.eat("{")) return [null, "interpolation"];
 826          if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/i, false)) return false;
 827          stream.eatWhile(/[\w\\\-]/);
 828          if (stream.match(/^\s*:/, false))
 829            return ["variable-2", "variable-definition"];
 830          return ["variable-2", "variable"];
 831        },
 832        "&": function() {
 833          return ["atom", "atom"];
 834        }
 835      },
 836      name: "css",
 837      helperType: "less"
 838    });
 839  
 840    CodeMirror.defineMIME("text/x-gss", {
 841      documentTypes: documentTypes,
 842      mediaTypes: mediaTypes,
 843      mediaFeatures: mediaFeatures,
 844      propertyKeywords: propertyKeywords,
 845      nonStandardPropertyKeywords: nonStandardPropertyKeywords,
 846      fontProperties: fontProperties,
 847      counterDescriptors: counterDescriptors,
 848      colorKeywords: colorKeywords,
 849      valueKeywords: valueKeywords,
 850      supportsAtComponent: true,
 851      tokenHooks: {
 852        "/": function(stream, state) {
 853          if (!stream.eat("*")) return false;
 854          state.tokenize = tokenCComment;
 855          return tokenCComment(stream, state);
 856        }
 857      },
 858      name: "css",
 859      helperType: "gss"
 860    });
 861  
 862  });


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer