1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- "use strict";
- exports.__esModule = true;
- var _postcssValueParser = require("postcss-value-parser");
- var _postcssValueParser2 = _interopRequireDefault(_postcssValueParser);
- var _cache = require("./cache");
- var _cache2 = _interopRequireDefault(_cache);
- var _isNum = require("./isNum");
- var _isNum2 = _interopRequireDefault(_isNum);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- var RESERVED_KEYWORDS = ["unset", "initial", "inherit", "none"];
- var cache = {};
- var declOneCache = [];
- var declTwoCache = [];
- exports.default = {
- collect: function collect(node, encoder) {
- var prop = node.prop,
- type = node.type;
- if (type !== 'decl') {
- return;
- }
- if (/counter-(reset|increment)/.test(prop)) {
- node.value = (0, _postcssValueParser2.default)(node.value).walk(function (child) {
- if (child.type === 'word' && !(0, _isNum2.default)(child) && RESERVED_KEYWORDS.indexOf(child.value) === -1) {
- (0, _cache2.default)(child.value, encoder, cache);
- child.value = cache[child.value].ident;
- }
- if (child.type === 'space') {
- child.value = ' ';
- }
- });
- declOneCache.push(node);
- } else if (/content/.test(prop)) {
- declTwoCache.push(node);
- }
- },
- transform: function transform() {
- declTwoCache.forEach(function (decl) {
- decl.value = (0, _postcssValueParser2.default)(decl.value).walk(function (node) {
- var type = node.type,
- value = node.value;
- if (type === 'function' && (value === 'counter' || value === 'counters')) {
- (0, _postcssValueParser.walk)(node.nodes, function (child) {
- if (child.type === 'word' && child.value in cache) {
- cache[child.value].count++;
- child.value = cache[child.value].ident;
- } else if (child.type === 'div') {
- child.before = child.after = '';
- }
- });
- }
- if (type === 'space') {
- node.value = ' ';
- }
- return false;
- }).toString();
- });
- declOneCache.forEach(function (decl) {
- decl.value = decl.value.walk(function (node) {
- if (node.type === 'word' && !(0, _isNum2.default)(node)) {
- Object.keys(cache).forEach(function (key) {
- var cached = cache[key];
- if (cached.ident === node.value && !cached.count) {
- node.value = key;
- }
- });
- }
- }).toString();
- });
- // reset cache after transform
- cache = {};
- declOneCache = [];
- declTwoCache = [];
- }
- };
- module.exports = exports["default"];
|