mirror of
https://github.com/penpot/penpot.git
synced 2025-02-11 01:28:30 -05:00
✨ Make svgclean behave exactly as svgo.
This commit is contained in:
parent
3135de3eb3
commit
031123b2ca
5 changed files with 356 additions and 97 deletions
File diff suppressed because one or more lines are too long
44
vendor/svgclean/main.js
vendored
44
vendor/svgclean/main.js
vendored
|
@ -1,41 +1,13 @@
|
|||
const plugins = {
|
||||
// prefixIds: true,
|
||||
cleanupAttrs: true,
|
||||
// cleanupEnableBackground: true,
|
||||
// cleanupIDs: true,
|
||||
cleanupNumericValues: true,
|
||||
collapseGroups: true,
|
||||
convertColors: true,
|
||||
convertEllipseToCircle: true,
|
||||
convertPathData: true,
|
||||
convertShapeToPath: true,
|
||||
convertStyleToAttrs: true,
|
||||
convertTransform: true,
|
||||
inlineStyles: true,
|
||||
mergePaths: false,
|
||||
minifyStyles: true,
|
||||
removeComments: true,
|
||||
removeDesc: true,
|
||||
removeDimensions: false,
|
||||
removeDoctype: true,
|
||||
removeEditorsNSData: true,
|
||||
removeEmptyAttrs: true,
|
||||
removeEmptyContainers: true,
|
||||
removeEmptyText: true,
|
||||
removeHiddenElems: true,
|
||||
removeNonInheritableGroupAttrs: true,
|
||||
removeRasterImages: true,
|
||||
removeTitle: true,
|
||||
removeUnknownsAndDefaults: true,
|
||||
removeUnusedNS: true,
|
||||
removeUselessDefs: true,
|
||||
removeUselessStrokeAndFill: true,
|
||||
removeXMLNS: true,
|
||||
removeXMLProcInst: true
|
||||
};
|
||||
const plugins = [
|
||||
{removeDimensions: true},
|
||||
{removeXMLNS: true},
|
||||
{removeScriptElement: true},
|
||||
{removeViewBox: false},
|
||||
{moveElemsAttrsToGroup: false}
|
||||
];
|
||||
|
||||
const svgc = require("./src/svgclean.js");
|
||||
const inst = svgc.configure({plugins});
|
||||
const inst = svgc.configure({plugins, multipass: undefined});
|
||||
|
||||
exports.optimize = function(data) {
|
||||
return svgc.optimize(inst, data)
|
||||
|
|
268
vendor/svgclean/package-lock.json
generated
vendored
268
vendor/svgclean/package-lock.json
generated
vendored
|
@ -4,6 +4,12 @@
|
|||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@types/q": {
|
||||
"version": "1.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
|
||||
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==",
|
||||
"dev": true
|
||||
},
|
||||
"@ungap/promise-all-settled": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
|
||||
|
@ -701,6 +707,75 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"coa": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
|
||||
"integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/q": "^1.5.1",
|
||||
"chalk": "^2.4.1",
|
||||
"q": "^1.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-convert": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^3.2.1",
|
||||
"escape-string-regexp": "^1.0.5",
|
||||
"supports-color": "^5.3.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "1.9.3",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-name": "1.1.3"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||
"dev": true
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
||||
"dev": true
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
|
||||
"dev": true
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^3.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
|
@ -2615,6 +2690,12 @@
|
|||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
|
||||
"dev": true
|
||||
},
|
||||
"q": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
|
||||
"integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
|
||||
"dev": true
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.5.2",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
||||
|
@ -3170,6 +3251,193 @@
|
|||
"has-flag": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"svgo": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
|
||||
"integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "^2.4.1",
|
||||
"coa": "^2.0.2",
|
||||
"css-select": "^2.0.0",
|
||||
"css-select-base-adapter": "^0.1.1",
|
||||
"css-tree": "1.0.0-alpha.37",
|
||||
"csso": "^4.0.2",
|
||||
"js-yaml": "^3.13.1",
|
||||
"mkdirp": "~0.5.1",
|
||||
"object.values": "^1.1.0",
|
||||
"sax": "~1.2.4",
|
||||
"stable": "^0.1.8",
|
||||
"unquote": "~1.1.1",
|
||||
"util.promisify": "~1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-convert": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^3.2.1",
|
||||
"escape-string-regexp": "^1.0.5",
|
||||
"supports-color": "^5.3.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "1.9.3",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-name": "1.1.3"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||
"dev": true
|
||||
},
|
||||
"css-select": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
|
||||
"integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"boolbase": "^1.0.0",
|
||||
"css-what": "^3.2.1",
|
||||
"domutils": "^1.7.0",
|
||||
"nth-check": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"css-tree": {
|
||||
"version": "1.0.0-alpha.37",
|
||||
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
|
||||
"integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mdn-data": "2.0.4",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"css-what": {
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz",
|
||||
"integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
|
||||
"dev": true
|
||||
},
|
||||
"dom-serializer": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
|
||||
"integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"domelementtype": "^2.0.1",
|
||||
"entities": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"domelementtype": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz",
|
||||
"integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"domelementtype": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
|
||||
"integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
|
||||
"dev": true
|
||||
},
|
||||
"domutils": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
|
||||
"integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"dom-serializer": "0",
|
||||
"domelementtype": "1"
|
||||
}
|
||||
},
|
||||
"es-abstract": {
|
||||
"version": "1.17.7",
|
||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz",
|
||||
"integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"es-to-primitive": "^1.2.1",
|
||||
"function-bind": "^1.1.1",
|
||||
"has": "^1.0.3",
|
||||
"has-symbols": "^1.0.1",
|
||||
"is-callable": "^1.2.2",
|
||||
"is-regex": "^1.1.1",
|
||||
"object-inspect": "^1.8.0",
|
||||
"object-keys": "^1.1.1",
|
||||
"object.assign": "^4.1.1",
|
||||
"string.prototype.trimend": "^1.0.1",
|
||||
"string.prototype.trimstart": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
||||
"dev": true
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
|
||||
"dev": true
|
||||
},
|
||||
"mdn-data": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
|
||||
"integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
|
||||
"dev": true
|
||||
},
|
||||
"nth-check": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
|
||||
"integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"boolbase": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"util.promisify": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
|
||||
"integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"define-properties": "^1.1.3",
|
||||
"es-abstract": "^1.17.2",
|
||||
"has-symbols": "^1.0.1",
|
||||
"object.getownpropertydescriptors": "^2.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"syntax-error": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
|
||||
|
|
2
vendor/svgclean/package.json
vendored
2
vendor/svgclean/package.json
vendored
|
@ -9,7 +9,6 @@
|
|||
"build": "browserify -r./main.js:svgclean -o bundle.js",
|
||||
"minify": "terser bundle.js -c -m -o bundle.min.js",
|
||||
"dist": "npm run build && npm run minify"
|
||||
|
||||
},
|
||||
"dependencies": {
|
||||
"chalk": "^4.1.0",
|
||||
|
@ -33,6 +32,7 @@
|
|||
"mocha-istanbul": "^0.3.0",
|
||||
"mock-stdin": "^1.0.0",
|
||||
"should": "~13.2.3",
|
||||
"svgo": "^1.3.2",
|
||||
"terser": "^5.5.1"
|
||||
},
|
||||
"license": "MIT"
|
||||
|
|
135
vendor/svgclean/src/svgclean/config.js
vendored
135
vendor/svgclean/src/svgclean/config.js
vendored
|
@ -108,46 +108,57 @@ const builtinPlugins = {
|
|||
sortDefsChildren,
|
||||
};
|
||||
|
||||
const defaultPlugins = {
|
||||
prefixIds: true,
|
||||
cleanupAttrs: true,
|
||||
cleanupEnableBackground: true,
|
||||
cleanupIDs: true,
|
||||
cleanupNumericValues: true,
|
||||
collapseGroups: true,
|
||||
convertColors: true,
|
||||
convertEllipseToCircle: true,
|
||||
convertPathData: true,
|
||||
convertShapeToPath: true,
|
||||
convertStyleToAttrs: true,
|
||||
convertTransform: true,
|
||||
inlineStyles: true,
|
||||
mergePaths: false,
|
||||
minifyStyles: true,
|
||||
moveElemsAttrsToGroup: false,
|
||||
moveGroupAttrsToElems: false,
|
||||
removeComments: true,
|
||||
removeDesc: true,
|
||||
removeDimensions: false,
|
||||
removeDoctype: true,
|
||||
removeEditorsNSData: true,
|
||||
removeEmptyAttrs: true,
|
||||
removeEmptyContainers: true,
|
||||
removeEmptyText: true,
|
||||
removeHiddenElems: true,
|
||||
removeNonInheritableGroupAttrs: true,
|
||||
removeRasterImages: true,
|
||||
removeTitle: true,
|
||||
removeUnknownsAndDefaults: true,
|
||||
removeUnusedNS: true,
|
||||
removeUselessDefs: true,
|
||||
removeUselessStrokeAndFill: true,
|
||||
removeViewBox: false,
|
||||
removeXMLNS: true,
|
||||
removeXMLProcInst: true,
|
||||
sortAttrs: false,
|
||||
sortDefsChildren: true
|
||||
};
|
||||
const defaultPlugins = [
|
||||
"removeDoctype",
|
||||
"removeXMLProcInst",
|
||||
"removeComments",
|
||||
"removeMetadata",
|
||||
"removeXMLNS",
|
||||
"removeEditorsNSData",
|
||||
"cleanupAttrs",
|
||||
"inlineStyles",
|
||||
"minifyStyles",
|
||||
"convertStyleToAttrs",
|
||||
"cleanupIDs",
|
||||
"prefixIds",
|
||||
"removeRasterImages",
|
||||
"removeUselessDefs",
|
||||
"cleanupNumericValues",
|
||||
"cleanupListOfValues",
|
||||
"convertColors",
|
||||
"removeUnknownsAndDefaults",
|
||||
"removeNonInheritableGroupAttrs",
|
||||
"removeUselessStrokeAndFill",
|
||||
"removeViewBox",
|
||||
"cleanupEnableBackground",
|
||||
"removeHiddenElems",
|
||||
"removeEmptyText",
|
||||
"convertShapeToPath",
|
||||
"convertEllipseToCircle",
|
||||
"moveElemsAttrsToGroup",
|
||||
"moveGroupAttrsToElems",
|
||||
"collapseGroups",
|
||||
"convertPathData",
|
||||
"convertTransform",
|
||||
"removeEmptyAttrs",
|
||||
"removeEmptyContainers",
|
||||
"mergePaths",
|
||||
"removeUnusedNS",
|
||||
"sortAttrs",
|
||||
"sortDefsChildren",
|
||||
"removeTitle",
|
||||
"removeDesc",
|
||||
"removeDimensions",
|
||||
"removeAttrs",
|
||||
"removeAttributesBySelector",
|
||||
"removeElementsByAttr",
|
||||
"addClassesToSVGElement",
|
||||
"removeStyleElement",
|
||||
"removeScriptElement",
|
||||
"addAttributesToSVGElement",
|
||||
"removeOffCanvasPaths",
|
||||
"reusePaths"
|
||||
];
|
||||
|
||||
function optimizePlugins(plugins) {
|
||||
let prev;
|
||||
|
@ -163,27 +174,35 @@ function optimizePlugins(plugins) {
|
|||
}
|
||||
|
||||
exports.loadPlugins = function(config={}) {
|
||||
let plugins = Object.assign({}, config.plugins || defaultPlugins);
|
||||
let configuredPlugins = [];
|
||||
let configured = [];
|
||||
|
||||
for (let key of Object.keys(plugins)) {
|
||||
let pluginOpt = plugins[key];
|
||||
let plugin = null;
|
||||
|
||||
if (typeof pluginOpt === "object") {
|
||||
plugin = Object.assign({}, builtinPlugins[key]);
|
||||
plugin.params = Object.assign({}, pluginOpt);
|
||||
} else if (pluginOpt === true) {
|
||||
plugin = Object.assign({}, builtinPlugins[key]);
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
plugin.active = true;
|
||||
configuredPlugins.push(plugin);
|
||||
for (let name of defaultPlugins) {
|
||||
const plugin = Object.assign({}, builtinPlugins[name]);
|
||||
plugin.name = name;
|
||||
configured.push(plugin);
|
||||
}
|
||||
|
||||
return optimizePlugins(configuredPlugins);
|
||||
for (let item of config.plugins || []) {
|
||||
const name = Object.keys(item)[0];
|
||||
const opts = item[name];
|
||||
|
||||
if (typeof opts === "object") {
|
||||
configured.forEach(function(plugin) {
|
||||
if (plugin.name === name) {
|
||||
plugin.active = true;
|
||||
plugin.params = Object.assign({}, plugin.params, opts);
|
||||
}
|
||||
});
|
||||
} else if (typeof opts === "boolean") {
|
||||
configured.forEach(function(plugin) {
|
||||
if (plugin.name === name) {
|
||||
plugin.active = opts;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return optimizePlugins(configured);
|
||||
};
|
||||
|
||||
exports.executePlugins = function(plugins, data, info) {
|
||||
|
|
Loading…
Add table
Reference in a new issue