Socket
Socket
Sign inDemoInstall

postcss-nesting

Package Overview
Dependencies
Maintainers
1
Versions
61
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

postcss-nesting - npm Package Compare versions

Comparing version 2.1.1 to 2.2.0

test/media.actual.css

6

CHANGELOG.md

@@ -0,1 +1,7 @@

## 2.2.0 (2016-01-30)
- Added: Nesting of all at-rules
- Updated: Direct nesting order maintains order
- Updated: Tests and documentation
## 2.1.1 (2016-01-03)

@@ -2,0 +8,0 @@

64

index.js

@@ -11,17 +11,22 @@ var postcss = require('postcss');

return function (css) {
css.walkAtRules(function (atrule) {
var rule = atrule.parent;
css.walk(function (target) {
var rule = target.parent;
var root = rule && rule.parent;
var isAtRule = target.type === 'atrule';
var isRule = target.type === 'rule';
if (root && rule.type === 'rule') {
var newrule = postcss.rule({
source: atrule.source
source: target.source
});
if (atrule.name === name && ~atrule.params.indexOf('&')) {
atrule.remove();
if (isRule && target.selectors.every(function (selector) {
return selector.lastIndexOf('&') === 0;
})) {
target.remove();
newrule.selector = atrule.params;
newrule.selector = target.selector;
newrule.append(atrule.nodes);
newrule.append(target.nodes);

@@ -33,33 +38,38 @@ transpileSelectors(rule, newrule);

rule.insertAfterNode = newrule;
} else if (~bubble.indexOf(atrule.name)) {
atrule.remove();
} else if (isAtRule && target.name === name && ~target.params.indexOf('&')) {
target.remove();
newrule.selector = rule.selector;
newrule.selector = target.params;
newrule.append(atrule.nodes);
newrule.append(target.nodes);
atrule.removeAll();
transpileSelectors(rule, newrule);
atrule.append(newrule);
root.insertAfter(rule.insertAfterNode || rule, newrule);
root.insertAfter(rule.insertAfterNode || rule, atrule);
rule.insertAfterNode = newrule;
} else if (isAtRule && ~bubble.indexOf(target.name)) {
var selector = rule.selector;
rule.insertAfterNode = atrule;
}
}
});
if (root.type === 'atrule' && root.name === target.name && root.parent) {
target.params = root.params + ' and ' + target.params;
css.walkRules(function (rule) {
if (rule.parent.type === 'root') return;
rule = root;
root = root.parent;
}
if (rule.selectors.filter(function (selector) {
return selector.lastIndexOf('&') !== 0;
}).length) return;
target.remove();
transpileSelectors(rule.parent, rule);
newrule.selector = selector;
rule.moveAfter(rule.parent);
newrule.append(target.nodes);
if (!rule.prev().nodes.length) {
rule.prev().remove();
target.removeAll();
target.append(newrule);
root.insertAfter(rule.insertAfterNode || rule, target);
rule.insertAfterNode = target;
}
}

@@ -66,0 +76,0 @@ });

{
"name": "postcss-nesting",
"version": "2.1.1",
"version": "2.2.0",
"description": "Transpiles nested rules according to CSS Nesting Module Level 3",

@@ -11,3 +11,6 @@ "keywords": [

"selectors",
"rules"
"rules",
"specs",
"specifications",
"cssnext"
],

@@ -14,0 +17,0 @@ "author": "Jonathan Neal <jonathantneal@hotmail.com>",

@@ -51,2 +51,6 @@ # CSS Nesting

color: yellow;
@media (min-device-pixel-ratio: 1.5) {
color: green;
}
}

@@ -78,2 +82,6 @@ }

}
@media (min-width: 30em) and (min-device-pixel-ratio: 1.5) {
color: green;
}
```

@@ -80,0 +88,0 @@

@@ -11,2 +11,5 @@ var tests = {

message: 'ignores invalid syntax'
},
'media': {
message: 'supports nested media queries'
}

@@ -13,0 +16,0 @@ }

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc