"-webkit-flex-direction" : "row | row-reverse | column | column-reverse",
"-webkit-flex-flow" : "<flex-direction> || <flex-wrap>",
"-webkit-flex-grow" : "<number>",
"-webkit-flex-shrink" : "<number>",
"-webkit-flex-wrap" : "nowrap | wrap | wrap-reverse",
"-ms-flex-align" : "start | end | center | stretch | baseline",
"-ms-flex-direction" : "row | row-reverse | column | column-reverse",
"-ms-flex-order" : "<number>",
"-ms-flex-pack" : "start | end | center | justify",
"-ms-flex-wrap" : "nowrap | wrap | wrap-reverse",
"float" : "left | right | none",
"flood-opacity" : "<opacity-value>",
"font" : "<font-shorthand> | caption | icon | menu | message-box | small-caption | status-bar",
"font-family" : "<font-family>",
"font-feature-settings" : "<feature-tag-value> | normal",
"font-kerning" : "auto | normal | none",
"font-size" : "<font-size>",
"font-size-adjust" : "<number> | none",
"font-stretch" : "<font-stretch>",
"font-style" : "<font-style>",
"font-variant" : "<font-variant> | normal | none",
"font-variant-alternates" : "<font-variant-alternates> | normal",
"font-variant-caps" : "<font-variant-caps> | normal",
"font-variant-east-asian" : "<font-variant-east-asian> | normal",
"font-variant-ligatures" : "<font-variant-ligatures> | normal | none",
"font-variant-numeric" : "<font-variant-numeric> | normal",
"font-variant-position" : "normal | sub | super",
"font-weight" : "<font-weight>",
"glyph-orientation-horizontal" : "<glyph-angle>",
"glyph-orientation-vertical" : "auto | <glyph-angle>",
"grid-auto-position" : 1,
"grid-cell-stacking" : "columns | rows | layer",
"grid-column-align" : "start | end | center | stretch",
"grid-column-sizing" : 1,
"grid-column-span" : "<integer>",
"grid-flow" : "none | rows | columns",
"grid-layer" : "<integer>",
"grid-row-align" : "start | end | center | stretch",
"grid-row-span" : "<integer>",
"grid-template-areas" : 1,
"grid-template-columns" : 1,
"grid-template-rows" : 1,
"hanging-punctuation" : 1,
"height" : "<margin-width> | <content-sizing>",
"hyphenate-after" : "<integer> | auto",
"hyphenate-before" : "<integer> | auto",
"hyphenate-character" : "<string> | auto",
"hyphenate-lines" : "no-limit | <integer>",
"hyphenate-resource" : 1,
"hyphens" : "none | manual | auto",
"image-orientation" : "angle | auto",
"image-rendering" : "auto | optimizeSpeed | optimizeQuality",
"ime-mode" : "auto | normal | active | inactive | disabled",
"inline-box-align" : "last | <integer>",
"justify-content" : "flex-start | flex-end | center | space-between | space-around",
"-webkit-justify-content" : "flex-start | flex-end | center | space-between | space-around",
"kerning" : "auto | <length>",
"left" : "<margin-width>",
"letter-spacing" : "<length> | normal",
"line-height" : "<line-height>",
"line-break" : "auto | loose | normal | strict",
"line-stacking-ruby" : "exclude-ruby | include-ruby",
"line-stacking-shift" : "consider-shifts | disregard-shifts",
"line-stacking-strategy" : "inline-line-height | block-line-height | max-height | grid-height",
"list-style-image" : "<uri> | none",
"list-style-position" : "inside | outside",
"list-style-type" : "disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | lower-alpha | upper-alpha | none",
"margin" : "<margin-width>{1,4}",
"margin-bottom" : "<margin-width>",
"margin-left" : "<margin-width>",
"margin-right" : "<margin-width>",
"margin-top" : "<margin-width>",
"marquee-play-count" : 1,
"max-height" : "<length> | <percentage> | <content-sizing> | none",
"max-width" : "<length> | <percentage> | <content-sizing> | none",
"min-height" : "<length> | <percentage> | <content-sizing> | contain-floats | -moz-contain-floats | -webkit-contain-floats",
"min-width" : "<length> | <percentage> | <content-sizing> | contain-floats | -moz-contain-floats | -webkit-contain-floats",
"object-fit" : "fill | contain | cover | none | scale-down",
"object-position" : "<position>",
"opacity" : "<opacity-value>",
"-webkit-order" : "<integer>",
"outline-color" : "<color> | invert",
"outline-style" : "<border-style>",
"outline-width" : "<border-width>",
"overflow" : "visible | hidden | scroll | auto",
"overflow-wrap" : "normal | break-word",
"padding" : "<padding-width>{1,4}",
"padding-bottom" : "<padding-width>",
"padding-left" : "<padding-width>",
"padding-right" : "<padding-width>",
"padding-top" : "<padding-width>",
"page-break-after" : "auto | always | avoid | left | right",
"page-break-before" : "auto | always | avoid | left | right",
"page-break-inside" : "auto | avoid",
"perspective-origin" : 1,
"pointer-events" : "auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all",
"position" : "static | relative | absolute | fixed",
"presentation-level" : 1,
"right" : "<margin-width>",
"shape-rendering" : "auto | optimizeSpeed | crispEdges | geometricPrecision",
"speak" : "normal | none | spell-out",
"speak-header" : "once | always",
"speak-numeral" : "digits | continuous",
"speak-punctuation" : "code | none",
"stop-opacity" : "<opacity-value>",
"stroke-dasharray" : "none | <dasharray>",
"stroke-dashoffset" : "<percentage> | <length>",
"stroke-linecap" : "butt | round | square",
"stroke-linejoin" : "miter | round | bevel",
"stroke-miterlimit" : "<miterlimit>",
"stroke-opacity" : "<opacity-value>",
"stroke-width" : "<percentage> | <length>",
"table-layout" : "auto | fixed",
"tab-size" : "<integer> | <length>",
"text-align" : "left | right | center | justify | match-parent | start | end",
"text-anchor" : "start | middle | end",
"text-decoration" : "<text-decoration-line> || <text-decoration-style> || <text-decoration-color>",
"text-decoration-color" : "<text-decoration-color>",
"text-decoration-line" : "<text-decoration-line>",
"text-decoration-style" : "<text-decoration-style>",
"text-indent" : "<length> | <percentage>",
"text-justify" : "auto | none | inter-word | inter-ideograph | inter-cluster | distribute | kashida",
"text-rendering" : "auto | optimizeSpeed | optimizeLegibility | geometricPrecision",
"text-transform" : "capitalize | uppercase | lowercase | none",
"text-wrap" : "normal | none | avoid",
"top" : "<margin-width>",
"-ms-touch-action" : "auto | none | pan-x | pan-y | pan-left | pan-right | pan-up | pan-down | manipulation",
"touch-action" : "auto | none | pan-x | pan-y | pan-left | pan-right | pan-up | pan-down | manipulation",
"transition-duration" : 1,
"transition-property" : 1,
"transition-timing-function" : 1,
"unicode-bidi" : "normal | embed | isolate | bidi-override | isolate-override | plaintext",
"user-modify" : "read-only | read-write | write-only",
"user-select" : "none | text | toggle | element | elements | all",
"vertical-align" : "auto | use-script | baseline | sub | super | top | text-top | central | middle | bottom | text-bottom | <percentage> | <length>",
"visibility" : "visible | hidden | collapse",
"white-space" : "normal | pre | nowrap | pre-wrap | pre-line | -pre-wrap | -o-pre-wrap | -moz-pre-wrap | -hp-pre-wrap", // https://perishablepress.com/wrapping-content/
"white-space-collapse" : 1,
"width" : "<length> | <percentage> | <content-sizing> | auto",
"will-change" : "<will-change>",
"word-break" : "normal | keep-all | break-all",
"word-spacing" : "<length> | normal",
"word-wrap" : "normal | break-word",
"writing-mode" : "horizontal-tb | vertical-rl | vertical-lr | lr-tb | rl-tb | tb-rl | bt-rl | tb-lr | bt-lr | lr-bt | rl-bt | lr | rl | tb",
"z-index" : "<integer> | auto",
"zoom" : "<number> | <percentage> | normal"
},{}],8:[function(require,module,exports){
module.exports = PropertyName;
var SyntaxUnit = require("../util/SyntaxUnit");
var Parser = require("./Parser");
* Represents a selector combinator (whitespace, +, >).
* @namespace parserlib.css
* @extends parserlib.util.SyntaxUnit
* @param {String} text The text representation of the unit.
* @param {String} hack The type of IE hack applied ("*", "_", or null).
* @param {int} line The line of text on which the unit resides.
* @param {int} col The column of text on which the unit resides.
function PropertyName(text, hack, line, col) {
SyntaxUnit.call(this, text, line, col, Parser.PROPERTY_NAME_TYPE);
* The type of IE hack applied ("*", "_", or null).
PropertyName.prototype = new SyntaxUnit();
PropertyName.prototype.constructor = PropertyName;
PropertyName.prototype.toString = function() {
return (this.hack ? this.hack : "") + this.text;
},{"../util/SyntaxUnit":26,"./Parser":6}],9:[function(require,module,exports){
module.exports = PropertyValue;
var SyntaxUnit = require("../util/SyntaxUnit");
var Parser = require("./Parser");
* Represents a single part of a CSS property value, meaning that it represents
* just everything single part between ":" and ";". If there are multiple values
* separated by commas, this type represents just one of the values.
* @param {String[]} parts An array of value parts making up this value.
* @param {int} line The line of text on which the unit resides.
* @param {int} col The column of text on which the unit resides.
* @namespace parserlib.css
* @extends parserlib.util.SyntaxUnit
function PropertyValue(parts, line, col) {
SyntaxUnit.call(this, parts.join(" "), line, col, Parser.PROPERTY_VALUE_TYPE);
* The parts that make up the selector.
PropertyValue.prototype = new SyntaxUnit();
PropertyValue.prototype.constructor = PropertyValue;
},{"../util/SyntaxUnit":26,"./Parser":6}],10:[function(require,module,exports){
module.exports = PropertyValueIterator;
* A utility class that allows for easy iteration over the various parts of a
* @param {parserlib.css.PropertyValue} value The property value to iterate over.
* @namespace parserlib.css
* @class PropertyValueIterator
function PropertyValueIterator(value) {
* The parts that make up the value.
this._parts = value.parts;
* Keeps track of bookmarks along the way.
* Holds the original property value.
* @type parserlib.css.PropertyValue
* Returns the total number of parts in the value.
* @return {int} The total number of parts in the value.
PropertyValueIterator.prototype.count = function() {
return this._parts.length;
* Indicates if the iterator is positioned at the first item.
* @return {Boolean} True if positioned at first item, false if not.
PropertyValueIterator.prototype.isFirst = function() {
* Indicates if there are more parts of the property value.
* @return {Boolean} True if there are more parts, false if not.
PropertyValueIterator.prototype.hasNext = function() {
return this._i < this._parts.length;
* Marks the current spot in the iteration so it can be restored to
PropertyValueIterator.prototype.mark = function() {
this._marks.push(this._i);
* Returns the next part of the property value or null if there is no next
* part. Does not move the internal counter forward.
* @return {parserlib.css.PropertyValuePart} The next part of the property value or null if there is no next
PropertyValueIterator.prototype.peek = function(count) {
return this.hasNext() ? this._parts[this._i + (count || 0)] : null;
* Returns the next part of the property value or null if there is no next
* @return {parserlib.css.PropertyValuePart} The next part of the property value or null if there is no next
PropertyValueIterator.prototype.next = function() {
return this.hasNext() ? this._parts[this._i++] : null;
* Returns the previous part of the property value or null if there is no
* @return {parserlib.css.PropertyValuePart} The previous part of the
* property value or null if there is no previous part.
PropertyValueIterator.prototype.previous = function() {
return this._i > 0 ? this._parts[--this._i] : null;
* Restores the last saved bookmark.
PropertyValueIterator.prototype.restore = function() {
if (this._marks.length) {
this._i = this._marks.pop();
* Drops the last saved bookmark.
PropertyValueIterator.prototype.drop = function() {