Server IP : 162.213.251.212 / Your IP : 3.15.220.148 [ Web Server : LiteSpeed System : Linux business55.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : allssztx ( 535) PHP Version : 8.1.31 Disable Function : NONE Domains : 1 Domains MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/allssztx/public_html/easybuyer/node_modules/svgo/plugins/ |
Upload File : |
'use strict'; exports.type = 'perItemReverse'; exports.active = true; exports.description = 'moves elements attributes to the existing group wrapper'; var inheritableAttrs = require('./_collections').inheritableAttrs, pathElems = require('./_collections.js').pathElems; /** * Collapse content's intersected and inheritable * attributes to the existing group wrapper. * * @example * <g attr1="val1"> * <g attr2="val2"> * text * </g> * <circle attr2="val2" attr3="val3"/> * </g> * ⬇ * <g attr1="val1" attr2="val2"> * <g> * text * </g> * <circle attr3="val3"/> * </g> * * @param {Object} item current iteration item * @return {Boolean} if false, item will be filtered out * * @author Kir Belevich */ exports.fn = function(item) { if (item.isElem('g') && !item.isEmpty() && item.content.length > 1) { var intersection = {}, hasTransform = false, hasClip = item.hasAttr('clip-path') || item.hasAttr('mask'), intersected = item.content.every(function(inner) { if (inner.isElem() && inner.hasAttr()) { // don't mess with possible styles (hack until CSS parsing is implemented) if (inner.hasAttr('class')) return false; if (!Object.keys(intersection).length) { intersection = inner.attrs; } else { intersection = intersectInheritableAttrs(intersection, inner.attrs); if (!intersection) return false; } return true; } }), allPath = item.content.every(function(inner) { return inner.isElem(pathElems); }); if (intersected) { item.content.forEach(function(g) { for (var name in intersection) { if (!allPath && !hasClip || name !== 'transform') { g.removeAttr(name); if (name === 'transform') { if (!hasTransform) { if (item.hasAttr('transform')) { item.attr('transform').value += ' ' + intersection[name].value; } else { item.addAttr(intersection[name]); } hasTransform = true; } } else { item.addAttr(intersection[name]); } } } }); } } }; /** * Intersect inheritable attributes. * * @param {Object} a first attrs object * @param {Object} b second attrs object * * @return {Object} intersected attrs object */ function intersectInheritableAttrs(a, b) { var c = {}; for (var n in a) { if ( b.hasOwnProperty(n) && inheritableAttrs.indexOf(n) > -1 && a[n].name === b[n].name && a[n].value === b[n].value && a[n].prefix === b[n].prefix && a[n].local === b[n].local ) { c[n] = a[n]; } } if (!Object.keys(c).length) return false; return c; }