aboutsummaryrefslogtreecommitdiff
path: root/node_modules/svgo/plugins/removeUselessDefs.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/svgo/plugins/removeUselessDefs.js')
-rw-r--r--node_modules/svgo/plugins/removeUselessDefs.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/node_modules/svgo/plugins/removeUselessDefs.js b/node_modules/svgo/plugins/removeUselessDefs.js
new file mode 100644
index 00000000..b8c97a52
--- /dev/null
+++ b/node_modules/svgo/plugins/removeUselessDefs.js
@@ -0,0 +1,51 @@
+'use strict';
+
+exports.type = 'perItem';
+
+exports.active = true;
+
+exports.description = 'removes elements in <defs> without id';
+
+var nonRendering = require('./_collections').elemsGroups.nonRendering,
+ defs;
+
+/**
+ * Removes content of defs and properties that aren't rendered directly without ids.
+ *
+ * @param {Object} item current iteration item
+ * @return {Boolean} if false, item will be filtered out
+ *
+ * @author Lev Solntsev
+ */
+exports.fn = function(item) {
+
+ if (item.isElem('defs')) {
+
+ defs = item;
+ item.content = (item.content || []).reduce(getUsefulItems, []);
+
+ if (item.isEmpty()) return false;
+
+ } else if (item.isElem(nonRendering) && !item.hasAttr('id')) {
+
+ return false;
+
+ }
+
+};
+
+function getUsefulItems(usefulItems, item) {
+
+ if (item.hasAttr('id') || item.isElem('style')) {
+
+ usefulItems.push(item);
+ item.parentNode = defs;
+
+ } else if (!item.isEmpty()) {
+
+ item.content.reduce(getUsefulItems, usefulItems);
+
+ }
+
+ return usefulItems;
+}