postcss-pseudo-class-enter
Advanced tools
Comparing version 0.1.1 to 0.2.0
36
index.js
var postcss = require('postcss'); | ||
var postcssSelectorParser = require('postcss-selector-parser'); | ||
module.exports = postcss.plugin('postcss-pseudo-class-enter', function (opts) { | ||
var match = new RegExp(':' + (opts && opts.prefix ? '-' + opts.prefix + '-' : '') + 'enter\\b', 'g'); | ||
var pseudoValue = ':' + (opts && opts.prefix ? '-' + opts.prefix + '-' : '') + 'enter'; | ||
var pseudoFallbackValues = [':focus', ':hover']; | ||
function eachRule(rule) { | ||
rule.selector = postcssSelectorParser(function (selectors) { | ||
selectors.each(function (selector, index) { | ||
var originalIndex = index; | ||
pseudoFallbackValues.forEach(function (pseudoFallbackValue) { | ||
var clone = selector.clone(); | ||
clone.eachPseudo(function (pseudo) { | ||
if (pseudo.value === pseudoValue) { | ||
pseudo.value = pseudoFallbackValue; | ||
selectors.nodes.splice(++index, 0, clone); | ||
} | ||
}); | ||
}); | ||
if (originalIndex !== index) { | ||
selector.removeSelf(); | ||
} | ||
}); | ||
}).process(rule.selector).result; | ||
} | ||
return function (css) { | ||
css.eachRule(function (rule) { | ||
if (match.test(rule.selector)) { | ||
rule.selector = ['focus', 'hover'].map(function (replacement) { | ||
return rule.selector.replace(match, ':' + replacement); | ||
}).join(', '); | ||
} | ||
}); | ||
css.eachRule(eachRule); | ||
}; | ||
}); |
{ | ||
"name": "postcss-pseudo-class-enter", | ||
"version": "0.1.1", | ||
"version": "0.2.0", | ||
"description": "Use the proposed :enter pseudo-class in CSS", | ||
@@ -23,3 +23,4 @@ "keywords": ["postcss", "css", "postcss-plugin", "hover", "focus", "pseudo", "keyboard", "mouse", "touch", "pointer"], | ||
"gulp-eslint": "^0.12.0", | ||
"gulp-mocha": "^2.0.1" | ||
"gulp-mocha": "^2.0.1", | ||
"postcss-selector-parser": "^1.0.0" | ||
}, | ||
@@ -26,0 +27,0 @@ "scripts": { |
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
6543
28
5