| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.default = void 0; |
| |
| var _browserslist = _interopRequireDefault(require("browserslist")); |
| |
| var _caniuseApi = require("caniuse-api"); |
| |
| var _fromInitial = _interopRequireDefault(require("../data/fromInitial.json")); |
| |
| var _toInitial = _interopRequireDefault(require("../data/toInitial.json")); |
| |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
| |
| const initial = 'initial'; // In most of the browser including chrome the initial for `writing-mode` is not `horizontal-tb`. Ref https://github.com/cssnano/cssnano/pull/905 |
| |
| const defaultIgnoreProps = ['writing-mode', 'transform-box']; |
| |
| function pluginCreator() { |
| return { |
| postcssPlugin: 'postcss-reduce-initial', |
| |
| prepare(result) { |
| const resultOpts = result.opts || {}; |
| const browsers = (0, _browserslist.default)(null, { |
| stats: resultOpts.stats, |
| path: __dirname, |
| env: resultOpts.env |
| }); |
| const initialSupport = (0, _caniuseApi.isSupported)('css-initial-value', browsers); |
| return { |
| OnceExit(css) { |
| css.walkDecls(decl => { |
| const lowerCasedProp = decl.prop.toLowerCase(); |
| const ignoreProp = new Set(defaultIgnoreProps.concat(resultOpts.ignore || [])); |
| |
| if (ignoreProp.has(lowerCasedProp)) { |
| return; |
| } |
| |
| if (initialSupport && Object.prototype.hasOwnProperty.call(_toInitial.default, lowerCasedProp) && decl.value.toLowerCase() === _toInitial.default[lowerCasedProp]) { |
| decl.value = initial; |
| return; |
| } |
| |
| if (decl.value.toLowerCase() !== initial || !_fromInitial.default[lowerCasedProp]) { |
| return; |
| } |
| |
| decl.value = _fromInitial.default[lowerCasedProp]; |
| }); |
| } |
| |
| }; |
| } |
| |
| }; |
| } |
| |
| pluginCreator.postcss = true; |
| var _default = pluginCreator; |
| exports.default = _default; |
| module.exports = exports.default; |