source: frontend/node_modules/svgo/plugins/mergePaths.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.1 KB
RevLine 
[9af201e]1'use strict';
2
3exports.type = 'perItem';
4
5exports.active = true;
6
7exports.description = 'merges multiple paths in one if possible';
8
9exports.params = {
10 collapseRepeated: true,
11 force: false,
12 leadingZero: true,
13 negativeExtraSpace: true,
14 noSpaceAfterFlags: true
15};
16
17var path2js = require('./_path.js').path2js,
18 js2path = require('./_path.js').js2path,
19 intersects = require('./_path.js').intersects;
20
21/**
22 * Merge multiple Paths into one.
23 *
24 * @param {Object} item current iteration item
25 * @return {Boolean} if false, item will be filtered out
26 *
27 * @author Kir Belevich, Lev Solntsev
28 */
29exports.fn = function(item, params) {
30
31 if (!item.isElem() || item.isEmpty()) return;
32
33 var prevContentItem = null,
34 prevContentItemKeys = null;
35
36 item.content = item.content.filter(function(contentItem) {
37
38 if (prevContentItem &&
39 prevContentItem.isElem('path') &&
40 prevContentItem.isEmpty() &&
41 prevContentItem.hasAttr('d') &&
42 contentItem.isElem('path') &&
43 contentItem.isEmpty() &&
44 contentItem.hasAttr('d')
45 ) {
46
47 if (!prevContentItemKeys) {
48 prevContentItemKeys = Object.keys(prevContentItem.attrs);
49 }
50
51 var contentItemAttrs = Object.keys(contentItem.attrs),
52 equalData = prevContentItemKeys.length == contentItemAttrs.length &&
53 contentItemAttrs.every(function(key) {
54 return key == 'd' ||
55 prevContentItem.hasAttr(key) &&
56 prevContentItem.attr(key).value == contentItem.attr(key).value;
57 }),
58 prevPathJS = path2js(prevContentItem),
59 curPathJS = path2js(contentItem);
60
61 if (equalData && (params.force || !intersects(prevPathJS, curPathJS))) {
62 js2path(prevContentItem, prevPathJS.concat(curPathJS), params);
63 return false;
64 }
65 }
66
67 prevContentItem = contentItem;
68 prevContentItemKeys = null;
69 return true;
70
71 });
72
73};
Note: See TracBrowser for help on using the repository browser.