| 'use strict'; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| |
| var _postcss = require('postcss'); |
| |
| var _has = require('has'); |
| |
| var _has2 = _interopRequireDefault(_has); |
| |
| var _browserslist = require('browserslist'); |
| |
| var _browserslist2 = _interopRequireDefault(_browserslist); |
| |
| var _caniuseApi = require('caniuse-api'); |
| |
| var _fromInitial = require('../data/fromInitial.json'); |
| |
| var _fromInitial2 = _interopRequireDefault(_fromInitial); |
| |
| var _toInitial = require('../data/toInitial.json'); |
| |
| var _toInitial2 = _interopRequireDefault(_toInitial); |
| |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
| |
| const initial = 'initial'; |
| |
| exports.default = (0, _postcss.plugin)('postcss-reduce-initial', () => { |
| return (css, result) => { |
| const resultOpts = result.opts || {}; |
| const browsers = (0, _browserslist2.default)(null, { |
| stats: resultOpts.stats, |
| path: __dirname, |
| env: resultOpts.env |
| }); |
| |
| const initialSupport = (0, _caniuseApi.isSupported)('css-initial-value', browsers); |
| |
| css.walkDecls(decl => { |
| const lowerCasedProp = decl.prop.toLowerCase(); |
| |
| if (initialSupport && (0, _has2.default)(_toInitial2.default, lowerCasedProp) && decl.value.toLowerCase() === _toInitial2.default[lowerCasedProp]) { |
| decl.value = initial; |
| return; |
| } |
| |
| if (decl.value.toLowerCase() !== initial || !_fromInitial2.default[lowerCasedProp]) { |
| return; |
| } |
| |
| decl.value = _fromInitial2.default[lowerCasedProp]; |
| }); |
| }; |
| }); |
| module.exports = exports['default']; |