Вход Регистрация
Файл: upload/admin/view/javascript/ckeditor/plugins/codemirror/js/css.js
Строк: 819
<?php
CodeMirror
.defineMode("css", function(config) {
  var 
indentUnit config.indentUnittype;
  
  var 
atMediaTypes keySet([
    
"all""aural""braille""handheld""print""projection""screen",
    
"tty""tv""embossed"
  
]);
  
  var 
atMediaFeatures keySet([
    
"width""min-width""max-width""height""min-height""max-height",
    
"device-width""min-device-width""max-device-width""device-height",
    
"min-device-height""max-device-height""aspect-ratio",
    
"min-aspect-ratio""max-aspect-ratio""device-aspect-ratio",
    
"min-device-aspect-ratio""max-device-aspect-ratio""color""min-color",
    
"max-color""color-index""min-color-index""max-color-index",
    
"monochrome""min-monochrome""max-monochrome""resolution",
    
"min-resolution""max-resolution""scan""grid"
  
]);

  var 
propertyKeywords keySet([
    
"align-content""align-items""align-self""alignment-adjust",
    
"alignment-baseline""anchor-point""animation""animation-delay",
    
"animation-direction""animation-duration""animation-iteration-count",
    
"animation-name""animation-play-state""animation-timing-function",
    
"appearance""azimuth""backface-visibility""background",
    
"background-attachment""background-clip""background-color",
    
"background-image""background-origin""background-position",
    
"background-repeat""background-size""baseline-shift""binding",
    
"bleed""bookmark-label""bookmark-level""bookmark-state",
    
"bookmark-target""border""border-bottom""border-bottom-color",
    
"border-bottom-left-radius""border-bottom-right-radius",
    
"border-bottom-style""border-bottom-width""border-collapse",
    
"border-color""border-image""border-image-outset",
    
"border-image-repeat""border-image-slice""border-image-source",
    
"border-image-width""border-left""border-left-color",
    
"border-left-style""border-left-width""border-radius""border-right",
    
"border-right-color""border-right-style""border-right-width",
    
"border-spacing""border-style""border-top""border-top-color",
    
"border-top-left-radius""border-top-right-radius""border-top-style",
    
"border-top-width""border-width""bottom""box-decoration-break",
    
"box-shadow""box-sizing""break-after""break-before""break-inside",
    
"caption-side""clear""clip""color""color-profile""column-count",
    
"column-fill""column-gap""column-rule""column-rule-color",
    
"column-rule-style""column-rule-width""column-span""column-width",
    
"columns""content""counter-increment""counter-reset""crop""cue",
    
"cue-after""cue-before""cursor""direction""display",
    
"dominant-baseline""drop-initial-after-adjust",
    
"drop-initial-after-align""drop-initial-before-adjust",
    
"drop-initial-before-align""drop-initial-size""drop-initial-value",
    
"elevation""empty-cells""fit""fit-position""flex""flex-basis",
    
"flex-direction""flex-flow""flex-grow""flex-shrink""flex-wrap",
    
"float""float-offset""font""font-feature-settings""font-family",
    
"font-kerning""font-language-override""font-size""font-size-adjust",
    
"font-stretch""font-style""font-synthesis""font-variant",
    
"font-variant-alternates""font-variant-caps""font-variant-east-asian",
    
"font-variant-ligatures""font-variant-numeric""font-variant-position",
    
"font-weight""grid-cell""grid-column""grid-column-align",
    
"grid-column-sizing""grid-column-span""grid-columns""grid-flow",
    
"grid-row""grid-row-align""grid-row-sizing""grid-row-span",
    
"grid-rows""grid-template""hanging-punctuation""height""hyphens",
    
"icon""image-orientation""image-rendering""image-resolution",
    
"inline-box-align""justify-content""left""letter-spacing",
    
"line-break""line-height""line-stacking""line-stacking-ruby",
    
"line-stacking-shift""line-stacking-strategy""list-style",
    
"list-style-image""list-style-position""list-style-type""margin",
    
"margin-bottom""margin-left""margin-right""margin-top",
    
"marker-offset""marks""marquee-direction""marquee-loop",
    
"marquee-play-count""marquee-speed""marquee-style""max-height",
    
"max-width""min-height""min-width""move-to""nav-down""nav-index",
    
"nav-left""nav-right""nav-up""opacity""order""orphans""outline",
    
"outline-color""outline-offset""outline-style""outline-width",
    
"overflow""overflow-style""overflow-wrap""overflow-x""overflow-y",
    
"padding""padding-bottom""padding-left""padding-right""padding-top",
    
"page""page-break-after""page-break-before""page-break-inside",
    
"page-policy""pause""pause-after""pause-before""perspective",
    
"perspective-origin""pitch""pitch-range""play-during""position",
    
"presentation-level""punctuation-trim""quotes""rendering-intent",
    
"resize""rest""rest-after""rest-before""richness""right",
    
"rotation""rotation-point""ruby-align""ruby-overhang",
    
"ruby-position""ruby-span""size""speak""speak-as""speak-header",
    
"speak-numeral""speak-punctuation""speech-rate""stress""string-set",
    
"tab-size""table-layout""target""target-name""target-new",
    
"target-position""text-align""text-align-last""text-decoration",
    
"text-decoration-color""text-decoration-line""text-decoration-skip",
    
"text-decoration-style""text-emphasis""text-emphasis-color",
    
"text-emphasis-position""text-emphasis-style""text-height",
    
"text-indent""text-justify""text-outline""text-shadow",
    
"text-space-collapse""text-transform""text-underline-position",
    
"text-wrap""top""transform""transform-origin""transform-style",
    
"transition""transition-delay""transition-duration",
    
"transition-property""transition-timing-function""unicode-bidi",
    
"vertical-align""visibility""voice-balance""voice-duration",
    
"voice-family""voice-pitch""voice-range""voice-rate""voice-stress",
    
"voice-volume""volume""white-space""widows""width""word-break",
    
"word-spacing""word-wrap""z-index"
  
]);

  var 
colorKeywords keySet([
    
"black""silver""gray""white""maroon""red""purple""fuchsia",
    
"green""lime""olive""yellow""navy""blue""teal""aqua"
  
]);
  
  var 
valueKeywords keySet([
    
"above""absolute""activeborder""activecaption""afar",
    
"after-white-space""ahead""alias""all""all-scroll""alternate",
    
"always""amharic""amharic-abegede""antialiased""appworkspace",
    
"arabic-indic""armenian""asterisks""auto""avoid""background",
    
"backwards""baseline""below""bidi-override""binary""bengali",
    
"blink""block""block-axis""bold""bolder""border""border-box",
    
"both""bottom""break-all""break-word""button""button-bevel",
    
"buttonface""buttonhighlight""buttonshadow""buttontext""cambodian",
    
"capitalize""caps-lock-indicator""caption""captiontext""caret",
    
"cell""center""checkbox""circle""cjk-earthly-branch",
    
"cjk-heavenly-stem""cjk-ideographic""clear""clip""close-quote",
    
"col-resize""collapse""compact""condensed""contain""content",
    
"content-box""context-menu""continuous""copy""cover""crop",
    
"cross""crosshair""currentcolor""cursive""dashed""decimal",
    
"decimal-leading-zero""default""default-button""destination-atop",
    
"destination-in""destination-out""destination-over""devanagari",
    
"disc""discard""document""dot-dash""dot-dot-dash""dotted",
    
"double""down""e-resize""ease""ease-in""ease-in-out""ease-out",
    
"element""ellipsis""embed""end""ethiopic""ethiopic-abegede",
    
"ethiopic-abegede-am-et""ethiopic-abegede-gez""ethiopic-abegede-ti-er",
    
"ethiopic-abegede-ti-et""ethiopic-halehame-aa-er",
    
"ethiopic-halehame-aa-et""ethiopic-halehame-am-et",
    
"ethiopic-halehame-gez""ethiopic-halehame-om-et",
    
"ethiopic-halehame-sid-et""ethiopic-halehame-so-et",
    
"ethiopic-halehame-ti-er""ethiopic-halehame-ti-et",
    
"ethiopic-halehame-tig""ew-resize""expanded""extra-condensed",
    
"extra-expanded""fantasy""fast""fill""fixed""flat""footnotes",
    
"forwards""from""geometricPrecision""georgian""graytext""groove",
    
"gujarati""gurmukhi""hand""hangul""hangul-consonant""hebrew",
    
"help""hidden""hide""higher""highlight""highlighttext",
    
"hiragana""hiragana-iroha""horizontal""hsl""hsla""icon""ignore",
    
"inactiveborder""inactivecaption""inactivecaptiontext""infinite",
    
"infobackground""infotext""inherit""initial""inline""inline-axis",
    
"inline-block""inline-table""inset""inside""intrinsic""invert",
    
"italic""justify""kannada""katakana""katakana-iroha""khmer",
    
"landscape""lao""large""larger""left""level""lighter",
    
"line-through""linear""lines""list-item""listbox""listitem",
    
"local""logical""loud""lower""lower-alpha""lower-armenian",
    
"lower-greek""lower-hexadecimal""lower-latin""lower-norwegian",
    
"lower-roman""lowercase""ltr""malayalam""match",
    
"media-controls-background""media-current-time-display",
    
"media-fullscreen-button""media-mute-button""media-play-button",
    
"media-return-to-realtime-button""media-rewind-button",
    
"media-seek-back-button""media-seek-forward-button""media-slider",
    
"media-sliderthumb""media-time-remaining-display""media-volume-slider",
    
"media-volume-slider-container""media-volume-sliderthumb""medium",
    
"menu""menulist""menulist-button""menulist-text",
    
"menulist-textfield""menutext""message-box""middle""min-intrinsic",
    
"mix""mongolian""monospace""move""multiple""myanmar""n-resize",
    
"narrower""navy""ne-resize""nesw-resize""no-close-quote""no-drop",
    
"no-open-quote""no-repeat""none""normal""not-allowed""nowrap",
    
"ns-resize""nw-resize""nwse-resize""oblique""octal""open-quote",
    
"optimizeLegibility""optimizeSpeed""oriya""oromo""outset",
    
"outside""overlay""overline""padding""padding-box""painted",
    
"paused""persian""plus-darker""plus-lighter""pointer""portrait",
    
"pre""pre-line""pre-wrap""preserve-3d""progress""push-button",
    
"radio""read-only""read-write""read-write-plaintext-only""relative",
    
"repeat""repeat-x""repeat-y""reset""reverse""rgb""rgba",
    
"ridge""right""round""row-resize""rtl""run-in""running",
    
"s-resize""sans-serif""scroll""scrollbar""se-resize""searchfield",
    
"searchfield-cancel-button""searchfield-decoration",
    
"searchfield-results-button""searchfield-results-decoration",
    
"semi-condensed""semi-expanded""separate""serif""show""sidama",
    
"single""skip-white-space""slide""slider-horizontal",
    
"slider-vertical""sliderthumb-horizontal""sliderthumb-vertical""slow",
    
"small""small-caps""small-caption""smaller""solid""somali",
    
"source-atop""source-in""source-out""source-over""space""square",
    
"square-button""start""static""status-bar""stretch""stroke",
    
"sub""subpixel-antialiased""super""sw-resize""table",
    
"table-caption""table-cell""table-column""table-column-group",
    
"table-footer-group""table-header-group""table-row""table-row-group",
    
"telugu""text""text-bottom""text-top""textarea""textfield""thai",
    
"thick""thin""threeddarkshadow""threedface""threedhighlight",
    
"threedlightshadow""threedshadow""tibetan""tigre""tigrinya-er",
    
"tigrinya-er-abegede""tigrinya-et""tigrinya-et-abegede""to""top",
    
"transparent""ultra-condensed""ultra-expanded""underline""up",
    
"upper-alpha""upper-armenian""upper-greek""upper-hexadecimal",
    
"upper-latin""upper-norwegian""upper-roman""uppercase""urdu""url",
    
"vertical""vertical-text""visible""visibleFill""visiblePainted",
    
"visibleStroke""visual""w-resize""wait""wave""white""wider",
    
"window""windowframe""windowtext""x-large""x-small""xor",
    
"xx-large""xx-small""yellow"
  
]);

  function 
keySet(array) { var keys = {}; for (var 0< array.length; ++ikeys[array[i]] = true; return keys; }
  function 
ret(styletp) {type tp; return style;}

  function 
tokenBase(streamstate) {
    var 
ch stream.next();
    if (
ch == "@") {stream.eatWhile(/[w\-]/); return ret("def"stream.current());}
    else if (
ch == "/" && stream.eat("*")) {
      
state.tokenize tokenCComment;
      return 
tokenCComment(streamstate);
    }
    else if (
ch == "<" && stream.eat("!")) {
      
state.tokenize tokenSGMLComment;
      return 
tokenSGMLComment(streamstate);
    }
    else if (
ch == "="ret(null"compare");
    else if ((
ch == "~" || ch == "|") && stream.eat("=")) return ret(null"compare");
    else if (
ch == """ || ch == "'") {
      state.tokenize = tokenString(ch);
      return state.tokenize(stream, state);
    }
    else if (ch == "#") {
      stream.eatWhile(/[w\-]/);
      return ret("atom", "hash");
    }
    else if (ch == "!") {
      stream.match(/^s*w*/);
      return ret("keyword", "important");
    }
    else if (/d/.test(ch)) {
      stream.eatWhile(/[w.%]/);
      return ret("number", "unit");
    }
    else if (ch === "-") {
      if (/d/.test(stream.peek())) {
        stream.eatWhile(/[w.%]/);
        return ret("number", "unit");
      } else if (stream.match(/^[^-]+-/)) {
        return ret("meta", type);
      }
    }
    else if (/[,+>*/]/.test(ch)) {
      return ret(null, "select-op");
    }
    else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {
      return ret("qualifier", type);
    }
    else if (ch == ":") {
      return ret("operator", ch);
    }
    else if (/[;{}[]()]/.test(ch)) {
      return ret(null, ch);
    }
    else if (ch == "u" && stream.match("rl(")) {
      stream.backUp(1);
      state.tokenize = tokenParenthesized;
      return ret("property", "variable");
    }
    else {
      stream.eatWhile(/[w\-]/);
      return ret("property", "variable");
    }
  }

  function tokenCComment(stream, state) {
    var maybeEnd = false, ch;
    while ((ch = stream.next()) != null) {
      if (maybeEnd && ch == "/") {
        state.tokenize = tokenBase;
        break;
      }
      maybeEnd = (ch == "*");
    }
    return ret("comment", "comment");
  }

  function tokenSGMLComment(stream, state) {
    var dashes = 0, ch;
    while ((ch = stream.next()) != null) {
      if (dashes >= 2 && ch == ">") {
        state.tokenize = tokenBase;
        break;
      }
      dashes = (ch == "-") ? dashes + 1 : 0;
    }
    return ret("comment", "comment");
  }

  function tokenString(quote, nonInclusive) {
    return function(stream, state) {
      var escaped = false, ch;
      while ((ch = stream.next()) != null) {
        if (ch == quote && !escaped)
          break;
        escaped = !escaped && ch == "\";
      }
      if (!escaped) {
        if (nonInclusive) stream.backUp(1);
        state.tokenize = tokenBase;
      }
      return ret("string", "string");
    };
  }

  function tokenParenthesized(stream, state) {
    stream.next(); // Must be '
('
    if (!stream.match(/s*["'
]/, false))
      
state.tokenize tokenString(")"true);
    else
      
state.tokenize tokenBase;
    return 
ret(null"(");
  }

  return {
    
startState: function(base) {
      return {
tokenizetokenBase,
              
baseIndentbase || 0,
              
stack: []};
    },

    
token: function(streamstate) {
      
      
// Use these terms when applicable (see http://www.xanthir.com/blog/b4E50)
      // 
      // rule** or **ruleset:
      // A selector + braces combo, or an at-rule.
      // 
      // declaration block:
      // A sequence of declarations.
      // 
      // declaration:
      // A property + colon + value combo.
      // 
      // property value:
      // The entire value of a property.
      // 
      // component value:
      // A single piece of a property value. Like the 5px in
      // text-shadow: 0 0 5px blue;. Can also refer to things that are
      // multiple terms, like the 1-4 terms that make up the background-size
      // portion of the background shorthand.
      // 
      // term:
      // The basic unit of author-facing CSS, like a single number (5),
      // dimension (5px), string ("foo"), or function. Officially defined
      //  by the CSS 2.1 grammar (look for the 'term' production)
      // 
      // 
      // simple selector:
      // A single atomic selector, like a type selector, an attr selector, a
      // class selector, etc.
      // 
      // compound selector:
      // One or more simple selectors without a combinator. div.example is
      // compound, div > .example is not.
      // 
      // complex selector:
      // One or more compound selectors chained with combinators.
      // 
      // combinator:
      // The parts of selectors that express relationships. There are four
      // currently - the space (descendant combinator), the greater-than
      // bracket (child combinator), the plus sign (next sibling combinator),
      // and the tilda (following sibling combinator).
      // 
      // sequence of selectors:
      // One or more of the named type of selector chained with commas.

      
if (state.tokenize == tokenBase && stream.eatSpace()) return null;
      var 
style state.tokenize(streamstate);

      
// Changing style returned based on context
      
var context state.stack[state.stack.length-1];
      if (
style == "property") {
        if (
context == "propertyValue"){
          if (
valueKeywords[stream.current()]) {
            
style "string-2";
          } else if (
colorKeywords[stream.current()]) {
            
style "keyword";
          } else {
            
style "variable-2";
          }
        } else if (
context == "rule") {
          if (!
propertyKeywords[stream.current()]) {
            
style += " error";
          }
        } else if (!
context || context == "@media{") {
          
style "tag";
        } else if (
context == "@media") {
          if (
atMediaTypes[stream.current()]) {
            
style "attribute"// Known attribute
          
} else if (/^(only|not)$/i.test(stream.current())) {
            
style "keyword";
          } else if (
stream.current().toLowerCase() == "and") {
            
style "error"// "and" is only allowed in @mediaType
          
} else if (atMediaFeatures[stream.current()]) {
            
style "error"// Known property, should be in @mediaType(
          
} else {
            
// Unknown, expecting keyword or attribute, assuming attribute
            
style "attribute error";
          }
        } else if (
context == "@mediaType") {
          if (
atMediaTypes[stream.current()]) {
            
style "attribute";
          } else if (
stream.current().toLowerCase() == "and") {
            
style "operator";
          } else if (/^(
only|not)$/i.test(stream.current())) {
            
style "error"// Only allowed in @media
          
} else if (atMediaFeatures[stream.current()]) {
            
style "error"// Known property, should be in parentheses
          
} else {
            
// Unknown attribute or property, but expecting property (preceded
            // by "and"). Should be in parentheses
            
style "error";
          }
        } else if (
context == "@mediaType(") {
          if (
propertyKeywords[stream.current()]) {
            
// do nothing, remains "property"
          
} else if (atMediaTypes[stream.current()]) {
            
style "error"// Known property, should be in parentheses
          
} else if (stream.current().toLowerCase() == "and") {
            
style "operator";
          } else if (/^(
only|not)$/i.test(stream.current())) {
            
style "error"// Only allowed in @media
          
} else {
            
style += " error";
          }
        } else {
          
style "error";
        }
      } else if (
style == "atom") {
        if(!
context || context == "@media{") {
          
style "builtin";
        } else if (
context == "propertyValue") {
          if (!/^
#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(stream.current())) {
            
style += " error";
          }
        } else {
          
style "error";
        }
      } else if (
context == "@media" && type == "{") {
        
style "error";
      }

      
// Push/pop context stack
      
if (type == "{") {
        if (
context == "@media" || context == "@mediaType") {
          
state.stack.pop();
          
state.stack[state.stack.length-1] = "@media{";
        }
        else 
state.stack.push("rule");
      }
      else if (
type == "}") {
        
state.stack.pop();
        if (
context == "propertyValue"state.stack.pop();
      }
      else if (
type == "@media"state.stack.push("@media");
      else if (
context == "@media" && /b(keyword|attribute)b/.test(style))
        
state.stack.push("@mediaType");
      else if (
context == "@mediaType" && stream.current() == ","state.stack.pop();
      else if (
context == "@mediaType" && type == "("state.stack.push("@mediaType(");
      else if (
context == "@mediaType(" && type == ")"state.stack.pop();
      else if (
context == "rule" && type == ":"state.stack.push("propertyValue");
      else if (
context == "propertyValue" && type == ";"state.stack.pop();
      return 
style;
    },

    
indent: function(statetextAfter) {
      var 
state.stack.length;
      if (/^}/.
test(textAfter))
        
-= state.stack[state.stack.length-1] == "propertyValue" 1;
      return 
state.baseIndent indentUnit;
    },

    
electricChars"}"
  
};
});

CodeMirror.defineMIME("text/css""css");
?>
Онлайн: 0
Реклама