| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | 'use strict';exports.type = 'perItem';exports.active = true;exports.description = 'moves some group attributes to the content elements';var collections = require('./_collections.js'),    pathElems = collections.pathElems.concat(['g', 'text']),    referencesProps = collections.referencesProps;/** * Move group attrs to the content elements. * * @example * <g transform="scale(2)"> *     <path transform="rotate(45)" d="M0,0 L10,20"/> *     <path transform="translate(10, 20)" d="M0,10 L20,30"/> * </g> *                          ⬇ * <g> *     <path transform="scale(2) rotate(45)" d="M0,0 L10,20"/> *     <path transform="scale(2) translate(10, 20)" d="M0,10 L20,30"/> * </g> * * @param {Object} item current iteration item * @return {Boolean} if false, item will be filtered out * * @author Kir Belevich */exports.fn = function(item) {    // move group transform attr to content's pathElems    if (        item.isElem('g') &&        item.hasAttr('transform') &&        !item.isEmpty() &&        !item.someAttr(function(attr) {            return ~referencesProps.indexOf(attr.name) && ~attr.value.indexOf('url(');        }) &&        item.content.every(function(inner) {            return inner.isElem(pathElems) && !inner.hasAttr('id');        })    ) {        item.content.forEach(function(inner) {            var attr = item.attr('transform');            if (inner.hasAttr('transform')) {                inner.attr('transform').value = attr.value + ' ' + inner.attr('transform').value;            } else {                inner.addAttr({                    'name': attr.name,                    'local': attr.local,                    'prefix': attr.prefix,                    'value': attr.value                });            }        });        item.removeAttr('transform');    }};
 |