1234567891011121314151617181920212223242526272829303132333435 |
- var postcss = require('postcss');
- var makeFallbackFunction = require('./lib/rules-fabric');
- module.exports = postcss.plugin('postcss-initial', function (opts) {
- opts = opts || {};
- opts.reset = opts.reset || 'all';
- opts.replace = opts.replace || false;
- var getFallback = makeFallbackFunction(opts.reset === 'inherited');
- var getPropPrevTo = function (prop, decl) {
- var foundPrev = false;
- decl.parent.walkDecls(function (child) {
- if (child.prop === decl.prop && child.value !== decl.value) {
- foundPrev = true;
- }
- });
- return foundPrev;
- };
- return function (css) {
- css.walkDecls(function (decl) {
- if (!/\binitial\b/.test(decl.value)) {
- return;
- }
- var fallBackRules = getFallback(decl.prop, decl.value);
- if (fallBackRules.length === 0) return;
- fallBackRules.forEach(function (rule) {
- if ( !getPropPrevTo(decl.prop, decl) ) {
- decl.cloneBefore(rule);
- }
- });
- if (opts.replace === true) {
- decl.remove();
- }
- });
- };
- });
|