/
var
/
www
/
cobraambalaj
/
node_modules
/
svgo
/
plugins
/
/var/www/cobraambalaj/node_modules/svgo/plugins
mkdir
upload
Name
Size
Mode
Actions
addAttributesToSVGElement.js
2066
0644
edit
dl
rm
addClassesToSVGElement.js
1093
0644
edit
dl
rm
cleanupAttrs.js
1308
0644
edit
dl
rm
cleanupEnableBackground.js
2301
0644
edit
dl
rm
cleanupIDs.js
6741
0644
edit
dl
rm
cleanupListOfValues.js
3605
0644
edit
dl
rm
cleanupNumericValues.js
2565
0644
edit
dl
rm
collapseGroups.js
2993
0644
edit
dl
rm
convertColors.js
3670
0644
edit
dl
rm
convertEllipseToCircle.js
895
0644
edit
dl
rm
convertPathData.js
30884
0644
edit
dl
rm
convertShapeToPath.js
4497
0644
edit
dl
rm
convertStyleToAttrs.js
4203
0644
edit
dl
rm
convertTransform.js
10871
0644
edit
dl
rm
inlineStyles.js
7880
0644
edit
dl
rm
mergePaths.js
2125
0644
edit
dl
rm
minifyStyles.js
4065
0755
edit
dl
rm
moveElemsAttrsToGroup.js
3388
0644
edit
dl
rm
moveGroupAttrsToElems.js
1850
0644
edit
dl
rm
prefixIds.js
5543
0755
edit
dl
rm
removeAttributesBySelector.js
1910
0644
edit
dl
rm
removeAttrs.js
4159
0644
edit
dl
rm
removeComments.js
508
0644
edit
dl
rm
removeDesc.js
767
0644
edit
dl
rm
removeDimensions.js
1327
0644
edit
dl
rm
removeDoctype.js
1030
0644
edit
dl
rm
removeEditorsNSData.js
1550
0644
edit
dl
rm
removeElementsByAttr.js
1932
0644
edit
dl
rm
removeEmptyAttrs.js
509
0644
edit
dl
rm
removeEmptyContainers.js
690
0644
edit
dl
rm
removeEmptyText.js
1125
0644
edit
dl
rm
removeHiddenElems.js
6618
0644
edit
dl
rm
removeMetadata.js
392
0644
edit
dl
rm
removeNonInheritableGroupAttrs.js
945
0644
edit
dl
rm
removeOffCanvasPaths.js
3166
0644
edit
dl
rm
removeRasterImages.js
558
0644
edit
dl
rm
removeScriptElement.js
423
0644
edit
dl
rm
removeStyleElement.js
426
0644
edit
dl
rm
removeTitle.js
411
0644
edit
dl
rm
removeUnknownsAndDefaults.js
4968
0644
edit
dl
rm
removeUnusedNS.js
2390
0644
edit
dl
rm
removeUselessDefs.js
1112
0644
edit
dl
rm
removeUselessStrokeAndFill.js
2712
0644
edit
dl
rm
removeViewBox.js
1139
0644
edit
dl
rm
removeXMLNS.js
591
0644
edit
dl
rm
removeXMLProcInst.js
487
0644
edit
dl
rm
reusePaths.js
6485
0644
edit
dl
rm
sortAttrs.js
1698
0644
edit
dl
rm
sortDefsChildren.js
1400
0644
edit
dl
rm
_collections.js
58397
0644
edit
dl
rm
_path.js
31742
0644
edit
dl
rm
_transforms.js
10263
0644
edit
dl
rm
Edit:
/var/www/cobraambalaj/node_modules/svgo/plugins/convertTransform.js
(10871B)
'use strict'; exports.type = 'perItem'; exports.active = true; exports.description = 'collapses multiple transformations and optimizes it'; exports.params = { convertToShorts: true, // degPrecision: 3, // transformPrecision (or matrix precision) - 2 by default floatPrecision: 3, transformPrecision: 5, matrixToTransform: true, shortTranslate: true, shortScale: true, shortRotate: true, removeUseless: true, collapseIntoOne: true, leadingZero: true, negativeExtraSpace: false }; var cleanupOutData = require('../lib/svgo/tools').cleanupOutData, transform2js = require('./_transforms.js').transform2js, transformsMultiply = require('./_transforms.js').transformsMultiply, matrixToTransform = require('./_transforms.js').matrixToTransform, degRound, floatRound, transformRound; /** * Convert matrices to the short aliases, * convert long translate, scale or rotate transform notations to the shorts ones, * convert transforms to the matrices and multiply them all into one, * remove useless transforms. * * @see http://www.w3.org/TR/SVG/coords.html#TransformMatrixDefined * * @param {Object} item current iteration item * @param {Object} params plugin params * @return {Boolean} if false, item will be filtered out * * @author Kir Belevich */ exports.fn = function(item, params) { if (item.elem) { // transform if (item.hasAttr('transform')) { convertTransform(item, 'transform', params); } // gradientTransform if (item.hasAttr('gradientTransform')) { convertTransform(item, 'gradientTransform', params); } // patternTransform if (item.hasAttr('patternTransform')) { convertTransform(item, 'patternTransform', params); } } }; /** * Main function. * * @param {Object} item input item * @param {String} attrName attribute name * @param {Object} params plugin params */ function convertTransform(item, attrName, params) { var data = transform2js(item.attr(attrName).value); params = definePrecision(data, params); if (params.collapseIntoOne && data.length > 1) { data = [transformsMultiply(data)]; } if (params.convertToShorts) { data = convertToShorts(data, params); } else { data.forEach(roundTransform); } if (params.removeUseless) { data = removeUseless(data); } if (data.length) { item.attr(attrName).value = js2transform(data, params); } else { item.removeAttr(attrName); } } /** * Defines precision to work with certain parts. * transformPrecision - for scale and four first matrix parameters (needs a better precision due to multiplying), * floatPrecision - for translate including two last matrix and rotate parameters, * degPrecision - for rotate and skew. By default it's equal to (rougly) * transformPrecision - 2 or floatPrecision whichever is lower. Can be set in params. * * @param {Array} transforms input array * @param {Object} params plugin params * @return {Array} output array */ function definePrecision(data, params) { /* jshint validthis: true */ var matrixData = data.reduce(getMatrixData, []), significantDigits = params.transformPrecision; // Clone params so it don't affect other elements transformations. params = Object.assign({}, params); // Limit transform precision with matrix one. Calculating with larger precision doesn't add any value. if (matrixData.length) { params.transformPrecision = Math.min(params.transformPrecision, Math.max.apply(Math, matrixData.map(floatDigits)) || params.transformPrecision); significantDigits = Math.max.apply(Math, matrixData.map(function(n) { return String(n).replace(/\D+/g, '').length; // Number of digits in a number. 123.45 → 5 })); } // No sense in angle precision more then number of significant digits in matrix. if (!('degPrecision' in params)) { params.degPrecision = Math.max(0, Math.min(params.floatPrecision, significantDigits - 2)); } floatRound = params.floatPrecision >= 1 && params.floatPrecision < 20 ? smartRound.bind(this, params.floatPrecision) : round; degRound = params.degPrecision >= 1 && params.floatPrecision < 20 ? smartRound.bind(this, params.degPrecision) : round; transformRound = params.transformPrecision >= 1 && params.floatPrecision < 20 ? smartRound.bind(this, params.transformPrecision) : round; return params; } /** * Gathers four first matrix parameters. * * @param {Array} a array of data * @param {Object} transform * @return {Array} output array */ function getMatrixData(a, b) { return b.name == 'matrix' ? a.concat(b.data.slice(0, 4)) : a; } /** * Returns number of digits after the point. 0.125 → 3 */ function floatDigits(n) { return (n = String(n)).slice(n.indexOf('.')).length - 1; } /** * Convert transforms to the shorthand alternatives. * * @param {Array} transforms input array * @param {Object} params plugin params * @return {Array} output array */ function convertToShorts(transforms, params) { for(var i = 0; i < transforms.length; i++) { var transform = transforms[i]; // convert matrix to the short aliases if ( params.matrixToTransform && transform.name === 'matrix' ) { var decomposed = matrixToTransform(transform, params); if (decomposed != transform && js2transform(decomposed, params).length <= js2transform([transform], params).length) { transforms.splice.apply(transforms, [i, 1].concat(decomposed)); } transform = transforms[i]; } // fixed-point numbers // 12.754997 → 12.755 roundTransform(transform); // convert long translate transform notation to the shorts one // translate(10 0) → translate(10) if ( params.shortTranslate && transform.name === 'translate' && transform.data.length === 2 && !transform.data[1] ) { transform.data.pop(); } // convert long scale transform notation to the shorts one // scale(2 2) → scale(2) if ( params.shortScale && transform.name === 'scale' && transform.data.length === 2 && transform.data[0] === transform.data[1] ) { transform.data.pop(); } // convert long rotate transform notation to the short one // translate(cx cy) rotate(a) translate(-cx -cy) → rotate(a cx cy) if ( params.shortRotate && transforms[i - 2] && transforms[i - 2].name === 'translate' && transforms[i - 1].name === 'rotate' && transforms[i].name === 'translate' && transforms[i - 2].data[0] === -transforms[i].data[0] && transforms[i - 2].data[1] === -transforms[i].data[1] ) { transforms.splice(i - 2, 3, { name: 'rotate', data: [ transforms[i - 1].data[0], transforms[i - 2].data[0], transforms[i - 2].data[1] ] }); // splice compensation i -= 2; transform = transforms[i]; } } return transforms; } /** * Remove useless transforms. * * @param {Array} transforms input array * @return {Array} output array */ function removeUseless(transforms) { return transforms.filter(function(transform) { // translate(0), rotate(0[, cx, cy]), skewX(0), skewY(0) if ( ['translate', 'rotate', 'skewX', 'skewY'].indexOf(transform.name) > -1 && (transform.data.length == 1 || transform.name == 'rotate') && !transform.data[0] || // translate(0, 0) transform.name == 'translate' && !transform.data[0] && !transform.data[1] || // scale(1) transform.name == 'scale' && transform.data[0] == 1 && (transform.data.length < 2 || transform.data[1] == 1) || // matrix(1 0 0 1 0 0) transform.name == 'matrix' && transform.data[0] == 1 && transform.data[3] == 1 && !(transform.data[1] || transform.data[2] || transform.data[4] || transform.data[5]) ) { return false; } return true; }); } /** * Convert transforms JS representation to string. * * @param {Array} transformJS JS representation array * @param {Object} params plugin params * @return {String} output string */ function js2transform(transformJS, params) { var transformString = ''; // collect output value string transformJS.forEach(function(transform) { roundTransform(transform); transformString += (transformString && ' ') + transform.name + '(' + cleanupOutData(transform.data, params) + ')'; }); return transformString; } function roundTransform(transform) { switch (transform.name) { case 'translate': transform.data = floatRound(transform.data); break; case 'rotate': transform.data = degRound(transform.data.slice(0, 1)).concat(floatRound(transform.data.slice(1))); break; case 'skewX': case 'skewY': transform.data = degRound(transform.data); break; case 'scale': transform.data = transformRound(transform.data); break; case 'matrix': transform.data = transformRound(transform.data.slice(0, 4)).concat(floatRound(transform.data.slice(4))); break; } return transform; } /** * Rounds numbers in array. * * @param {Array} data input data array * @return {Array} output data array */ function round(data) { return data.map(Math.round); } /** * Decrease accuracy of floating-point numbers * in transforms keeping a specified number of decimals. * Smart rounds values like 2.349 to 2.35. * * @param {Number} fixed number of decimals * @param {Array} data input data array * @return {Array} output data array */ function smartRound(precision, data) { for (var i = data.length, tolerance = +Math.pow(.1, precision).toFixed(precision); i--;) { if (data[i].toFixed(precision) != data[i]) { var rounded = +data[i].toFixed(precision - 1); data[i] = +Math.abs(rounded - data[i]).toFixed(precision + 1) >= tolerance ? +data[i].toFixed(precision) : rounded; } } return data; }
Save
cmd:
run