summaryrefslogtreecommitdiff
path: root/node_modules/svgo/plugins/removeEmptyText.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/svgo/plugins/removeEmptyText.js')
-rw-r--r--node_modules/svgo/plugins/removeEmptyText.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/node_modules/svgo/plugins/removeEmptyText.js b/node_modules/svgo/plugins/removeEmptyText.js
new file mode 100644
index 00000000..5f6db3d3
--- /dev/null
+++ b/node_modules/svgo/plugins/removeEmptyText.js
@@ -0,0 +1,51 @@
+'use strict';
+
+const { detachNodeFromParent } = require('../lib/xast.js');
+
+exports.name = 'removeEmptyText';
+exports.description = 'removes empty <text> elements';
+
+/**
+ * Remove empty Text elements.
+ *
+ * @see https://www.w3.org/TR/SVG11/text.html
+ *
+ * @example
+ * Remove empty text element:
+ * <text/>
+ *
+ * Remove empty tspan element:
+ * <tspan/>
+ *
+ * Remove tref with empty xlink:href attribute:
+ * <tref xlink:href=""/>
+ *
+ * @author Kir Belevich
+ *
+ * @type {import('./plugins-types').Plugin<'removeEmptyText'>}
+ */
+exports.fn = (root, params) => {
+ const { text = true, tspan = true, tref = true } = params;
+ return {
+ element: {
+ enter: (node, parentNode) => {
+ // Remove empty text element
+ if (text && node.name === 'text' && node.children.length === 0) {
+ detachNodeFromParent(node, parentNode);
+ }
+ // Remove empty tspan element
+ if (tspan && node.name === 'tspan' && node.children.length === 0) {
+ detachNodeFromParent(node, parentNode);
+ }
+ // Remove tref with empty xlink:href attribute
+ if (
+ tref &&
+ node.name === 'tref' &&
+ node.attributes['xlink:href'] == null
+ ) {
+ detachNodeFromParent(node, parentNode);
+ }
+ },
+ },
+ };
+};