postcss-nested
Advanced tools
Comparing version 5.0.1 to 5.0.2
# Change Log | ||
This project adheres to [Semantic Versioning](http://semver.org/). | ||
## 5.0.2 | ||
* Fixed compatibility with `postcss-mixins` by moving to visitor API. | ||
## 5.0.1 | ||
@@ -5,0 +8,0 @@ * Fixed PostCSS 8.1 compatibility. |
139
index.js
@@ -105,69 +105,2 @@ let parser = require('postcss-selector-parser') | ||
function processRule (rule, bubble, unwrap, preserveEmpty, Rule) { | ||
let unwrapped = false | ||
let after = rule | ||
let copyDeclarations = false | ||
let declarations = [] | ||
rule.each(child => { | ||
if (child.type === 'rule') { | ||
if (declarations.length) { | ||
after = pickDeclarations(rule.selector, declarations, after, Rule) | ||
declarations = [] | ||
} | ||
copyDeclarations = true | ||
unwrapped = true | ||
child.selectors = selectors(rule, child) | ||
after = pickComment(child.prev(), after) | ||
after.after(child) | ||
after = child | ||
} else if (child.type === 'atrule') { | ||
copyDeclarations = false | ||
if (declarations.length) { | ||
after = pickDeclarations(rule.selector, declarations, after, Rule) | ||
declarations = [] | ||
} | ||
if (child.name === 'at-root') { | ||
unwrapped = true | ||
atruleChilds(rule, child, false) | ||
let nodes = child.nodes | ||
if (child.params) { | ||
nodes = new Rule({ selector: child.params, nodes }) | ||
} | ||
after.after(nodes) | ||
after = nodes | ||
child.remove() | ||
} else if (bubble[child.name]) { | ||
unwrapped = true | ||
atruleChilds(rule, child, true) | ||
after = pickComment(child.prev(), after) | ||
after.after(child) | ||
after = child | ||
} else if (unwrap[child.name]) { | ||
unwrapped = true | ||
atruleChilds(rule, child, false) | ||
after = pickComment(child.prev(), after) | ||
after.after(child) | ||
after = child | ||
} | ||
} else if (child.type === 'decl' && copyDeclarations) { | ||
declarations.push(child) | ||
} | ||
}) | ||
if (declarations.length) { | ||
after = pickDeclarations(rule.selector, declarations, after, Rule) | ||
} | ||
if (unwrapped && preserveEmpty !== true) { | ||
rule.raws.semicolon = true | ||
if (rule.nodes.length === 0) rule.remove() | ||
} | ||
} | ||
function atruleNames (defaults, custom) { | ||
@@ -194,13 +127,67 @@ let list = {} | ||
postcssPlugin: 'postcss-nested', | ||
Once (root, { Rule }) { | ||
function process (node) { | ||
node.each(child => { | ||
if (child.type === 'rule') { | ||
processRule(child, bubble, unwrap, preserveEmpty, Rule) | ||
} else if (child.type === 'atrule') { | ||
process(child) | ||
RuleExit (rule, { Rule }) { | ||
let unwrapped = false | ||
let after = rule | ||
let copyDeclarations = false | ||
let declarations = [] | ||
rule.each(child => { | ||
if (child.type === 'rule') { | ||
if (declarations.length) { | ||
after = pickDeclarations(rule.selector, declarations, after, Rule) | ||
declarations = [] | ||
} | ||
}) | ||
copyDeclarations = true | ||
unwrapped = true | ||
child.selectors = selectors(rule, child) | ||
after = pickComment(child.prev(), after) | ||
after.after(child) | ||
after = child | ||
} else if (child.type === 'atrule') { | ||
copyDeclarations = false | ||
if (declarations.length) { | ||
after = pickDeclarations(rule.selector, declarations, after, Rule) | ||
declarations = [] | ||
} | ||
if (child.name === 'at-root') { | ||
unwrapped = true | ||
atruleChilds(rule, child, false) | ||
let nodes = child.nodes | ||
if (child.params) { | ||
nodes = new Rule({ selector: child.params, nodes }) | ||
} | ||
after.after(nodes) | ||
after = nodes | ||
child.remove() | ||
} else if (bubble[child.name]) { | ||
unwrapped = true | ||
atruleChilds(rule, child, true) | ||
after = pickComment(child.prev(), after) | ||
after.after(child) | ||
after = child | ||
} else if (unwrap[child.name]) { | ||
unwrapped = true | ||
atruleChilds(rule, child, false) | ||
after = pickComment(child.prev(), after) | ||
after.after(child) | ||
after = child | ||
} | ||
} else if (child.type === 'decl' && copyDeclarations) { | ||
declarations.push(child) | ||
} | ||
}) | ||
if (declarations.length) { | ||
after = pickDeclarations(rule.selector, declarations, after, Rule) | ||
} | ||
process(root) | ||
if (unwrapped && preserveEmpty !== true) { | ||
rule.raws.semicolon = true | ||
if (rule.nodes.length === 0) rule.remove() | ||
} | ||
} | ||
@@ -207,0 +194,0 @@ } |
{ | ||
"name": "postcss-nested", | ||
"version": "5.0.1", | ||
"version": "5.0.2", | ||
"description": "PostCSS plugin to unwrap nested rules like how Sass does it", | ||
@@ -23,3 +23,3 @@ "keywords": [ | ||
"peerDependencies": { | ||
"postcss": "^8.1.0" | ||
"postcss": "^8.1.5" | ||
}, | ||
@@ -26,0 +26,0 @@ "dependencies": { |
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
13172
198