/var/www/flurhymez/node_modules/svgo/plugins
NameSizeModeActions
addAttributesToSVGElement.js20660644editdlrm
addClassesToSVGElement.js18330644editdlrm
cleanupAttrs.js14570644editdlrm
cleanupEnableBackground.js20140644editdlrm
cleanupIDs.js71450644editdlrm
cleanupListOfValues.js39960644editdlrm
cleanupNumericValues.js29560644editdlrm
collapseGroups.js39260644editdlrm
convertColors.js42220644editdlrm
convertEllipseToCircle.js9380644editdlrm
convertPathData.js283890644editdlrm
convertShapeToPath.js59830644editdlrm
convertStyleToAttrs.js38280644editdlrm
convertTransform.js116960644editdlrm
inlineStyles.js121820644editdlrm
mergePaths.js29940644editdlrm
mergeStyles.js23800644editdlrm
minifyStyles.js43890644editdlrm
moveElemsAttrsToGroup.js37410644editdlrm
moveGroupAttrsToElems.js17120644editdlrm
plugins.js32240644editdlrm
prefixIds.js65850644editdlrm
preset-default.js29900644editdlrm
removeAttributesBySelector.js24430644editdlrm
removeAttrs.js41910644editdlrm
removeComments.js6340644editdlrm
removeDesc.js10750644editdlrm
removeDimensions.js12270644editdlrm
removeDoctype.js11330644editdlrm
removeEditorsNSData.js20220644editdlrm
removeElementsByAttr.js21390644editdlrm
removeEmptyAttrs.js7770644editdlrm
removeEmptyContainers.js14910644editdlrm
removeEmptyText.js13890644editdlrm
removeHiddenElems.js92890644editdlrm
removeMetadata.js5660644editdlrm
removeNonInheritableGroupAttrs.js9250644editdlrm
removeOffCanvasPaths.js39670644editdlrm
removeRasterImages.js7750644editdlrm
removeScriptElement.js6010644editdlrm
removeStyleElement.js6040644editdlrm
removeTitle.js5790644editdlrm
removeUnknownsAndDefaults.js63460644editdlrm
removeUnusedNS.js18480644editdlrm
removeUselessDefs.js17240644editdlrm
removeUselessStrokeAndFill.js43590644editdlrm
removeViewBox.js14020644editdlrm
removeXMLNS.js6660644editdlrm
removeXMLProcInst.js6100644editdlrm
reusePaths.js33790644editdlrm
sortAttrs.js27220644editdlrm
sortDefsChildren.js18330644editdlrm
_applyTransforms.js98240644editdlrm
_collections.js444760644editdlrm
_path.js213580644editdlrm
_transforms.js107690644editdlrm
Edit: /var/www/flurhymez/node_modules/svgo/plugins/collapseGroups.js (3926B)
'use strict'; /** * @typedef {import('../lib/types').XastNode} XastNode */ const { inheritableAttrs, elemsGroups } = require('./_collections.js'); exports.type = 'visitor'; exports.name = 'collapseGroups'; exports.active = true; exports.description = 'collapses useless groups'; /** * @type {(node: XastNode, name: string) => boolean} */ const hasAnimatedAttr = (node, name) => { if (node.type === 'element') { if ( elemsGroups.animation.includes(node.name) && node.attributes.attributeName === name ) { return true; } for (const child of node.children) { if (hasAnimatedAttr(child, name)) { return true; } } } return false; }; /** * Collapse useless groups. * * @example * * * * * * ⬇ * * * * * * ⬇ * * * @author Kir Belevich * * @type {import('../lib/types').Plugin} */ exports.fn = () => { return { element: { exit: (node, parentNode) => { if (parentNode.type === 'root' || parentNode.name === 'switch') { return; } // non-empty groups if (node.name !== 'g' || node.children.length === 0) { return; } // move group attibutes to the single child element if ( Object.keys(node.attributes).length !== 0 && node.children.length === 1 ) { const firstChild = node.children[0]; // TODO untangle this mess if ( firstChild.type === 'element' && firstChild.attributes.id == null && node.attributes.filter == null && (node.attributes.class == null || firstChild.attributes.class == null) && ((node.attributes['clip-path'] == null && node.attributes.mask == null) || (firstChild.name === 'g' && node.attributes.transform == null && firstChild.attributes.transform == null)) ) { for (const [name, value] of Object.entries(node.attributes)) { // avoid copying to not conflict with animated attribute if (hasAnimatedAttr(firstChild, name)) { return; } if (firstChild.attributes[name] == null) { firstChild.attributes[name] = value; } else if (name === 'transform') { firstChild.attributes[name] = value + ' ' + firstChild.attributes[name]; } else if (firstChild.attributes[name] === 'inherit') { firstChild.attributes[name] = value; } else if ( inheritableAttrs.includes(name) === false && firstChild.attributes[name] !== value ) { return; } delete node.attributes[name]; } } } // collapse groups without attributes if (Object.keys(node.attributes).length === 0) { // animation elements "add" attributes to group // group should be preserved for (const child of node.children) { if ( child.type === 'element' && elemsGroups.animation.includes(child.name) ) { return; } } // replace current node with all its children const index = parentNode.children.indexOf(node); parentNode.children.splice(index, 1, ...node.children); // TODO remove in v3 for (const child of node.children) { // @ts-ignore parentNode is forbidden for public usage // and will be moved in v3 child.parentNode = parentNode; } } }, }, }; };