Sha256: 6a59e797f8e2787bf35453d1bbb2f61706faa5b226d8954e0a9d848b780cfa8f

Contents?: true

Size: 1.65 KB

Versions: 26

Compression:

Stored size: 1.65 KB

Contents

'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.default = colorMerge;

var _getDecls = require('./getDecls');

var _getDecls2 = _interopRequireDefault(_getDecls);

var _hasAllProps = require('./hasAllProps');

var _hasAllProps2 = _interopRequireDefault(_hasAllProps);

var _insertCloned = require('./insertCloned');

var _insertCloned2 = _interopRequireDefault(_insertCloned);

var _remove = require('./remove');

var _remove2 = _interopRequireDefault(_remove);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function getAllRules(props, properties) {
    return properties.reduce((list, property) => {
        props.filter(n => n.prop && ~n.prop.indexOf(property)).forEach((result, index) => {
            if (!list[index]) {
                list.push([]);
            }
            list[index].push(result);
        });
        return list;
    }, [[]]);
}

function colorMerge({ rule, properties, prop, value }) {
    let decls = (0, _getDecls2.default)(rule, properties);

    while (decls.length) {
        const lastNode = decls[decls.length - 1];
        const props = decls.filter(node => node.important === lastNode.important);
        if ((0, _hasAllProps2.default)(props, ...properties)) {
            getAllRules(props, properties).reverse().forEach(group => {
                (0, _insertCloned2.default)(rule, lastNode, {
                    prop,
                    value: value(group)
                });
            });
            props.forEach(_remove2.default);
        }
        decls = decls.filter(node => !~props.indexOf(node));
    }
}
module.exports = exports['default'];

Version data entries

26 entries across 25 versions & 8 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
disco_app-0.18.0 test/dummy/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
disco_app-0.18.2 test/dummy/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
disco_app-0.16.1 test/dummy/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
disco_app-0.15.2 test/dummy/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
disco_app-0.18.4 test/dummy/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
disco_app-0.18.1 test/dummy/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
disco_app-0.14.0 test/dummy/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
tang-0.2.1 spec/tang_app/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
tang-0.2.0 spec/tang_app/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
tang-0.1.0 spec/tang_app/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
tang-0.0.9 spec/tang_app/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
enju_library-0.3.8 spec/dummy/node_modules/postcss-merge-longhand/dist/lib/colorMerge.js
jester-data-8.0.0 node_modules/postcss-merge-longhand/dist/lib/colorMerge.js