postcss-sorting
Advanced tools
Comparing version 1.2.3 to 1.3.0
@@ -5,2 +5,5 @@ # Change Log | ||
## 1.3.0 | ||
* Added `empty-lines-between-media-rules` option which set a number of empty lines between nested media rules. #16 | ||
## 1.2.3 | ||
@@ -7,0 +10,0 @@ * Fixed removing last comments in the rule. |
{ | ||
"sort-order": [ | ||
[ | ||
"font", | ||
"font-family", | ||
"font-size", | ||
"font-weight", | ||
"font-style", | ||
"font-variant", | ||
"font-size-adjust", | ||
"font-stretch", | ||
"font-effect", | ||
"font-emphasize", | ||
"font-emphasize-position", | ||
"font-emphasize-style", | ||
"font-smooth", | ||
"line-height" | ||
], | ||
[ | ||
"position", | ||
"z-index", | ||
"top", | ||
"right", | ||
"bottom", | ||
"left" | ||
], | ||
[ | ||
"display", | ||
"visibility", | ||
"float", | ||
"clear", | ||
"overflow", | ||
"overflow-x", | ||
"overflow-y", | ||
"-ms-overflow-x", | ||
"-ms-overflow-y", | ||
"clip", | ||
"zoom", | ||
"flex-direction", | ||
"flex-order", | ||
"flex-pack", | ||
"flex-align" | ||
], | ||
[ | ||
"-webkit-box-sizing", | ||
"-moz-box-sizing", | ||
"box-sizing", | ||
"width", | ||
"min-width", | ||
"max-width", | ||
"height", | ||
"min-height", | ||
"max-height", | ||
"margin", | ||
"margin-top", | ||
"margin-right", | ||
"margin-bottom", | ||
"margin-left", | ||
"padding", | ||
"padding-top", | ||
"padding-right", | ||
"padding-bottom", | ||
"padding-left" | ||
], | ||
[ | ||
"table-layout", | ||
"empty-cells", | ||
"caption-side", | ||
"border-spacing", | ||
"border-collapse", | ||
"list-style", | ||
"list-style-position", | ||
"list-style-type", | ||
"list-style-image" | ||
], | ||
[ | ||
"content", | ||
"quotes", | ||
"counter-reset", | ||
"counter-increment", | ||
"resize", | ||
"cursor", | ||
"-webkit-user-select", | ||
"-moz-user-select", | ||
"-ms-user-select", | ||
"user-select", | ||
"nav-index", | ||
"nav-up", | ||
"nav-right", | ||
"nav-down", | ||
"nav-left", | ||
"-webkit-transition", | ||
"-moz-transition", | ||
"-ms-transition", | ||
"-o-transition", | ||
"transition", | ||
"-webkit-transition-delay", | ||
"-moz-transition-delay", | ||
"-ms-transition-delay", | ||
"-o-transition-delay", | ||
"transition-delay", | ||
"-webkit-transition-timing-function", | ||
"-moz-transition-timing-function", | ||
"-ms-transition-timing-function", | ||
"-o-transition-timing-function", | ||
"transition-timing-function", | ||
"-webkit-transition-duration", | ||
"-moz-transition-duration", | ||
"-ms-transition-duration", | ||
"-o-transition-duration", | ||
"transition-duration", | ||
"-webkit-transition-property", | ||
"-moz-transition-property", | ||
"-ms-transition-property", | ||
"-o-transition-property", | ||
"transition-property", | ||
"-webkit-transform", | ||
"-moz-transform", | ||
"-ms-transform", | ||
"-o-transform", | ||
"transform", | ||
"-webkit-transform-origin", | ||
"-moz-transform-origin", | ||
"-ms-transform-origin", | ||
"-o-transform-origin", | ||
"transform-origin", | ||
"-webkit-animation", | ||
"-moz-animation", | ||
"-ms-animation", | ||
"-o-animation", | ||
"animation", | ||
"-webkit-animation-name", | ||
"-moz-animation-name", | ||
"-ms-animation-name", | ||
"-o-animation-name", | ||
"animation-name", | ||
"-webkit-animation-duration", | ||
"-moz-animation-duration", | ||
"-ms-animation-duration", | ||
"-o-animation-duration", | ||
"animation-duration", | ||
"-webkit-animation-play-state", | ||
"-moz-animation-play-state", | ||
"-ms-animation-play-state", | ||
"-o-animation-play-state", | ||
"animation-play-state", | ||
"-webkit-animation-timing-function", | ||
"-moz-animation-timing-function", | ||
"-ms-animation-timing-function", | ||
"-o-animation-timing-function", | ||
"animation-timing-function", | ||
"-webkit-animation-delay", | ||
"-moz-animation-delay", | ||
"-ms-animation-delay", | ||
"-o-animation-delay", | ||
"animation-delay", | ||
"-webkit-animation-iteration-count", | ||
"-moz-animation-iteration-count", | ||
"-ms-animation-iteration-count", | ||
"-o-animation-iteration-count", | ||
"animation-iteration-count", | ||
"-webkit-animation-direction", | ||
"-moz-animation-direction", | ||
"-ms-animation-direction", | ||
"-o-animation-direction", | ||
"animation-direction", | ||
"text-align", | ||
"-webkit-text-align-last", | ||
"-moz-text-align-last", | ||
"-ms-text-align-last", | ||
"text-align-last", | ||
"vertical-align", | ||
"white-space", | ||
"text-decoration", | ||
"text-emphasis", | ||
"text-emphasis-color", | ||
"text-emphasis-style", | ||
"text-emphasis-position", | ||
"text-indent", | ||
"-ms-text-justify", | ||
"text-justify", | ||
"letter-spacing", | ||
"word-spacing", | ||
"-ms-writing-mode", | ||
"text-outline", | ||
"text-transform", | ||
"text-wrap", | ||
"text-overflow", | ||
"-ms-text-overflow", | ||
"text-overflow-ellipsis", | ||
"text-overflow-mode", | ||
"-ms-word-wrap", | ||
"word-wrap", | ||
"word-break", | ||
"-ms-word-break", | ||
"-moz-tab-size", | ||
"-o-tab-size", | ||
"tab-size", | ||
"-webkit-hyphens", | ||
"-moz-hyphens", | ||
"hyphens", | ||
"pointer-events" | ||
], | ||
[ | ||
"opacity", | ||
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", | ||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", | ||
"-ms-interpolation-mode", | ||
"color", | ||
"border", | ||
"border-width", | ||
"border-style", | ||
"border-color", | ||
"border-top", | ||
"border-top-width", | ||
"border-top-style", | ||
"border-top-color", | ||
"border-right", | ||
"border-right-width", | ||
"border-right-style", | ||
"border-right-color", | ||
"border-bottom", | ||
"border-bottom-width", | ||
"border-bottom-style", | ||
"border-bottom-color", | ||
"border-left", | ||
"border-left-width", | ||
"border-left-style", | ||
"border-left-color", | ||
"-webkit-border-radius", | ||
"-moz-border-radius", | ||
"border-radius", | ||
"-webkit-border-top-left-radius", | ||
"-moz-border-radius-topleft", | ||
"border-top-left-radius", | ||
"-webkit-border-top-right-radius", | ||
"-moz-border-radius-topright", | ||
"border-top-right-radius", | ||
"-webkit-border-bottom-right-radius", | ||
"-moz-border-radius-bottomright", | ||
"border-bottom-right-radius", | ||
"-webkit-border-bottom-left-radius", | ||
"-moz-border-radius-bottomleft", | ||
"border-bottom-left-radius", | ||
"-webkit-border-image", | ||
"-moz-border-image", | ||
"-o-border-image", | ||
"border-image", | ||
"-webkit-border-image-source", | ||
"-moz-border-image-source", | ||
"-o-border-image-source", | ||
"border-image-source", | ||
"-webkit-border-image-slice", | ||
"-moz-border-image-slice", | ||
"-o-border-image-slice", | ||
"border-image-slice", | ||
"-webkit-border-image-width", | ||
"-moz-border-image-width", | ||
"-o-border-image-width", | ||
"border-image-width", | ||
"-webkit-border-image-outset", | ||
"-moz-border-image-outset", | ||
"-o-border-image-outset", | ||
"border-image-outset", | ||
"-webkit-border-image-repeat", | ||
"-moz-border-image-repeat", | ||
"-o-border-image-repeat", | ||
"border-image-repeat", | ||
"outline", | ||
"outline-width", | ||
"outline-style", | ||
"outline-color", | ||
"outline-offset", | ||
"background", | ||
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", | ||
"background-color", | ||
"background-image", | ||
"background-repeat", | ||
"background-attachment", | ||
"background-position", | ||
"background-position-x", | ||
"-ms-background-position-x", | ||
"background-position-y", | ||
"-ms-background-position-y", | ||
"-webkit-background-clip", | ||
"-moz-background-clip", | ||
"background-clip", | ||
"background-origin", | ||
"-webkit-background-size", | ||
"-moz-background-size", | ||
"-o-background-size", | ||
"background-size", | ||
"box-decoration-break", | ||
"-webkit-box-shadow", | ||
"-moz-box-shadow", | ||
"box-shadow", | ||
"filter:progid:DXImageTransform.Microsoft.gradient", | ||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", | ||
"text-shadow" | ||
] | ||
] | ||
"sort-order": [ | ||
[ | ||
"font", | ||
"font-family", | ||
"font-size", | ||
"font-weight", | ||
"font-style", | ||
"font-variant", | ||
"font-size-adjust", | ||
"font-stretch", | ||
"font-effect", | ||
"font-emphasize", | ||
"font-emphasize-position", | ||
"font-emphasize-style", | ||
"font-smooth", | ||
"line-height" | ||
], | ||
[ | ||
"position", | ||
"z-index", | ||
"top", | ||
"right", | ||
"bottom", | ||
"left" | ||
], | ||
[ | ||
"display", | ||
"visibility", | ||
"float", | ||
"clear", | ||
"overflow", | ||
"overflow-x", | ||
"overflow-y", | ||
"-ms-overflow-x", | ||
"-ms-overflow-y", | ||
"clip", | ||
"zoom", | ||
"flex-direction", | ||
"flex-order", | ||
"flex-pack", | ||
"flex-align" | ||
], | ||
[ | ||
"-webkit-box-sizing", | ||
"-moz-box-sizing", | ||
"box-sizing", | ||
"width", | ||
"min-width", | ||
"max-width", | ||
"height", | ||
"min-height", | ||
"max-height", | ||
"margin", | ||
"margin-top", | ||
"margin-right", | ||
"margin-bottom", | ||
"margin-left", | ||
"padding", | ||
"padding-top", | ||
"padding-right", | ||
"padding-bottom", | ||
"padding-left" | ||
], | ||
[ | ||
"table-layout", | ||
"empty-cells", | ||
"caption-side", | ||
"border-spacing", | ||
"border-collapse", | ||
"list-style", | ||
"list-style-position", | ||
"list-style-type", | ||
"list-style-image" | ||
], | ||
[ | ||
"content", | ||
"quotes", | ||
"counter-reset", | ||
"counter-increment", | ||
"resize", | ||
"cursor", | ||
"-webkit-user-select", | ||
"-moz-user-select", | ||
"-ms-user-select", | ||
"user-select", | ||
"nav-index", | ||
"nav-up", | ||
"nav-right", | ||
"nav-down", | ||
"nav-left", | ||
"-webkit-transition", | ||
"-moz-transition", | ||
"-ms-transition", | ||
"-o-transition", | ||
"transition", | ||
"-webkit-transition-delay", | ||
"-moz-transition-delay", | ||
"-ms-transition-delay", | ||
"-o-transition-delay", | ||
"transition-delay", | ||
"-webkit-transition-timing-function", | ||
"-moz-transition-timing-function", | ||
"-ms-transition-timing-function", | ||
"-o-transition-timing-function", | ||
"transition-timing-function", | ||
"-webkit-transition-duration", | ||
"-moz-transition-duration", | ||
"-ms-transition-duration", | ||
"-o-transition-duration", | ||
"transition-duration", | ||
"-webkit-transition-property", | ||
"-moz-transition-property", | ||
"-ms-transition-property", | ||
"-o-transition-property", | ||
"transition-property", | ||
"-webkit-transform", | ||
"-moz-transform", | ||
"-ms-transform", | ||
"-o-transform", | ||
"transform", | ||
"-webkit-transform-origin", | ||
"-moz-transform-origin", | ||
"-ms-transform-origin", | ||
"-o-transform-origin", | ||
"transform-origin", | ||
"-webkit-animation", | ||
"-moz-animation", | ||
"-ms-animation", | ||
"-o-animation", | ||
"animation", | ||
"-webkit-animation-name", | ||
"-moz-animation-name", | ||
"-ms-animation-name", | ||
"-o-animation-name", | ||
"animation-name", | ||
"-webkit-animation-duration", | ||
"-moz-animation-duration", | ||
"-ms-animation-duration", | ||
"-o-animation-duration", | ||
"animation-duration", | ||
"-webkit-animation-play-state", | ||
"-moz-animation-play-state", | ||
"-ms-animation-play-state", | ||
"-o-animation-play-state", | ||
"animation-play-state", | ||
"-webkit-animation-timing-function", | ||
"-moz-animation-timing-function", | ||
"-ms-animation-timing-function", | ||
"-o-animation-timing-function", | ||
"animation-timing-function", | ||
"-webkit-animation-delay", | ||
"-moz-animation-delay", | ||
"-ms-animation-delay", | ||
"-o-animation-delay", | ||
"animation-delay", | ||
"-webkit-animation-iteration-count", | ||
"-moz-animation-iteration-count", | ||
"-ms-animation-iteration-count", | ||
"-o-animation-iteration-count", | ||
"animation-iteration-count", | ||
"-webkit-animation-direction", | ||
"-moz-animation-direction", | ||
"-ms-animation-direction", | ||
"-o-animation-direction", | ||
"animation-direction", | ||
"text-align", | ||
"-webkit-text-align-last", | ||
"-moz-text-align-last", | ||
"-ms-text-align-last", | ||
"text-align-last", | ||
"vertical-align", | ||
"white-space", | ||
"text-decoration", | ||
"text-emphasis", | ||
"text-emphasis-color", | ||
"text-emphasis-style", | ||
"text-emphasis-position", | ||
"text-indent", | ||
"-ms-text-justify", | ||
"text-justify", | ||
"letter-spacing", | ||
"word-spacing", | ||
"-ms-writing-mode", | ||
"text-outline", | ||
"text-transform", | ||
"text-wrap", | ||
"text-overflow", | ||
"-ms-text-overflow", | ||
"text-overflow-ellipsis", | ||
"text-overflow-mode", | ||
"-ms-word-wrap", | ||
"word-wrap", | ||
"word-break", | ||
"-ms-word-break", | ||
"-moz-tab-size", | ||
"-o-tab-size", | ||
"tab-size", | ||
"-webkit-hyphens", | ||
"-moz-hyphens", | ||
"hyphens", | ||
"pointer-events" | ||
], | ||
[ | ||
"opacity", | ||
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", | ||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", | ||
"-ms-interpolation-mode", | ||
"color", | ||
"border", | ||
"border-width", | ||
"border-style", | ||
"border-color", | ||
"border-top", | ||
"border-top-width", | ||
"border-top-style", | ||
"border-top-color", | ||
"border-right", | ||
"border-right-width", | ||
"border-right-style", | ||
"border-right-color", | ||
"border-bottom", | ||
"border-bottom-width", | ||
"border-bottom-style", | ||
"border-bottom-color", | ||
"border-left", | ||
"border-left-width", | ||
"border-left-style", | ||
"border-left-color", | ||
"-webkit-border-radius", | ||
"-moz-border-radius", | ||
"border-radius", | ||
"-webkit-border-top-left-radius", | ||
"-moz-border-radius-topleft", | ||
"border-top-left-radius", | ||
"-webkit-border-top-right-radius", | ||
"-moz-border-radius-topright", | ||
"border-top-right-radius", | ||
"-webkit-border-bottom-right-radius", | ||
"-moz-border-radius-bottomright", | ||
"border-bottom-right-radius", | ||
"-webkit-border-bottom-left-radius", | ||
"-moz-border-radius-bottomleft", | ||
"border-bottom-left-radius", | ||
"-webkit-border-image", | ||
"-moz-border-image", | ||
"-o-border-image", | ||
"border-image", | ||
"-webkit-border-image-source", | ||
"-moz-border-image-source", | ||
"-o-border-image-source", | ||
"border-image-source", | ||
"-webkit-border-image-slice", | ||
"-moz-border-image-slice", | ||
"-o-border-image-slice", | ||
"border-image-slice", | ||
"-webkit-border-image-width", | ||
"-moz-border-image-width", | ||
"-o-border-image-width", | ||
"border-image-width", | ||
"-webkit-border-image-outset", | ||
"-moz-border-image-outset", | ||
"-o-border-image-outset", | ||
"border-image-outset", | ||
"-webkit-border-image-repeat", | ||
"-moz-border-image-repeat", | ||
"-o-border-image-repeat", | ||
"border-image-repeat", | ||
"outline", | ||
"outline-width", | ||
"outline-style", | ||
"outline-color", | ||
"outline-offset", | ||
"background", | ||
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", | ||
"background-color", | ||
"background-image", | ||
"background-repeat", | ||
"background-attachment", | ||
"background-position", | ||
"background-position-x", | ||
"-ms-background-position-x", | ||
"background-position-y", | ||
"-ms-background-position-y", | ||
"-webkit-background-clip", | ||
"-moz-background-clip", | ||
"background-clip", | ||
"background-origin", | ||
"-webkit-background-size", | ||
"-moz-background-size", | ||
"-o-background-size", | ||
"background-size", | ||
"box-decoration-break", | ||
"-webkit-box-shadow", | ||
"-moz-box-shadow", | ||
"box-shadow", | ||
"filter:progid:DXImageTransform.Microsoft.gradient", | ||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", | ||
"text-shadow" | ||
] | ||
] | ||
} |
{ | ||
"sort-order": [ | ||
[ "$variable" ], | ||
[ "@atrule" ], | ||
[ | ||
"lost-utility", | ||
"lost-flex-container", | ||
"lost-center", | ||
"lost-align", | ||
"lost-column", | ||
"lost-row", | ||
"lost-waffle", | ||
"lost-offset", | ||
"lost-move", | ||
"lost-masonry-wrap", | ||
"lost-masonry-column", | ||
"position", | ||
"top", | ||
"right", | ||
"bottom", | ||
"left", | ||
"z-index", | ||
"display", | ||
"visibility", | ||
"flex", | ||
"flex-grow", | ||
"flex-shrink", | ||
"flex-basis", | ||
"flex-direction", | ||
"flex-flow", | ||
"flex-wrap", | ||
"align-content", | ||
"align-items", | ||
"align-self", | ||
"justify-content", | ||
"order", | ||
"float", | ||
"clear", | ||
"overflow", | ||
"overflow-x", | ||
"overflow-y", | ||
"-webkit-overflow-scrolling", | ||
"clip", | ||
"box-sizing", | ||
"margin", | ||
"margin-top", | ||
"margin-right", | ||
"margin-bottom", | ||
"margin-left", | ||
"padding", | ||
"padding-top", | ||
"padding-right", | ||
"padding-bottom", | ||
"padding-left", | ||
"min-width", | ||
"min-height", | ||
"max-width", | ||
"max-height", | ||
"width", | ||
"height", | ||
"outline", | ||
"outline-width", | ||
"outline-style", | ||
"outline-color", | ||
"outline-offset", | ||
"border", | ||
"border-spacing", | ||
"border-collapse", | ||
"border-width", | ||
"border-style", | ||
"border-color", | ||
"border-top", | ||
"border-top-width", | ||
"border-top-style", | ||
"border-top-color", | ||
"border-right", | ||
"border-right-width", | ||
"border-right-style", | ||
"border-right-color", | ||
"border-bottom", | ||
"border-bottom-width", | ||
"border-bottom-style", | ||
"border-bottom-color", | ||
"border-left", | ||
"border-left-width", | ||
"border-left-style", | ||
"border-left-color", | ||
"border-radius", | ||
"border-top-left-radius", | ||
"border-top-right-radius", | ||
"border-bottom-right-radius", | ||
"border-bottom-left-radius", | ||
"border-image", | ||
"border-image-source", | ||
"border-image-slice", | ||
"border-image-width", | ||
"border-image-outset", | ||
"border-image-repeat", | ||
"border-top-image", | ||
"border-right-image", | ||
"border-bottom-image", | ||
"border-left-image", | ||
"border-corner-image", | ||
"border-top-left-image", | ||
"border-top-right-image", | ||
"border-bottom-right-image", | ||
"border-bottom-left-image", | ||
"background", | ||
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", | ||
"background-color", | ||
"background-image", | ||
"background-attachment", | ||
"background-position", | ||
"background-position-x", | ||
"background-position-y", | ||
"background-clip", | ||
"background-origin", | ||
"background-size", | ||
"background-repeat", | ||
"box-decoration-break", | ||
"box-shadow", | ||
"color", | ||
"table-layout", | ||
"caption-side", | ||
"empty-cells", | ||
"list-style", | ||
"list-style-position", | ||
"list-style-type", | ||
"list-style-image", | ||
"quotes", | ||
"content", | ||
"counter-increment", | ||
"counter-reset", | ||
"-ms-writing-mode", | ||
"vertical-align", | ||
"text-align", | ||
"text-align-last", | ||
"text-decoration", | ||
"text-emphasis", | ||
"text-emphasis-position", | ||
"text-emphasis-style", | ||
"text-emphasis-color", | ||
"text-indent", | ||
"text-justify", | ||
"text-outline", | ||
"text-transform", | ||
"text-wrap", | ||
"text-overflow", | ||
"text-overflow-ellipsis", | ||
"text-overflow-mode", | ||
"text-shadow", | ||
"white-space", | ||
"word-spacing", | ||
"word-wrap", | ||
"word-break", | ||
"tab-size", | ||
"hyphens", | ||
"letter-spacing", | ||
"font", | ||
"font-weight", | ||
"font-style", | ||
"font-variant", | ||
"font-size-adjust", | ||
"font-stretch", | ||
"font-size", | ||
"font-family", | ||
"src", | ||
"line-height", | ||
"opacity", | ||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", | ||
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", | ||
"-ms-interpolation-mode", | ||
"filter", | ||
"resize", | ||
"cursor", | ||
"nav-index", | ||
"nav-up", | ||
"nav-right", | ||
"nav-down", | ||
"nav-left", | ||
"transition", | ||
"transition-delay", | ||
"transition-timing-function", | ||
"transition-duration", | ||
"transition-property", | ||
"transform", | ||
"transform-origin", | ||
"animation", | ||
"animation-name", | ||
"animation-duration", | ||
"animation-play-state", | ||
"animation-timing-function", | ||
"animation-delay", | ||
"animation-iteration-count", | ||
"animation-direction", | ||
"animation-fill-mode", | ||
"pointer-events", | ||
"unicode-bidi", | ||
"direction", | ||
"columns", | ||
"column-span", | ||
"column-width", | ||
"column-count", | ||
"column-fill", | ||
"column-gap", | ||
"column-rule", | ||
"column-rule-width", | ||
"column-rule-style", | ||
"column-rule-color", | ||
"break-before", | ||
"break-inside", | ||
"break-after", | ||
"page-break-before", | ||
"page-break-inside", | ||
"page-break-after", | ||
"orphans", | ||
"widows", | ||
"zoom", | ||
"max-zoom", | ||
"min-zoom", | ||
"user-zoom", | ||
"orientation", | ||
"user-select", | ||
"fill", | ||
"stroke", | ||
"..." | ||
], | ||
[ "@media" ], | ||
[ ">child" ] | ||
] | ||
"sort-order": [ | ||
[ "$variable" ], | ||
[ "@atrule" ], | ||
[ | ||
"lost-utility", | ||
"lost-flex-container", | ||
"lost-center", | ||
"lost-align", | ||
"lost-column", | ||
"lost-row", | ||
"lost-waffle", | ||
"lost-offset", | ||
"lost-move", | ||
"lost-masonry-wrap", | ||
"lost-masonry-column", | ||
"position", | ||
"top", | ||
"right", | ||
"bottom", | ||
"left", | ||
"z-index", | ||
"display", | ||
"visibility", | ||
"flex", | ||
"flex-grow", | ||
"flex-shrink", | ||
"flex-basis", | ||
"flex-direction", | ||
"flex-flow", | ||
"flex-wrap", | ||
"align-content", | ||
"align-items", | ||
"align-self", | ||
"justify-content", | ||
"order", | ||
"float", | ||
"clear", | ||
"overflow", | ||
"overflow-x", | ||
"overflow-y", | ||
"-webkit-overflow-scrolling", | ||
"clip", | ||
"box-sizing", | ||
"margin", | ||
"margin-top", | ||
"margin-right", | ||
"margin-bottom", | ||
"margin-left", | ||
"padding", | ||
"padding-top", | ||
"padding-right", | ||
"padding-bottom", | ||
"padding-left", | ||
"min-width", | ||
"min-height", | ||
"max-width", | ||
"max-height", | ||
"width", | ||
"height", | ||
"outline", | ||
"outline-width", | ||
"outline-style", | ||
"outline-color", | ||
"outline-offset", | ||
"border", | ||
"border-spacing", | ||
"border-collapse", | ||
"border-width", | ||
"border-style", | ||
"border-color", | ||
"border-top", | ||
"border-top-width", | ||
"border-top-style", | ||
"border-top-color", | ||
"border-right", | ||
"border-right-width", | ||
"border-right-style", | ||
"border-right-color", | ||
"border-bottom", | ||
"border-bottom-width", | ||
"border-bottom-style", | ||
"border-bottom-color", | ||
"border-left", | ||
"border-left-width", | ||
"border-left-style", | ||
"border-left-color", | ||
"border-radius", | ||
"border-top-left-radius", | ||
"border-top-right-radius", | ||
"border-bottom-right-radius", | ||
"border-bottom-left-radius", | ||
"border-image", | ||
"border-image-source", | ||
"border-image-slice", | ||
"border-image-width", | ||
"border-image-outset", | ||
"border-image-repeat", | ||
"border-top-image", | ||
"border-right-image", | ||
"border-bottom-image", | ||
"border-left-image", | ||
"border-corner-image", | ||
"border-top-left-image", | ||
"border-top-right-image", | ||
"border-bottom-right-image", | ||
"border-bottom-left-image", | ||
"background", | ||
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", | ||
"background-color", | ||
"background-image", | ||
"background-attachment", | ||
"background-position", | ||
"background-position-x", | ||
"background-position-y", | ||
"background-clip", | ||
"background-origin", | ||
"background-size", | ||
"background-repeat", | ||
"box-decoration-break", | ||
"box-shadow", | ||
"color", | ||
"table-layout", | ||
"caption-side", | ||
"empty-cells", | ||
"list-style", | ||
"list-style-position", | ||
"list-style-type", | ||
"list-style-image", | ||
"quotes", | ||
"content", | ||
"counter-increment", | ||
"counter-reset", | ||
"-ms-writing-mode", | ||
"vertical-align", | ||
"text-align", | ||
"text-align-last", | ||
"text-decoration", | ||
"text-emphasis", | ||
"text-emphasis-position", | ||
"text-emphasis-style", | ||
"text-emphasis-color", | ||
"text-indent", | ||
"text-justify", | ||
"text-outline", | ||
"text-transform", | ||
"text-wrap", | ||
"text-overflow", | ||
"text-overflow-ellipsis", | ||
"text-overflow-mode", | ||
"text-shadow", | ||
"white-space", | ||
"word-spacing", | ||
"word-wrap", | ||
"word-break", | ||
"tab-size", | ||
"hyphens", | ||
"letter-spacing", | ||
"font", | ||
"font-weight", | ||
"font-style", | ||
"font-variant", | ||
"font-size-adjust", | ||
"font-stretch", | ||
"font-size", | ||
"font-family", | ||
"src", | ||
"line-height", | ||
"opacity", | ||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", | ||
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", | ||
"-ms-interpolation-mode", | ||
"filter", | ||
"resize", | ||
"cursor", | ||
"nav-index", | ||
"nav-up", | ||
"nav-right", | ||
"nav-down", | ||
"nav-left", | ||
"transition", | ||
"transition-delay", | ||
"transition-timing-function", | ||
"transition-duration", | ||
"transition-property", | ||
"transform", | ||
"transform-origin", | ||
"animation", | ||
"animation-name", | ||
"animation-duration", | ||
"animation-play-state", | ||
"animation-timing-function", | ||
"animation-delay", | ||
"animation-iteration-count", | ||
"animation-direction", | ||
"animation-fill-mode", | ||
"pointer-events", | ||
"unicode-bidi", | ||
"direction", | ||
"columns", | ||
"column-span", | ||
"column-width", | ||
"column-count", | ||
"column-fill", | ||
"column-gap", | ||
"column-rule", | ||
"column-rule-width", | ||
"column-rule-style", | ||
"column-rule-color", | ||
"break-before", | ||
"break-inside", | ||
"break-after", | ||
"page-break-before", | ||
"page-break-inside", | ||
"page-break-after", | ||
"orphans", | ||
"widows", | ||
"zoom", | ||
"max-zoom", | ||
"min-zoom", | ||
"user-zoom", | ||
"orientation", | ||
"user-select", | ||
"fill", | ||
"stroke", | ||
"..." | ||
], | ||
[ "@media" ], | ||
[ ">child" ] | ||
] | ||
} |
{ | ||
"sort-order": [ | ||
[ | ||
"position", | ||
"z-index", | ||
"top", | ||
"right", | ||
"bottom", | ||
"left" | ||
], | ||
[ | ||
"display", | ||
"visibility", | ||
"float", | ||
"clear", | ||
"overflow", | ||
"overflow-x", | ||
"overflow-y", | ||
"-ms-overflow-x", | ||
"-ms-overflow-y", | ||
"-webkit-overflow-scrolling", | ||
"clip", | ||
"zoom", | ||
"flex-direction", | ||
"flex-order", | ||
"flex-pack", | ||
"flex-align" | ||
], | ||
[ | ||
"-webkit-box-sizing", | ||
"-moz-box-sizing", | ||
"box-sizing", | ||
"width", | ||
"min-width", | ||
"max-width", | ||
"height", | ||
"min-height", | ||
"max-height", | ||
"margin", | ||
"margin-top", | ||
"margin-right", | ||
"margin-bottom", | ||
"margin-left", | ||
"padding", | ||
"padding-top", | ||
"padding-right", | ||
"padding-bottom", | ||
"padding-left" | ||
], | ||
[ | ||
"table-layout", | ||
"empty-cells", | ||
"caption-side", | ||
"border-spacing", | ||
"border-collapse", | ||
"list-style", | ||
"list-style-position", | ||
"list-style-type", | ||
"list-style-image" | ||
], | ||
[ | ||
"content", | ||
"quotes", | ||
"counter-reset", | ||
"counter-increment", | ||
"resize", | ||
"cursor", | ||
"-webkit-user-select", | ||
"-moz-user-select", | ||
"-ms-user-select", | ||
"user-select", | ||
"nav-index", | ||
"nav-up", | ||
"nav-right", | ||
"nav-down", | ||
"nav-left", | ||
"-webkit-transition", | ||
"-moz-transition", | ||
"-ms-transition", | ||
"-o-transition", | ||
"transition", | ||
"-webkit-transition-delay", | ||
"-moz-transition-delay", | ||
"-ms-transition-delay", | ||
"-o-transition-delay", | ||
"transition-delay", | ||
"-webkit-transition-timing-function", | ||
"-moz-transition-timing-function", | ||
"-ms-transition-timing-function", | ||
"-o-transition-timing-function", | ||
"transition-timing-function", | ||
"-webkit-transition-duration", | ||
"-moz-transition-duration", | ||
"-ms-transition-duration", | ||
"-o-transition-duration", | ||
"transition-duration", | ||
"-webkit-transition-property", | ||
"-moz-transition-property", | ||
"-ms-transition-property", | ||
"-o-transition-property", | ||
"transition-property", | ||
"-webkit-transform", | ||
"-moz-transform", | ||
"-ms-transform", | ||
"-o-transform", | ||
"transform", | ||
"-webkit-transform-origin", | ||
"-moz-transform-origin", | ||
"-ms-transform-origin", | ||
"-o-transform-origin", | ||
"transform-origin", | ||
"-webkit-animation", | ||
"-moz-animation", | ||
"-ms-animation", | ||
"-o-animation", | ||
"animation", | ||
"-webkit-animation-name", | ||
"-moz-animation-name", | ||
"-ms-animation-name", | ||
"-o-animation-name", | ||
"animation-name", | ||
"-webkit-animation-duration", | ||
"-moz-animation-duration", | ||
"-ms-animation-duration", | ||
"-o-animation-duration", | ||
"animation-duration", | ||
"-webkit-animation-play-state", | ||
"-moz-animation-play-state", | ||
"-ms-animation-play-state", | ||
"-o-animation-play-state", | ||
"animation-play-state", | ||
"-webkit-animation-timing-function", | ||
"-moz-animation-timing-function", | ||
"-ms-animation-timing-function", | ||
"-o-animation-timing-function", | ||
"animation-timing-function", | ||
"-webkit-animation-delay", | ||
"-moz-animation-delay", | ||
"-ms-animation-delay", | ||
"-o-animation-delay", | ||
"animation-delay", | ||
"-webkit-animation-iteration-count", | ||
"-moz-animation-iteration-count", | ||
"-ms-animation-iteration-count", | ||
"-o-animation-iteration-count", | ||
"animation-iteration-count", | ||
"-webkit-animation-iteration-count", | ||
"-moz-animation-iteration-count", | ||
"-ms-animation-iteration-count", | ||
"-o-animation-iteration-count", | ||
"animation-iteration-count", | ||
"-webkit-animation-direction", | ||
"-moz-animation-direction", | ||
"-ms-animation-direction", | ||
"-o-animation-direction", | ||
"animation-direction", | ||
"text-align", | ||
"-webkit-text-align-last", | ||
"-moz-text-align-last", | ||
"-ms-text-align-last", | ||
"text-align-last", | ||
"vertical-align", | ||
"white-space", | ||
"text-decoration", | ||
"text-emphasis", | ||
"text-emphasis-color", | ||
"text-emphasis-style", | ||
"text-emphasis-position", | ||
"text-indent", | ||
"-ms-text-justify", | ||
"text-justify", | ||
"text-transform", | ||
"letter-spacing", | ||
"word-spacing", | ||
"-ms-writing-mode", | ||
"text-outline", | ||
"text-transform", | ||
"text-wrap", | ||
"text-overflow", | ||
"-ms-text-overflow", | ||
"text-overflow-ellipsis", | ||
"text-overflow-mode", | ||
"-ms-word-wrap", | ||
"word-wrap", | ||
"word-break", | ||
"-ms-word-break", | ||
"-moz-tab-size", | ||
"-o-tab-size", | ||
"tab-size", | ||
"-webkit-hyphens", | ||
"-moz-hyphens", | ||
"hyphens", | ||
"pointer-events" | ||
], | ||
[ | ||
"opacity", | ||
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", | ||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", | ||
"-ms-interpolation-mode", | ||
"color", | ||
"border", | ||
"border-collapse", | ||
"border-width", | ||
"border-style", | ||
"border-color", | ||
"border-top", | ||
"border-top-width", | ||
"border-top-style", | ||
"border-top-color", | ||
"border-right", | ||
"border-right-width", | ||
"border-right-style", | ||
"border-right-color", | ||
"border-bottom", | ||
"border-bottom-width", | ||
"border-bottom-style", | ||
"border-bottom-color", | ||
"border-left", | ||
"border-left-width", | ||
"border-left-style", | ||
"border-left-color", | ||
"-webkit-border-radius", | ||
"-moz-border-radius", | ||
"border-radius", | ||
"-webkit-border-top-left-radius", | ||
"-moz-border-radius-topleft", | ||
"border-top-left-radius", | ||
"-webkit-border-top-right-radius", | ||
"-moz-border-radius-topright", | ||
"border-top-right-radius", | ||
"-webkit-border-bottom-right-radius", | ||
"-moz-border-radius-bottomright", | ||
"border-bottom-right-radius", | ||
"-webkit-border-bottom-left-radius", | ||
"-moz-border-radius-bottomleft", | ||
"border-bottom-left-radius", | ||
"-webkit-border-image", | ||
"-moz-border-image", | ||
"-o-border-image", | ||
"border-image", | ||
"-webkit-border-image-source", | ||
"-moz-border-image-source", | ||
"-o-border-image-source", | ||
"border-image-source", | ||
"-webkit-border-image-slice", | ||
"-moz-border-image-slice", | ||
"-o-border-image-slice", | ||
"border-image-slice", | ||
"-webkit-border-image-width", | ||
"-moz-border-image-width", | ||
"-o-border-image-width", | ||
"border-image-width", | ||
"-webkit-border-image-outset", | ||
"-moz-border-image-outset", | ||
"-o-border-image-outset", | ||
"border-image-outset", | ||
"-webkit-border-image-repeat", | ||
"-moz-border-image-repeat", | ||
"-o-border-image-repeat", | ||
"border-image-repeat", | ||
"outline", | ||
"outline-width", | ||
"outline-style", | ||
"outline-color", | ||
"outline-offset", | ||
"background", | ||
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", | ||
"background-color", | ||
"background-image", | ||
"background-repeat", | ||
"background-attachment", | ||
"background-position", | ||
"background-position-x", | ||
"-ms-background-position-x", | ||
"background-position-y", | ||
"-ms-background-position-y", | ||
"-webkit-background-clip", | ||
"-moz-background-clip", | ||
"background-clip", | ||
"background-origin", | ||
"-webkit-background-size", | ||
"-moz-background-size", | ||
"-o-background-size", | ||
"background-size", | ||
"box-decoration-break", | ||
"-webkit-box-shadow", | ||
"-moz-box-shadow", | ||
"box-shadow", | ||
"-webkit-box-shadow", | ||
"-moz-box-shadow", | ||
"box-shadow", | ||
"-webkit-box-shadow", | ||
"-moz-box-shadow", | ||
"box-shadow", | ||
"-webkit-box-shadow", | ||
"-moz-box-shadow", | ||
"box-shadow", | ||
"filter:progid:DXImageTransform.Microsoft.gradient", | ||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", | ||
"text-shadow" | ||
], | ||
[ | ||
"font", | ||
"font-family", | ||
"font-size", | ||
"font-weight", | ||
"font-style", | ||
"font-variant", | ||
"font-size-adjust", | ||
"font-stretch", | ||
"font-effect", | ||
"font-emphasize", | ||
"font-emphasize-position", | ||
"font-emphasize-style", | ||
"font-smooth", | ||
"line-height" | ||
] | ||
] | ||
"sort-order": [ | ||
[ | ||
"position", | ||
"z-index", | ||
"top", | ||
"right", | ||
"bottom", | ||
"left" | ||
], | ||
[ | ||
"display", | ||
"visibility", | ||
"float", | ||
"clear", | ||
"overflow", | ||
"overflow-x", | ||
"overflow-y", | ||
"-ms-overflow-x", | ||
"-ms-overflow-y", | ||
"-webkit-overflow-scrolling", | ||
"clip", | ||
"zoom", | ||
"flex-direction", | ||
"flex-order", | ||
"flex-pack", | ||
"flex-align" | ||
], | ||
[ | ||
"-webkit-box-sizing", | ||
"-moz-box-sizing", | ||
"box-sizing", | ||
"width", | ||
"min-width", | ||
"max-width", | ||
"height", | ||
"min-height", | ||
"max-height", | ||
"margin", | ||
"margin-top", | ||
"margin-right", | ||
"margin-bottom", | ||
"margin-left", | ||
"padding", | ||
"padding-top", | ||
"padding-right", | ||
"padding-bottom", | ||
"padding-left" | ||
], | ||
[ | ||
"table-layout", | ||
"empty-cells", | ||
"caption-side", | ||
"border-spacing", | ||
"border-collapse", | ||
"list-style", | ||
"list-style-position", | ||
"list-style-type", | ||
"list-style-image" | ||
], | ||
[ | ||
"content", | ||
"quotes", | ||
"counter-reset", | ||
"counter-increment", | ||
"resize", | ||
"cursor", | ||
"-webkit-user-select", | ||
"-moz-user-select", | ||
"-ms-user-select", | ||
"user-select", | ||
"nav-index", | ||
"nav-up", | ||
"nav-right", | ||
"nav-down", | ||
"nav-left", | ||
"-webkit-transition", | ||
"-moz-transition", | ||
"-ms-transition", | ||
"-o-transition", | ||
"transition", | ||
"-webkit-transition-delay", | ||
"-moz-transition-delay", | ||
"-ms-transition-delay", | ||
"-o-transition-delay", | ||
"transition-delay", | ||
"-webkit-transition-timing-function", | ||
"-moz-transition-timing-function", | ||
"-ms-transition-timing-function", | ||
"-o-transition-timing-function", | ||
"transition-timing-function", | ||
"-webkit-transition-duration", | ||
"-moz-transition-duration", | ||
"-ms-transition-duration", | ||
"-o-transition-duration", | ||
"transition-duration", | ||
"-webkit-transition-property", | ||
"-moz-transition-property", | ||
"-ms-transition-property", | ||
"-o-transition-property", | ||
"transition-property", | ||
"-webkit-transform", | ||
"-moz-transform", | ||
"-ms-transform", | ||
"-o-transform", | ||
"transform", | ||
"-webkit-transform-origin", | ||
"-moz-transform-origin", | ||
"-ms-transform-origin", | ||
"-o-transform-origin", | ||
"transform-origin", | ||
"-webkit-animation", | ||
"-moz-animation", | ||
"-ms-animation", | ||
"-o-animation", | ||
"animation", | ||
"-webkit-animation-name", | ||
"-moz-animation-name", | ||
"-ms-animation-name", | ||
"-o-animation-name", | ||
"animation-name", | ||
"-webkit-animation-duration", | ||
"-moz-animation-duration", | ||
"-ms-animation-duration", | ||
"-o-animation-duration", | ||
"animation-duration", | ||
"-webkit-animation-play-state", | ||
"-moz-animation-play-state", | ||
"-ms-animation-play-state", | ||
"-o-animation-play-state", | ||
"animation-play-state", | ||
"-webkit-animation-timing-function", | ||
"-moz-animation-timing-function", | ||
"-ms-animation-timing-function", | ||
"-o-animation-timing-function", | ||
"animation-timing-function", | ||
"-webkit-animation-delay", | ||
"-moz-animation-delay", | ||
"-ms-animation-delay", | ||
"-o-animation-delay", | ||
"animation-delay", | ||
"-webkit-animation-iteration-count", | ||
"-moz-animation-iteration-count", | ||
"-ms-animation-iteration-count", | ||
"-o-animation-iteration-count", | ||
"animation-iteration-count", | ||
"-webkit-animation-iteration-count", | ||
"-moz-animation-iteration-count", | ||
"-ms-animation-iteration-count", | ||
"-o-animation-iteration-count", | ||
"animation-iteration-count", | ||
"-webkit-animation-direction", | ||
"-moz-animation-direction", | ||
"-ms-animation-direction", | ||
"-o-animation-direction", | ||
"animation-direction", | ||
"text-align", | ||
"-webkit-text-align-last", | ||
"-moz-text-align-last", | ||
"-ms-text-align-last", | ||
"text-align-last", | ||
"vertical-align", | ||
"white-space", | ||
"text-decoration", | ||
"text-emphasis", | ||
"text-emphasis-color", | ||
"text-emphasis-style", | ||
"text-emphasis-position", | ||
"text-indent", | ||
"-ms-text-justify", | ||
"text-justify", | ||
"text-transform", | ||
"letter-spacing", | ||
"word-spacing", | ||
"-ms-writing-mode", | ||
"text-outline", | ||
"text-transform", | ||
"text-wrap", | ||
"text-overflow", | ||
"-ms-text-overflow", | ||
"text-overflow-ellipsis", | ||
"text-overflow-mode", | ||
"-ms-word-wrap", | ||
"word-wrap", | ||
"word-break", | ||
"-ms-word-break", | ||
"-moz-tab-size", | ||
"-o-tab-size", | ||
"tab-size", | ||
"-webkit-hyphens", | ||
"-moz-hyphens", | ||
"hyphens", | ||
"pointer-events" | ||
], | ||
[ | ||
"opacity", | ||
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", | ||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", | ||
"-ms-interpolation-mode", | ||
"color", | ||
"border", | ||
"border-collapse", | ||
"border-width", | ||
"border-style", | ||
"border-color", | ||
"border-top", | ||
"border-top-width", | ||
"border-top-style", | ||
"border-top-color", | ||
"border-right", | ||
"border-right-width", | ||
"border-right-style", | ||
"border-right-color", | ||
"border-bottom", | ||
"border-bottom-width", | ||
"border-bottom-style", | ||
"border-bottom-color", | ||
"border-left", | ||
"border-left-width", | ||
"border-left-style", | ||
"border-left-color", | ||
"-webkit-border-radius", | ||
"-moz-border-radius", | ||
"border-radius", | ||
"-webkit-border-top-left-radius", | ||
"-moz-border-radius-topleft", | ||
"border-top-left-radius", | ||
"-webkit-border-top-right-radius", | ||
"-moz-border-radius-topright", | ||
"border-top-right-radius", | ||
"-webkit-border-bottom-right-radius", | ||
"-moz-border-radius-bottomright", | ||
"border-bottom-right-radius", | ||
"-webkit-border-bottom-left-radius", | ||
"-moz-border-radius-bottomleft", | ||
"border-bottom-left-radius", | ||
"-webkit-border-image", | ||
"-moz-border-image", | ||
"-o-border-image", | ||
"border-image", | ||
"-webkit-border-image-source", | ||
"-moz-border-image-source", | ||
"-o-border-image-source", | ||
"border-image-source", | ||
"-webkit-border-image-slice", | ||
"-moz-border-image-slice", | ||
"-o-border-image-slice", | ||
"border-image-slice", | ||
"-webkit-border-image-width", | ||
"-moz-border-image-width", | ||
"-o-border-image-width", | ||
"border-image-width", | ||
"-webkit-border-image-outset", | ||
"-moz-border-image-outset", | ||
"-o-border-image-outset", | ||
"border-image-outset", | ||
"-webkit-border-image-repeat", | ||
"-moz-border-image-repeat", | ||
"-o-border-image-repeat", | ||
"border-image-repeat", | ||
"outline", | ||
"outline-width", | ||
"outline-style", | ||
"outline-color", | ||
"outline-offset", | ||
"background", | ||
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", | ||
"background-color", | ||
"background-image", | ||
"background-repeat", | ||
"background-attachment", | ||
"background-position", | ||
"background-position-x", | ||
"-ms-background-position-x", | ||
"background-position-y", | ||
"-ms-background-position-y", | ||
"-webkit-background-clip", | ||
"-moz-background-clip", | ||
"background-clip", | ||
"background-origin", | ||
"-webkit-background-size", | ||
"-moz-background-size", | ||
"-o-background-size", | ||
"background-size", | ||
"box-decoration-break", | ||
"-webkit-box-shadow", | ||
"-moz-box-shadow", | ||
"box-shadow", | ||
"-webkit-box-shadow", | ||
"-moz-box-shadow", | ||
"box-shadow", | ||
"-webkit-box-shadow", | ||
"-moz-box-shadow", | ||
"box-shadow", | ||
"-webkit-box-shadow", | ||
"-moz-box-shadow", | ||
"box-shadow", | ||
"filter:progid:DXImageTransform.Microsoft.gradient", | ||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", | ||
"text-shadow" | ||
], | ||
[ | ||
"font", | ||
"font-family", | ||
"font-size", | ||
"font-weight", | ||
"font-style", | ||
"font-variant", | ||
"font-size-adjust", | ||
"font-stretch", | ||
"font-effect", | ||
"font-emphasize", | ||
"font-emphasize-position", | ||
"font-emphasize-style", | ||
"font-smooth", | ||
"line-height" | ||
] | ||
] | ||
} |
{ | ||
"sort-order": [ | ||
"position", | ||
"top", | ||
"right", | ||
"bottom", | ||
"left", | ||
"z-index", | ||
"display", | ||
"visibility", | ||
"-webkit-flex-direction", | ||
"-moz-flex-direction", | ||
"-ms-flex-direction", | ||
"-o-flex-direction", | ||
"flex-direction", | ||
"-webkit-flex-order", | ||
"-moz-flex-order", | ||
"-ms-flex-order", | ||
"-o-flex-order", | ||
"flex-order", | ||
"-webkit-flex-pack", | ||
"-moz-flex-pack", | ||
"-ms-flex-pack", | ||
"-o-flex-pack", | ||
"flex-pack", | ||
"float", | ||
"clear", | ||
"-webkit-flex-align", | ||
"-moz-flex-align", | ||
"-ms-flex-align", | ||
"-o-flex-align", | ||
"flex-align", | ||
"overflow", | ||
"-ms-overflow-x", | ||
"-ms-overflow-y", | ||
"overflow-x", | ||
"overflow-y", | ||
"-webkit-overflow-scrolling", | ||
"clip", | ||
"-webkit-box-sizing", | ||
"-moz-box-sizing", | ||
"box-sizing", | ||
"margin", | ||
"margin-top", | ||
"margin-right", | ||
"margin-bottom", | ||
"margin-left", | ||
"padding", | ||
"padding-top", | ||
"padding-right", | ||
"padding-bottom", | ||
"padding-left", | ||
"min-width", | ||
"min-height", | ||
"max-width", | ||
"max-height", | ||
"width", | ||
"height", | ||
"outline", | ||
"outline-width", | ||
"outline-style", | ||
"outline-color", | ||
"outline-offset", | ||
"border", | ||
"border-spacing", | ||
"border-collapse", | ||
"border-width", | ||
"border-style", | ||
"border-color", | ||
"border-top", | ||
"border-top-width", | ||
"border-top-style", | ||
"border-top-color", | ||
"border-right", | ||
"border-right-width", | ||
"border-right-style", | ||
"border-right-color", | ||
"border-bottom", | ||
"border-bottom-width", | ||
"border-bottom-style", | ||
"border-bottom-color", | ||
"border-left", | ||
"border-left-width", | ||
"border-left-style", | ||
"border-left-color", | ||
"-webkit-border-radius", | ||
"-moz-border-radius", | ||
"border-radius", | ||
"-webkit-border-top-left-radius", | ||
"-moz-border-radius-topleft", | ||
"border-top-left-radius", | ||
"-webkit-border-top-right-radius", | ||
"-moz-border-radius-topright", | ||
"border-top-right-radius", | ||
"-webkit-border-bottom-right-radius", | ||
"-moz-border-radius-bottomright", | ||
"border-bottom-right-radius", | ||
"-webkit-border-bottom-left-radius", | ||
"-moz-border-radius-bottomleft", | ||
"border-bottom-left-radius", | ||
"-webkit-border-image", | ||
"-moz-border-image", | ||
"-o-border-image", | ||
"border-image", | ||
"-webkit-border-image-source", | ||
"-moz-border-image-source", | ||
"-o-border-image-source", | ||
"border-image-source", | ||
"-webkit-border-image-slice", | ||
"-moz-border-image-slice", | ||
"-o-border-image-slice", | ||
"border-image-slice", | ||
"-webkit-border-image-width", | ||
"-moz-border-image-width", | ||
"-o-border-image-width", | ||
"border-image-width", | ||
"-webkit-border-image-outset", | ||
"-moz-border-image-outset", | ||
"-o-border-image-outset", | ||
"border-image-outset", | ||
"-webkit-border-image-repeat", | ||
"-moz-border-image-repeat", | ||
"-o-border-image-repeat", | ||
"border-image-repeat", | ||
"-webkit-border-top-image", | ||
"-moz-border-top-image", | ||
"-o-border-top-image", | ||
"border-top-image", | ||
"-webkit-border-right-image", | ||
"-moz-border-right-image", | ||
"-o-border-right-image", | ||
"border-right-image", | ||
"-webkit-border-bottom-image", | ||
"-moz-border-bottom-image", | ||
"-o-border-bottom-image", | ||
"border-bottom-image", | ||
"-webkit-border-left-image", | ||
"-moz-border-left-image", | ||
"-o-border-left-image", | ||
"border-left-image", | ||
"-webkit-border-corner-image", | ||
"-moz-border-corner-image", | ||
"-o-border-corner-image", | ||
"border-corner-image", | ||
"-webkit-border-top-left-image", | ||
"-moz-border-top-left-image", | ||
"-o-border-top-left-image", | ||
"border-top-left-image", | ||
"-webkit-border-top-right-image", | ||
"-moz-border-top-right-image", | ||
"-o-border-top-right-image", | ||
"border-top-right-image", | ||
"-webkit-border-bottom-right-image", | ||
"-moz-border-bottom-right-image", | ||
"-o-border-bottom-right-image", | ||
"border-bottom-right-image", | ||
"-webkit-border-bottom-left-image", | ||
"-moz-border-bottom-left-image", | ||
"-o-border-bottom-left-image", | ||
"border-bottom-left-image", | ||
"background", | ||
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", | ||
"background-color", | ||
"background-image", | ||
"background-attachment", | ||
"background-position", | ||
"-ms-background-position-x", | ||
"-ms-background-position-y", | ||
"background-position-x", | ||
"background-position-y", | ||
"-webkit-background-clip", | ||
"-moz-background-clip", | ||
"background-clip", | ||
"background-origin", | ||
"-webkit-background-size", | ||
"-moz-background-size", | ||
"-o-background-size", | ||
"background-size", | ||
"background-repeat", | ||
"box-decoration-break", | ||
"-webkit-box-shadow", | ||
"-moz-box-shadow", | ||
"box-shadow", | ||
"color", | ||
"table-layout", | ||
"caption-side", | ||
"empty-cells", | ||
"list-style", | ||
"list-style-position", | ||
"list-style-type", | ||
"list-style-image", | ||
"quotes", | ||
"content", | ||
"counter-increment", | ||
"counter-reset", | ||
"-ms-writing-mode", | ||
"vertical-align", | ||
"text-align", | ||
"-webkit-text-align-last", | ||
"-moz-text-align-last", | ||
"-ms-text-align-last", | ||
"text-align-last", | ||
"text-decoration", | ||
"text-emphasis", | ||
"text-emphasis-position", | ||
"text-emphasis-style", | ||
"text-emphasis-color", | ||
"text-indent", | ||
"-ms-text-justify", | ||
"text-justify", | ||
"text-outline", | ||
"text-transform", | ||
"text-wrap", | ||
"-ms-text-overflow", | ||
"text-overflow", | ||
"text-overflow-ellipsis", | ||
"text-overflow-mode", | ||
"text-shadow", | ||
"white-space", | ||
"word-spacing", | ||
"-ms-word-wrap", | ||
"word-wrap", | ||
"-ms-word-break", | ||
"word-break", | ||
"-moz-tab-size", | ||
"-o-tab-size", | ||
"tab-size", | ||
"-webkit-hyphens", | ||
"-moz-hyphens", | ||
"hyphens", | ||
"letter-spacing", | ||
"font", | ||
"font-weight", | ||
"font-style", | ||
"font-variant", | ||
"font-size-adjust", | ||
"font-stretch", | ||
"font-size", | ||
"font-family", | ||
"src", | ||
"line-height", | ||
"opacity", | ||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", | ||
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", | ||
"-ms-interpolation-mode", | ||
"-webkit-filter", | ||
"-ms-filter", | ||
"filter", | ||
"resize", | ||
"cursor", | ||
"nav-index", | ||
"nav-up", | ||
"nav-right", | ||
"nav-down", | ||
"nav-left", | ||
"-webkit-transition", | ||
"-moz-transition", | ||
"-ms-transition", | ||
"-o-transition", | ||
"transition", | ||
"-webkit-transition-delay", | ||
"-moz-transition-delay", | ||
"-ms-transition-delay", | ||
"-o-transition-delay", | ||
"transition-delay", | ||
"-webkit-transition-timing-function", | ||
"-moz-transition-timing-function", | ||
"-ms-transition-timing-function", | ||
"-o-transition-timing-function", | ||
"transition-timing-function", | ||
"-webkit-transition-duration", | ||
"-moz-transition-duration", | ||
"-ms-transition-duration", | ||
"-o-transition-duration", | ||
"transition-duration", | ||
"-webkit-transition-property", | ||
"-moz-transition-property", | ||
"-ms-transition-property", | ||
"-o-transition-property", | ||
"transition-property", | ||
"-webkit-transform", | ||
"-moz-transform", | ||
"-ms-transform", | ||
"-o-transform", | ||
"transform", | ||
"-webkit-transform-origin", | ||
"-moz-transform-origin", | ||
"-ms-transform-origin", | ||
"-o-transform-origin", | ||
"transform-origin", | ||
"-webkit-animation", | ||
"-moz-animation", | ||
"-ms-animation", | ||
"-o-animation", | ||
"animation", | ||
"-webkit-animation-name", | ||
"-moz-animation-name", | ||
"-ms-animation-name", | ||
"-o-animation-name", | ||
"animation-name", | ||
"-webkit-animation-duration", | ||
"-moz-animation-duration", | ||
"-ms-animation-duration", | ||
"-o-animation-duration", | ||
"animation-duration", | ||
"-webkit-animation-play-state", | ||
"-moz-animation-play-state", | ||
"-ms-animation-play-state", | ||
"-o-animation-play-state", | ||
"animation-play-state", | ||
"-webkit-animation-timing-function", | ||
"-moz-animation-timing-function", | ||
"-ms-animation-timing-function", | ||
"-o-animation-timing-function", | ||
"animation-timing-function", | ||
"-webkit-animation-delay", | ||
"-moz-animation-delay", | ||
"-ms-animation-delay", | ||
"-o-animation-delay", | ||
"animation-delay", | ||
"-webkit-animation-iteration-count", | ||
"-moz-animation-iteration-count", | ||
"-ms-animation-iteration-count", | ||
"-o-animation-iteration-count", | ||
"animation-iteration-count", | ||
"-webkit-animation-direction", | ||
"-moz-animation-direction", | ||
"-ms-animation-direction", | ||
"-o-animation-direction", | ||
"animation-direction", | ||
"pointer-events", | ||
"unicode-bidi", | ||
"direction", | ||
"-webkit-columns", | ||
"-moz-columns", | ||
"columns", | ||
"-webkit-column-span", | ||
"-moz-column-span", | ||
"column-span", | ||
"-webkit-column-width", | ||
"-moz-column-width", | ||
"column-width", | ||
"-webkit-column-count", | ||
"-moz-column-count", | ||
"column-count", | ||
"-webkit-column-fill", | ||
"-moz-column-fill", | ||
"column-fill", | ||
"-webkit-column-gap", | ||
"-moz-column-gap", | ||
"column-gap", | ||
"-webkit-column-rule", | ||
"-moz-column-rule", | ||
"column-rule", | ||
"-webkit-column-rule-width", | ||
"-moz-column-rule-width", | ||
"column-rule-width", | ||
"-webkit-column-rule-style", | ||
"-moz-column-rule-style", | ||
"column-rule-style", | ||
"-webkit-column-rule-color", | ||
"-moz-column-rule-color", | ||
"column-rule-color", | ||
"break-before", | ||
"break-inside", | ||
"break-after", | ||
"page-break-before", | ||
"page-break-inside", | ||
"page-break-after", | ||
"orphans", | ||
"widows", | ||
"-ms-zoom", | ||
"zoom", | ||
"max-zoom", | ||
"min-zoom", | ||
"user-zoom", | ||
"orientation" | ||
] | ||
"sort-order": [ | ||
"position", | ||
"top", | ||
"right", | ||
"bottom", | ||
"left", | ||
"z-index", | ||
"display", | ||
"visibility", | ||
"-webkit-flex-direction", | ||
"-moz-flex-direction", | ||
"-ms-flex-direction", | ||
"-o-flex-direction", | ||
"flex-direction", | ||
"-webkit-flex-order", | ||
"-moz-flex-order", | ||
"-ms-flex-order", | ||
"-o-flex-order", | ||
"flex-order", | ||
"-webkit-flex-pack", | ||
"-moz-flex-pack", | ||
"-ms-flex-pack", | ||
"-o-flex-pack", | ||
"flex-pack", | ||
"float", | ||
"clear", | ||
"-webkit-flex-align", | ||
"-moz-flex-align", | ||
"-ms-flex-align", | ||
"-o-flex-align", | ||
"flex-align", | ||
"overflow", | ||
"-ms-overflow-x", | ||
"-ms-overflow-y", | ||
"overflow-x", | ||
"overflow-y", | ||
"-webkit-overflow-scrolling", | ||
"clip", | ||
"-webkit-box-sizing", | ||
"-moz-box-sizing", | ||
"box-sizing", | ||
"margin", | ||
"margin-top", | ||
"margin-right", | ||
"margin-bottom", | ||
"margin-left", | ||
"padding", | ||
"padding-top", | ||
"padding-right", | ||
"padding-bottom", | ||
"padding-left", | ||
"min-width", | ||
"min-height", | ||
"max-width", | ||
"max-height", | ||
"width", | ||
"height", | ||
"outline", | ||
"outline-width", | ||
"outline-style", | ||
"outline-color", | ||
"outline-offset", | ||
"border", | ||
"border-spacing", | ||
"border-collapse", | ||
"border-width", | ||
"border-style", | ||
"border-color", | ||
"border-top", | ||
"border-top-width", | ||
"border-top-style", | ||
"border-top-color", | ||
"border-right", | ||
"border-right-width", | ||
"border-right-style", | ||
"border-right-color", | ||
"border-bottom", | ||
"border-bottom-width", | ||
"border-bottom-style", | ||
"border-bottom-color", | ||
"border-left", | ||
"border-left-width", | ||
"border-left-style", | ||
"border-left-color", | ||
"-webkit-border-radius", | ||
"-moz-border-radius", | ||
"border-radius", | ||
"-webkit-border-top-left-radius", | ||
"-moz-border-radius-topleft", | ||
"border-top-left-radius", | ||
"-webkit-border-top-right-radius", | ||
"-moz-border-radius-topright", | ||
"border-top-right-radius", | ||
"-webkit-border-bottom-right-radius", | ||
"-moz-border-radius-bottomright", | ||
"border-bottom-right-radius", | ||
"-webkit-border-bottom-left-radius", | ||
"-moz-border-radius-bottomleft", | ||
"border-bottom-left-radius", | ||
"-webkit-border-image", | ||
"-moz-border-image", | ||
"-o-border-image", | ||
"border-image", | ||
"-webkit-border-image-source", | ||
"-moz-border-image-source", | ||
"-o-border-image-source", | ||
"border-image-source", | ||
"-webkit-border-image-slice", | ||
"-moz-border-image-slice", | ||
"-o-border-image-slice", | ||
"border-image-slice", | ||
"-webkit-border-image-width", | ||
"-moz-border-image-width", | ||
"-o-border-image-width", | ||
"border-image-width", | ||
"-webkit-border-image-outset", | ||
"-moz-border-image-outset", | ||
"-o-border-image-outset", | ||
"border-image-outset", | ||
"-webkit-border-image-repeat", | ||
"-moz-border-image-repeat", | ||
"-o-border-image-repeat", | ||
"border-image-repeat", | ||
"-webkit-border-top-image", | ||
"-moz-border-top-image", | ||
"-o-border-top-image", | ||
"border-top-image", | ||
"-webkit-border-right-image", | ||
"-moz-border-right-image", | ||
"-o-border-right-image", | ||
"border-right-image", | ||
"-webkit-border-bottom-image", | ||
"-moz-border-bottom-image", | ||
"-o-border-bottom-image", | ||
"border-bottom-image", | ||
"-webkit-border-left-image", | ||
"-moz-border-left-image", | ||
"-o-border-left-image", | ||
"border-left-image", | ||
"-webkit-border-corner-image", | ||
"-moz-border-corner-image", | ||
"-o-border-corner-image", | ||
"border-corner-image", | ||
"-webkit-border-top-left-image", | ||
"-moz-border-top-left-image", | ||
"-o-border-top-left-image", | ||
"border-top-left-image", | ||
"-webkit-border-top-right-image", | ||
"-moz-border-top-right-image", | ||
"-o-border-top-right-image", | ||
"border-top-right-image", | ||
"-webkit-border-bottom-right-image", | ||
"-moz-border-bottom-right-image", | ||
"-o-border-bottom-right-image", | ||
"border-bottom-right-image", | ||
"-webkit-border-bottom-left-image", | ||
"-moz-border-bottom-left-image", | ||
"-o-border-bottom-left-image", | ||
"border-bottom-left-image", | ||
"background", | ||
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", | ||
"background-color", | ||
"background-image", | ||
"background-attachment", | ||
"background-position", | ||
"-ms-background-position-x", | ||
"-ms-background-position-y", | ||
"background-position-x", | ||
"background-position-y", | ||
"-webkit-background-clip", | ||
"-moz-background-clip", | ||
"background-clip", | ||
"background-origin", | ||
"-webkit-background-size", | ||
"-moz-background-size", | ||
"-o-background-size", | ||
"background-size", | ||
"background-repeat", | ||
"box-decoration-break", | ||
"-webkit-box-shadow", | ||
"-moz-box-shadow", | ||
"box-shadow", | ||
"color", | ||
"table-layout", | ||
"caption-side", | ||
"empty-cells", | ||
"list-style", | ||
"list-style-position", | ||
"list-style-type", | ||
"list-style-image", | ||
"quotes", | ||
"content", | ||
"counter-increment", | ||
"counter-reset", | ||
"-ms-writing-mode", | ||
"vertical-align", | ||
"text-align", | ||
"-webkit-text-align-last", | ||
"-moz-text-align-last", | ||
"-ms-text-align-last", | ||
"text-align-last", | ||
"text-decoration", | ||
"text-emphasis", | ||
"text-emphasis-position", | ||
"text-emphasis-style", | ||
"text-emphasis-color", | ||
"text-indent", | ||
"-ms-text-justify", | ||
"text-justify", | ||
"text-outline", | ||
"text-transform", | ||
"text-wrap", | ||
"-ms-text-overflow", | ||
"text-overflow", | ||
"text-overflow-ellipsis", | ||
"text-overflow-mode", | ||
"text-shadow", | ||
"white-space", | ||
"word-spacing", | ||
"-ms-word-wrap", | ||
"word-wrap", | ||
"-ms-word-break", | ||
"word-break", | ||
"-moz-tab-size", | ||
"-o-tab-size", | ||
"tab-size", | ||
"-webkit-hyphens", | ||
"-moz-hyphens", | ||
"hyphens", | ||
"letter-spacing", | ||
"font", | ||
"font-weight", | ||
"font-style", | ||
"font-variant", | ||
"font-size-adjust", | ||
"font-stretch", | ||
"font-size", | ||
"font-family", | ||
"src", | ||
"line-height", | ||
"opacity", | ||
"-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", | ||
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", | ||
"-ms-interpolation-mode", | ||
"-webkit-filter", | ||
"-ms-filter", | ||
"filter", | ||
"resize", | ||
"cursor", | ||
"nav-index", | ||
"nav-up", | ||
"nav-right", | ||
"nav-down", | ||
"nav-left", | ||
"-webkit-transition", | ||
"-moz-transition", | ||
"-ms-transition", | ||
"-o-transition", | ||
"transition", | ||
"-webkit-transition-delay", | ||
"-moz-transition-delay", | ||
"-ms-transition-delay", | ||
"-o-transition-delay", | ||
"transition-delay", | ||
"-webkit-transition-timing-function", | ||
"-moz-transition-timing-function", | ||
"-ms-transition-timing-function", | ||
"-o-transition-timing-function", | ||
"transition-timing-function", | ||
"-webkit-transition-duration", | ||
"-moz-transition-duration", | ||
"-ms-transition-duration", | ||
"-o-transition-duration", | ||
"transition-duration", | ||
"-webkit-transition-property", | ||
"-moz-transition-property", | ||
"-ms-transition-property", | ||
"-o-transition-property", | ||
"transition-property", | ||
"-webkit-transform", | ||
"-moz-transform", | ||
"-ms-transform", | ||
"-o-transform", | ||
"transform", | ||
"-webkit-transform-origin", | ||
"-moz-transform-origin", | ||
"-ms-transform-origin", | ||
"-o-transform-origin", | ||
"transform-origin", | ||
"-webkit-animation", | ||
"-moz-animation", | ||
"-ms-animation", | ||
"-o-animation", | ||
"animation", | ||
"-webkit-animation-name", | ||
"-moz-animation-name", | ||
"-ms-animation-name", | ||
"-o-animation-name", | ||
"animation-name", | ||
"-webkit-animation-duration", | ||
"-moz-animation-duration", | ||
"-ms-animation-duration", | ||
"-o-animation-duration", | ||
"animation-duration", | ||
"-webkit-animation-play-state", | ||
"-moz-animation-play-state", | ||
"-ms-animation-play-state", | ||
"-o-animation-play-state", | ||
"animation-play-state", | ||
"-webkit-animation-timing-function", | ||
"-moz-animation-timing-function", | ||
"-ms-animation-timing-function", | ||
"-o-animation-timing-function", | ||
"animation-timing-function", | ||
"-webkit-animation-delay", | ||
"-moz-animation-delay", | ||
"-ms-animation-delay", | ||
"-o-animation-delay", | ||
"animation-delay", | ||
"-webkit-animation-iteration-count", | ||
"-moz-animation-iteration-count", | ||
"-ms-animation-iteration-count", | ||
"-o-animation-iteration-count", | ||
"animation-iteration-count", | ||
"-webkit-animation-direction", | ||
"-moz-animation-direction", | ||
"-ms-animation-direction", | ||
"-o-animation-direction", | ||
"animation-direction", | ||
"pointer-events", | ||
"unicode-bidi", | ||
"direction", | ||
"-webkit-columns", | ||
"-moz-columns", | ||
"columns", | ||
"-webkit-column-span", | ||
"-moz-column-span", | ||
"column-span", | ||
"-webkit-column-width", | ||
"-moz-column-width", | ||
"column-width", | ||
"-webkit-column-count", | ||
"-moz-column-count", | ||
"column-count", | ||
"-webkit-column-fill", | ||
"-moz-column-fill", | ||
"column-fill", | ||
"-webkit-column-gap", | ||
"-moz-column-gap", | ||
"column-gap", | ||
"-webkit-column-rule", | ||
"-moz-column-rule", | ||
"column-rule", | ||
"-webkit-column-rule-width", | ||
"-moz-column-rule-width", | ||
"column-rule-width", | ||
"-webkit-column-rule-style", | ||
"-moz-column-rule-style", | ||
"column-rule-style", | ||
"-webkit-column-rule-color", | ||
"-moz-column-rule-color", | ||
"column-rule-color", | ||
"break-before", | ||
"break-inside", | ||
"break-after", | ||
"page-break-before", | ||
"page-break-inside", | ||
"page-break-after", | ||
"orphans", | ||
"widows", | ||
"-ms-zoom", | ||
"zoom", | ||
"max-zoom", | ||
"min-zoom", | ||
"user-zoom", | ||
"orientation" | ||
] | ||
} |
403
index.js
@@ -6,55 +6,56 @@ var postcss = require('postcss'); | ||
function verifyOptions(options) { | ||
if (options === null || typeof options !== 'object') { | ||
options = {}; | ||
} | ||
if (options === null || typeof options !== 'object') { | ||
options = {}; | ||
} | ||
options['sort-order'] = options['sort-order'] || 'default'; | ||
options['empty-lines-between-children-rules'] = options['empty-lines-between-children-rules'] || 0; | ||
options['sort-order'] = options['sort-order'] || 'default'; | ||
options['empty-lines-between-children-rules'] = options['empty-lines-between-children-rules'] || 0; | ||
options['empty-lines-between-media-rules'] = options['empty-lines-between-media-rules'] || 0; | ||
return options; | ||
return options; | ||
} | ||
function getSortOrderFromOptions(options) { | ||
var sortOrder; | ||
var sortOrder; | ||
if (Array.isArray(options['sort-order'])) { | ||
sortOrder = options['sort-order']; | ||
} else if (typeof options['sort-order'] === 'string') { | ||
var configPath = path.join(__dirname, './configs/', options['sort-order']) + '.json'; | ||
if (Array.isArray(options['sort-order'])) { | ||
sortOrder = options['sort-order']; | ||
} else if (typeof options['sort-order'] === 'string') { | ||
var configPath = path.join(__dirname, './configs/', options['sort-order']) + '.json'; | ||
try { | ||
sortOrder = fs.readFileSync(configPath); | ||
sortOrder = JSON.parse(sortOrder); | ||
sortOrder = sortOrder['sort-order']; | ||
} catch (error) { | ||
return {}; | ||
} | ||
} else { | ||
return {}; | ||
} | ||
try { | ||
sortOrder = fs.readFileSync(configPath); | ||
sortOrder = JSON.parse(sortOrder); | ||
sortOrder = sortOrder['sort-order']; | ||
} catch (error) { | ||
return {}; | ||
} | ||
} else { | ||
return {}; | ||
} | ||
// Add sorting indexes to order | ||
var order = {}; | ||
// Add sorting indexes to order | ||
var order = {}; | ||
(typeof sortOrder[0] === 'string' ? [sortOrder] : sortOrder) | ||
.forEach(function (group, groupIndex) { | ||
group.forEach(function (prop, propIndex) { | ||
order[prop] = { | ||
group: groupIndex, | ||
prop: propIndex | ||
}; | ||
}); | ||
}); | ||
(typeof sortOrder[0] === 'string' ? [sortOrder] : sortOrder) | ||
.forEach(function (group, groupIndex) { | ||
group.forEach(function (prop, propIndex) { | ||
order[prop] = { | ||
group: groupIndex, | ||
prop: propIndex | ||
}; | ||
}); | ||
}); | ||
return order; | ||
return order; | ||
} | ||
function getLinesBetweenChildrenFromOptions(options) { | ||
var lines = options['empty-lines-between-children-rules']; | ||
function getLinesBetweenRulesFromOptions(name, options) { | ||
var lines = options['empty-lines-between-' + name + '-rules']; | ||
if (typeof lines !== 'number' || isNaN(lines) || !isFinite(lines) || lines < 0 || Math.floor(lines) !== lines) { | ||
throw new Error('Type of "empty-lines-between-children-rules" option must be integer with positive value.'); | ||
} | ||
if (typeof lines !== 'number' || isNaN(lines) || !isFinite(lines) || lines < 0 || Math.floor(lines) !== lines) { | ||
throw new Error('Type of "empty-lines-between-' + name + '-rules" option must be integer with positive value.'); | ||
} | ||
return lines; | ||
return lines; | ||
} | ||
@@ -64,228 +65,248 @@ | ||
function cleanLineBreaks(node) { | ||
if (node.raws.before) { | ||
node.raws.before = node.raws.before.replace(/\r\n\s*\r\n/g, '\r\n').replace(/\n\s*\n/g, '\n'); | ||
} | ||
if (node.raws.before) { | ||
node.raws.before = node.raws.before.replace(/\r\n\s*\r\n/g, '\r\n').replace(/\n\s*\n/g, '\n'); | ||
} | ||
return node; | ||
return node; | ||
} | ||
function createLineBreaks(lineBreaksCount) { | ||
return new Array(lineBreaksCount + 1).join('\n'); | ||
return new Array(lineBreaksCount + 1).join('\n'); | ||
} | ||
function getAtruleSortName(node, order) { | ||
var atruleName = '@' + node.name; | ||
var atruleName = '@' + node.name; | ||
// If atRule has a parameter like @mixin name or @include name, sort by this parameter | ||
var atruleParameter = /^[\w-]+/.exec(node.params); | ||
// If atRule has a parameter like @mixin name or @include name, sort by this parameter | ||
var atruleParameter = (/^[\w-]+/).exec(node.params); | ||
if (atruleParameter && atruleParameter.length) { | ||
var sortNameExtended = atruleName + ' ' + atruleParameter[0]; | ||
if (atruleParameter && atruleParameter.length) { | ||
var sortNameExtended = atruleName + ' ' + atruleParameter[0]; | ||
if (order[sortNameExtended]) { | ||
return sortNameExtended; | ||
} | ||
} | ||
if (order[sortNameExtended]) { | ||
return sortNameExtended; | ||
} | ||
} | ||
// If atrule with name is in order use the name | ||
if (order[atruleName]) { | ||
return atruleName; | ||
} | ||
// If atrule with name is in order use the name | ||
if (order[atruleName]) { | ||
return atruleName; | ||
} | ||
return '@atrule'; | ||
return '@atrule'; | ||
} | ||
function getSortName(node, order) { | ||
switch (node.type) { | ||
case 'decl': | ||
return /^\$[\w-]+/.test(node.prop) ? '$variable' : node.prop; | ||
switch (node.type) { | ||
case 'decl': | ||
return (/^\$[\w-]+/).test(node.prop) ? '$variable' : node.prop; | ||
case 'atrule': | ||
return getAtruleSortName(node, order); | ||
case 'atrule': | ||
return getAtruleSortName(node, order); | ||
case 'rule': | ||
return '>child'; | ||
case 'rule': | ||
return '>child'; | ||
default: | ||
return null; | ||
} | ||
default: | ||
return null; | ||
} | ||
} | ||
function getOrderProperty(node, order) { | ||
var sortName = getSortName(node, order); | ||
var sortName = getSortName(node, order); | ||
// Trying to get property indexes from order's list | ||
var orderProperty = order[sortName]; | ||
// Trying to get property indexes from order's list | ||
var orderProperty = order[sortName]; | ||
// If no property in the list and this property is prefixed then trying to get parameters for unprefixed property | ||
if (!orderProperty && postcss.vendor.prefix(sortName)) { | ||
sortName = postcss.vendor.unprefixed(sortName); | ||
orderProperty = order[sortName]; | ||
} | ||
// If no property in the list and this property is prefixed then trying to get parameters for unprefixed property | ||
if (!orderProperty && postcss.vendor.prefix(sortName)) { | ||
sortName = postcss.vendor.unprefixed(sortName); | ||
orderProperty = order[sortName]; | ||
} | ||
return orderProperty; | ||
return orderProperty; | ||
} | ||
function addIndexesToNode(node, index, order) { | ||
// Index to place the nodes that shouldn't be sorted | ||
var lastGroupIndex = order['...'] ? order['...'].group : Infinity; | ||
var lastPropertyIndex = order['...'] ? order['...'].prop : Infinity; | ||
// Index to place the nodes that shouldn't be sorted | ||
var lastGroupIndex = order['...'] ? order['...'].group : Infinity; | ||
var lastPropertyIndex = order['...'] ? order['...'].prop : Infinity; | ||
var orderProperty = getOrderProperty(node, order); | ||
var orderProperty = getOrderProperty(node, order); | ||
// If the declaration's property is in order's list, save its | ||
// group and property indexes. Otherwise set them to 10000, so | ||
// declaration appears at the bottom of a sorted list: | ||
node.groupIndex = orderProperty && orderProperty.group > -1 ? orderProperty.group : lastGroupIndex; | ||
node.propertyIndex = orderProperty && orderProperty.prop > -1 ? orderProperty.prop : lastPropertyIndex; | ||
node.initialIndex = index; | ||
// If the declaration's property is in order's list, save its | ||
// group and property indexes. Otherwise set them to 10000, so | ||
// declaration appears at the bottom of a sorted list: | ||
node.groupIndex = orderProperty && orderProperty.group > -1 ? orderProperty.group : lastGroupIndex; | ||
node.propertyIndex = orderProperty && orderProperty.prop > -1 ? orderProperty.prop : lastPropertyIndex; | ||
node.initialIndex = index; | ||
return node; | ||
return node; | ||
} | ||
function fetchAllCommentsBeforeNode(comments, previousNode, node, currentInitialIndex) { | ||
if (!previousNode || previousNode.type !== 'comment') { | ||
return comments; | ||
} | ||
if (!previousNode || previousNode.type !== 'comment') { | ||
return comments; | ||
} | ||
if (!previousNode.raws.before || previousNode.raws.before.indexOf('\n') === -1) { | ||
return comments; | ||
} | ||
if (!previousNode.raws.before || previousNode.raws.before.indexOf('\n') === -1) { | ||
return comments; | ||
} | ||
currentInitialIndex = currentInitialIndex || node.initialIndex; | ||
currentInitialIndex = currentInitialIndex || node.initialIndex; | ||
previousNode.groupIndex = node.groupIndex; | ||
previousNode.propertyIndex = node.propertyIndex; | ||
previousNode.initialIndex = currentInitialIndex - 0.0001; | ||
previousNode.groupIndex = node.groupIndex; | ||
previousNode.propertyIndex = node.propertyIndex; | ||
previousNode.initialIndex = currentInitialIndex - 0.0001; | ||
var previousNodeClone = cleanLineBreaks(previousNode); | ||
var newComments = [previousNodeClone].concat(comments); | ||
var previousNodeClone = cleanLineBreaks(previousNode); | ||
var newComments = [previousNodeClone].concat(comments); | ||
return fetchAllCommentsBeforeNode(newComments, previousNode.prev(), node, previousNode.initialIndex); | ||
return fetchAllCommentsBeforeNode(newComments, previousNode.prev(), node, previousNode.initialIndex); | ||
} | ||
function fetchAllCommentsAfterNode(comments, nextNode, node, currentInitialIndex) { | ||
if (!nextNode || nextNode.type !== 'comment') { | ||
return comments; | ||
} | ||
if (!nextNode || nextNode.type !== 'comment') { | ||
return comments; | ||
} | ||
if (!nextNode.raws.before || nextNode.raws.before.indexOf('\n') >= 0) { | ||
return comments; | ||
} | ||
if (!nextNode.raws.before || nextNode.raws.before.indexOf('\n') >= 0) { | ||
return comments; | ||
} | ||
currentInitialIndex = currentInitialIndex || node.initialIndex; | ||
currentInitialIndex = currentInitialIndex || node.initialIndex; | ||
nextNode.groupIndex = node.groupIndex; | ||
nextNode.propertyIndex = node.propertyIndex; | ||
nextNode.initialIndex = currentInitialIndex + 0.0001; | ||
nextNode.groupIndex = node.groupIndex; | ||
nextNode.propertyIndex = node.propertyIndex; | ||
nextNode.initialIndex = currentInitialIndex + 0.0001; | ||
return fetchAllCommentsAfterNode(comments.concat(nextNode), nextNode.next(), node, nextNode.initialIndex); | ||
return fetchAllCommentsAfterNode(comments.concat(nextNode), nextNode.next(), node, nextNode.initialIndex); | ||
} | ||
function getApplicableNode(node) { | ||
// find if there any rules before, and skip the comments | ||
var prevNode = node.prev(); | ||
// find if there any rules before, and skip the comments | ||
var prevNode = node.prev(); | ||
if (prevNode.type === 'rule') { | ||
return node; | ||
} | ||
if (prevNode.type === 'rule') { | ||
return node; | ||
} | ||
if (prevNode.type === 'comment') { | ||
return getApplicableNode(prevNode); | ||
} | ||
if (prevNode.type === 'atrule') { | ||
return node; | ||
} | ||
return false; | ||
if (prevNode.type === 'comment') { | ||
return getApplicableNode(prevNode); | ||
} | ||
return false; | ||
} | ||
module.exports = postcss.plugin('postcss-sorting', function (opts) { | ||
// Verify options and use defaults if not specified | ||
opts = verifyOptions(opts); | ||
// Verify options and use defaults if not specified | ||
opts = verifyOptions(opts); | ||
return function (css) { | ||
var order = getSortOrderFromOptions(opts); | ||
var linesBetweenChildrenRules = getLinesBetweenChildrenFromOptions(opts); | ||
return function (css) { | ||
var order = getSortOrderFromOptions(opts); | ||
var linesBetweenChildrenRules = getLinesBetweenRulesFromOptions('children', opts); | ||
var linesBetweenMediaRules = getLinesBetweenRulesFromOptions('media', opts); | ||
css.walk(function (rule) { | ||
// Process only rules and atrules with nodes | ||
if ((rule.type === 'rule' || rule.type === 'atrule') && rule.nodes && rule.nodes.length) { | ||
css.walk(function (rule) { | ||
// Process only rules and atrules with nodes | ||
if ((rule.type === 'rule' || rule.type === 'atrule') && rule.nodes && rule.nodes.length) { | ||
// Nodes for sorting | ||
var processed = []; | ||
// Nodes for sorting | ||
var processed = []; | ||
rule.each(function (node, index) { | ||
if (node.type === 'comment') { | ||
if (index === 0 && node.raws.before.indexOf('\n') === -1) { | ||
node.ruleComment = true; // need this flag to not append this comment twice | ||
rule.each(function (node, index) { | ||
if (node.type === 'comment') { | ||
if (index === 0 && node.raws.before.indexOf('\n') === -1) { | ||
node.ruleComment = true; // need this flag to not append this comment twice | ||
processed.push(node); | ||
} | ||
processed.push(node); | ||
} | ||
return; | ||
} | ||
return; | ||
} | ||
node = addIndexesToNode(node, index, order); | ||
node = addIndexesToNode(node, index, order); | ||
// If comment on separate line before node, use node's indexes for comment | ||
var commentsBefore = fetchAllCommentsBeforeNode([], node.prev(), node); | ||
// If comment on separate line before node, use node's indexes for comment | ||
var commentsBefore = fetchAllCommentsBeforeNode([], node.prev(), node); | ||
// If comment on same line with the node and node, use node's indexes for comment | ||
var commentsAfter = fetchAllCommentsAfterNode([], node.next(), node); | ||
// If comment on same line with the node and node, use node's indexes for comment | ||
var commentsAfter = fetchAllCommentsAfterNode([], node.next(), node); | ||
processed = processed.concat(commentsBefore, node, commentsAfter); | ||
}); | ||
processed = processed.concat(commentsBefore, node, commentsAfter); | ||
}); | ||
// Add last comments in the rule. Need this because last comments are not belonging to anything | ||
rule.each(function (node) { | ||
if (node.type === 'comment' && !node.hasOwnProperty('groupIndex') && !node.ruleComment) { | ||
processed.push(node); | ||
} | ||
}); | ||
// Add last comments in the rule. Need this because last comments are not belonging to anything | ||
rule.each(function (node) { | ||
if (node.type === 'comment' && !node.hasOwnProperty('groupIndex') && !node.ruleComment) { | ||
processed.push(node); | ||
} | ||
}); | ||
// Sort declarations saved for sorting: | ||
processed.sort(function (a, b) { | ||
// If a's group index is higher than b's group index, in a sorted | ||
// list a appears after b: | ||
if (a.groupIndex !== b.groupIndex) { | ||
return a.groupIndex - b.groupIndex; | ||
} | ||
// Sort declarations saved for sorting: | ||
processed.sort(function (a, b) { | ||
// If a's group index is higher than b's group index, in a sorted | ||
// list a appears after b: | ||
if (a.groupIndex !== b.groupIndex) return a.groupIndex - b.groupIndex; | ||
// If a and b have the same group index, and a's property index is | ||
// higher than b's property index, in a sorted list a appears after | ||
// b: | ||
if (a.propertyIndex !== b.propertyIndex) { | ||
return a.propertyIndex - b.propertyIndex; | ||
} | ||
// If a and b have the same group index, and a's property index is | ||
// higher than b's property index, in a sorted list a appears after | ||
// b: | ||
if (a.propertyIndex !== b.propertyIndex) return a.propertyIndex - b.propertyIndex; | ||
// If a and b have the same group index and the same property index, | ||
// in a sorted list they appear in the same order they were in | ||
// original array: | ||
return a.initialIndex - b.initialIndex; | ||
}); | ||
// If a and b have the same group index and the same property index, | ||
// in a sorted list they appear in the same order they were in | ||
// original array: | ||
return a.initialIndex - b.initialIndex; | ||
}); | ||
if (processed.length) { | ||
rule.removeAll(); | ||
rule.append(processed); | ||
} | ||
if (processed.length) { | ||
rule.removeAll(); | ||
rule.append(processed); | ||
} | ||
// Remove all empty lines and add empty lines between groups | ||
rule.each(function (node) { | ||
node = cleanLineBreaks(node); | ||
// Remove all empty lines and add empty lines between groups | ||
rule.each(function (node) { | ||
node = cleanLineBreaks(node); | ||
var prevNode = node.prev(); | ||
var prevNode = node.prev(); | ||
if (prevNode && node.raws.before) { | ||
if (node.groupIndex > prevNode.groupIndex) { | ||
node.raws.before = createLineBreaks(1) + node.raws.before; | ||
} | ||
if (prevNode && node.raws.before) { | ||
if (node.groupIndex > prevNode.groupIndex) { | ||
node.raws.before = createLineBreaks(1) + node.raws.before; | ||
} | ||
var applicableNode; | ||
// Insert empty lines between children classes | ||
if (node.type === 'rule' && linesBetweenChildrenRules > 0) { | ||
// between child rules can be comments, so empty lines should be added to first comment between rules, rather than to rule | ||
var applicableNode = getApplicableNode(node); | ||
// Insert empty lines between children classes | ||
if (node.type === 'rule' && linesBetweenChildrenRules > 0) { | ||
// between rules can be comments, so empty lines should be added to first comment between rules, rather than to rule | ||
applicableNode = getApplicableNode(node); | ||
if (applicableNode) { | ||
applicableNode.raws.before = createLineBreaks(linesBetweenChildrenRules) + applicableNode.raws.before; | ||
} | ||
} | ||
} | ||
}); | ||
} | ||
}); | ||
}; | ||
if (applicableNode) { | ||
applicableNode.raws.before = createLineBreaks(linesBetweenChildrenRules) + applicableNode.raws.before; | ||
} | ||
} | ||
// Insert empty lines between media rules | ||
if (node.type === 'atrule' && node.name === 'media' && linesBetweenMediaRules > 0) { | ||
// between rules can be comments, so empty lines should be added to first comment between rules, rather than to rule | ||
applicableNode = getApplicableNode(node); | ||
if (applicableNode) { | ||
applicableNode.raws.before = createLineBreaks(linesBetweenMediaRules) + applicableNode.raws.before; | ||
} | ||
} | ||
} | ||
}); | ||
} | ||
}); | ||
}; | ||
}); |
{ | ||
"name": "postcss-sorting", | ||
"version": "1.2.3", | ||
"version": "1.3.0", | ||
"description": "PostCSS plugin to sort rules content with specified order.", | ||
@@ -28,3 +28,3 @@ "keywords": [ | ||
"ava": "^0.13.0", | ||
"eslint": "^1.10.2", | ||
"eslint": "^2.8.0", | ||
"postcss-less": "^0.8.0", | ||
@@ -31,0 +31,0 @@ "postcss-scss": "^0.1.7" |
310
README.md
@@ -5,3 +5,3 @@ # PostCSS Sorting [![Build Status][ci-img]][ci] | ||
Also available as [Sublime Text plugin] and unofficial [Atom plugin]. | ||
Also available as [Sublime Text plugin], [Atom plugin], and [VS Code plugin]. | ||
@@ -17,2 +17,25 @@ ## Features | ||
## Table of Contents | ||
* [Installation](#installation) | ||
* [Options](#options) | ||
* [Default options](#default-options) | ||
* [`sort-order`](#sort-order) | ||
* [Declarations](#declarations) | ||
* [Prefixed properties](#prefixed-properties) | ||
* [Grouping](#grouping) | ||
* [@at-rules](#at-rules) | ||
* [Nested rules](#nested-rules) | ||
* [Variables](#variables) | ||
* [Leftovers](#leftovers) | ||
* [Predefined configs](#predefined-configs) | ||
* [`empty-lines-between-children-rules`](#empty-lines-between-children-rules) | ||
* [`empty-lines-between-media-rules`](#empty-lines-between-media-rules) | ||
* [Migration from CSSComb](#migration-from-csscomb) | ||
* [Usage](#usage) | ||
* [Text editor](#text-editor) | ||
* [Gulp](#gulp) | ||
* [Grunt](#grunt) | ||
* [Related tools](#related-tools) | ||
## Installation | ||
@@ -26,4 +49,12 @@ | ||
Currently, there are only two options. | ||
### Default options | ||
```json | ||
{ | ||
"sort-order": "default", | ||
"empty-lines-between-children-rules": 0, | ||
"empty-lines-between-media-rules": 0 | ||
} | ||
``` | ||
### `sort-order` | ||
@@ -48,4 +79,4 @@ | ||
p { | ||
padding: 0; | ||
margin: 0; | ||
padding: 0; | ||
margin: 0; | ||
} | ||
@@ -55,4 +86,4 @@ | ||
p { | ||
margin: 0; | ||
padding: 0; | ||
margin: 0; | ||
padding: 0; | ||
} | ||
@@ -70,7 +101,7 @@ ``` | ||
div { | ||
-moz-box-sizing: border-box; | ||
width: 100%; | ||
box-sizing: border-box; | ||
position: absolute; | ||
-webkit-box-sizing: border-box; | ||
-moz-box-sizing: border-box; | ||
width: 100%; | ||
box-sizing: border-box; | ||
position: absolute; | ||
-webkit-box-sizing: border-box; | ||
} | ||
@@ -80,7 +111,7 @@ | ||
div { | ||
position: absolute; | ||
-webkit-box-sizing: border-box; | ||
-moz-box-sizing: border-box; | ||
box-sizing: border-box; | ||
width: 100%; | ||
position: absolute; | ||
-webkit-box-sizing: border-box; | ||
-moz-box-sizing: border-box; | ||
box-sizing: border-box; | ||
width: 100%; | ||
} | ||
@@ -98,6 +129,6 @@ ``` | ||
p { | ||
background: none; | ||
border: 0; | ||
margin: 0; | ||
padding: 0; | ||
background: none; | ||
border: 0; | ||
margin: 0; | ||
padding: 0; | ||
} | ||
@@ -107,7 +138,7 @@ | ||
p { | ||
margin: 0; | ||
padding: 0; | ||
margin: 0; | ||
padding: 0; | ||
border: 0; | ||
background: none; | ||
border: 0; | ||
background: none; | ||
} | ||
@@ -129,9 +160,9 @@ ``` | ||
.block { | ||
@some-rule hello; | ||
border: none; | ||
@mixin clearfix; | ||
@media (min-width: 100px) { | ||
display: none; | ||
} | ||
@mixin island; | ||
@some-rule hello; | ||
border: none; | ||
@mixin clearfix; | ||
@media (min-width: 100px) { | ||
display: none; | ||
} | ||
@mixin island; | ||
} | ||
@@ -141,9 +172,9 @@ | ||
.block { | ||
@media (min-width: 100px) { | ||
display: none; | ||
} | ||
@mixin island; | ||
border: none; | ||
@some-rule hello; | ||
@mixin clearfix; | ||
@media (min-width: 100px) { | ||
display: none; | ||
} | ||
@mixin island; | ||
border: none; | ||
@some-rule hello; | ||
@mixin clearfix; | ||
} | ||
@@ -161,15 +192,15 @@ ``` | ||
.block { | ||
position: absolute; | ||
position: absolute; | ||
span { | ||
display: inline-block; | ||
} | ||
span { | ||
display: inline-block; | ||
} | ||
width: 50%; | ||
width: 50%; | ||
&__element { | ||
display: none; | ||
} | ||
&__element { | ||
display: none; | ||
} | ||
top: 0; | ||
top: 0; | ||
} | ||
@@ -179,12 +210,12 @@ | ||
.block { | ||
position: absolute; | ||
top: 0; | ||
width: 50%; | ||
position: absolute; | ||
top: 0; | ||
width: 50%; | ||
span { | ||
display: inline-block; | ||
} | ||
&__element { | ||
display: none; | ||
} | ||
span { | ||
display: inline-block; | ||
} | ||
&__element { | ||
display: none; | ||
} | ||
} | ||
@@ -202,8 +233,8 @@ ``` | ||
.block { | ||
position: absolute; | ||
$width: 10px; | ||
top: 0; | ||
$height: 20px; | ||
height: $height; | ||
width: $width; | ||
position: absolute; | ||
$width: 10px; | ||
top: 0; | ||
$height: 20px; | ||
height: $height; | ||
width: $width; | ||
} | ||
@@ -213,9 +244,9 @@ | ||
.block { | ||
$width: 10px; | ||
$height: 20px; | ||
$width: 10px; | ||
$height: 20px; | ||
position: absolute; | ||
top: 0; | ||
width: $width; | ||
height: $height; | ||
position: absolute; | ||
top: 0; | ||
width: $width; | ||
height: $height; | ||
} | ||
@@ -234,9 +265,9 @@ ``` | ||
{ | ||
"sort-order": [ | ||
["$variable"], | ||
["position"], | ||
["...", "border"], | ||
["@mixin"], | ||
["font"] | ||
] | ||
"sort-order": [ | ||
["$variable"], | ||
["position"], | ||
["...", "border"], | ||
["@mixin"], | ||
["font"] | ||
] | ||
} | ||
@@ -260,3 +291,3 @@ ``` | ||
Set a number of empty lines between nested children rules. By default there is no empty lines between '>child' rules. | ||
Set a number of empty lines between nested children rules. By default there is no empty lines between `>child` rules. | ||
@@ -270,15 +301,15 @@ Acceptable value: `{Number}` of empty lines | ||
.block { | ||
position: absolute; | ||
position: absolute; | ||
span { | ||
display: inline-block; | ||
} | ||
span { | ||
display: inline-block; | ||
} | ||
&__element { | ||
display: none; | ||
} | ||
&:hover { | ||
top: 0; | ||
} | ||
&__element { | ||
display: none; | ||
} | ||
&:hover { | ||
top: 0; | ||
} | ||
} | ||
@@ -288,18 +319,50 @@ | ||
.block { | ||
position: absolute; | ||
position: absolute; | ||
span { | ||
display: inline-block; | ||
} | ||
span { | ||
display: inline-block; | ||
} | ||
&__element { | ||
display: none; | ||
} | ||
&__element { | ||
display: none; | ||
} | ||
&:hover { | ||
top: 0; | ||
} | ||
&:hover { | ||
top: 0; | ||
} | ||
} | ||
``` | ||
### `empty-lines-between-media-rules` | ||
Set a number of empty lines between nested media rules. By default there is no empty lines between `@media` rules. | ||
Acceptable value: `{Number}` of empty lines | ||
Example: `{ "empty-lines-between-media-rules": 1, "sort-order": ["@media"] }` | ||
```scss | ||
/* before */ | ||
.block { | ||
@media (min-width: 1px) {} | ||
@media (min-width: 2px) {} | ||
@media (min-width: 3px) {} | ||
} | ||
/* after */ | ||
.block { | ||
@media (min-width: 1px) {} | ||
@media (min-width: 2px) {} | ||
@media (min-width: 3px) {} | ||
} | ||
``` | ||
### Migration from CSSComb | ||
If you used to use custom sorting order in [CSSComb] you can easily use this sorting order in PostCSS Sorting. `sort-order` option in this plugin is compatible with `sort-order` in CSSComb. Just copy `sort-order` value from CSSComb config to PostCSS Sorting config. | ||
## Usage | ||
@@ -309,27 +372,28 @@ | ||
#### Sublime Text | ||
#### Text editor | ||
See [Sublime Text plugin] repository. | ||
This plugin available as [Sublime Text plugin], [Atom plugin], and [VS Code plugin]. | ||
#### Gulp | ||
Add [Gulp PostCSS] to your build tool: | ||
Add [Gulp PostCSS] and PostCSS Sorting to your build tool: | ||
```bash | ||
npm install gulp-postcss --save-dev | ||
npm install gulp-postcss postcss-sorting --save-dev | ||
``` | ||
Enable [PostCSS Sorting] within your Gulpfile: | ||
Enable PostCSS Sorting within your Gulpfile: | ||
```js | ||
var postcss = require('gulp-postcss'); | ||
var sorting = require('postcss-sorting'); | ||
gulp.task('css', function () { | ||
return gulp.src('./css/src/*.css').pipe( | ||
postcss([ | ||
require('postcss-sorting')({ /* options */ }) | ||
]) | ||
).pipe( | ||
gulp.dest('./css') | ||
); | ||
return gulp.src('./css/src/*.css').pipe( | ||
postcss([ | ||
sorting({ /* options */ }) | ||
]) | ||
).pipe( | ||
gulp.dest('./css') | ||
); | ||
}); | ||
@@ -340,9 +404,9 @@ ``` | ||
Add [Grunt PostCSS] to your build tool: | ||
Add [Grunt PostCSS] and PostCSS Sorting to your build tool: | ||
```bash | ||
npm install grunt-postcss --save-dev | ||
npm install grunt-postcss postcss-sorting --save-dev | ||
``` | ||
Enable [PostCSS Sorting] within your Gruntfile: | ||
Enable PostCSS Sorting within your Gruntfile: | ||
@@ -353,12 +417,12 @@ ```js | ||
grunt.initConfig({ | ||
postcss: { | ||
options: { | ||
processors: [ | ||
require('postcss-sorting')({ /* options */ }) | ||
] | ||
}, | ||
dist: { | ||
src: 'css/*.css' | ||
} | ||
} | ||
postcss: { | ||
options: { | ||
processors: [ | ||
require('postcss-sorting')({ /* options */ }) | ||
] | ||
}, | ||
dist: { | ||
src: 'css/*.css' | ||
} | ||
} | ||
}); | ||
@@ -369,3 +433,3 @@ ``` | ||
If you want format stylesheets, use [perfectionist], also a PostCSS-based tool. | ||
If you want format stylesheets, use [perfectionist] or [stylefmt], also a PostCSS-based tool. | ||
@@ -385,2 +449,3 @@ Don't forget to lint stylesheets with [stylelint]! | ||
[Atom plugin]: https://github.com/lysyi3m/atom-postcss-sorting | ||
[VS Code plugin]: https://github.com/mrmlnc/vscode-postcss-sorting | ||
@@ -394,2 +459,3 @@ [CSSComb]: https://github.com/csscomb/csscomb.js | ||
[perfectionist]: https://github.com/ben-eb/perfectionist | ||
[stylefmt]: https://github.com/morishitter/stylefmt | ||
[stylelint]: http://stylelint.io/ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1469
437
49423