diff --git a/plugins/removeUselessDefs.js b/plugins/removeUselessDefs.js index 5d19810e3..9091eeb89 100644 --- a/plugins/removeUselessDefs.js +++ b/plugins/removeUselessDefs.js @@ -21,7 +21,11 @@ exports.fn = () => { return { element: { enter: (node, parentNode) => { - if (node.name === 'defs') { + if ( + node.name === 'defs' || + (elemsGroups.nonRendering.has(node.name) && + node.attributes.id == null) + ) { /** * @type {XastElement[]} */ @@ -38,11 +42,6 @@ exports.fn = () => { }); } node.children = usefulNodes; - } else if ( - elemsGroups.nonRendering.has(node.name) && - node.attributes.id == null - ) { - detachNodeFromParent(node, parentNode); } }, }, diff --git a/test/plugins/removeUselessDefs.04.svg b/test/plugins/removeUselessDefs.04.svg new file mode 100644 index 000000000..84e729072 --- /dev/null +++ b/test/plugins/removeUselessDefs.04.svg @@ -0,0 +1,23 @@ +Don't remove non-rendering elements if children have IDs. + +=== + + + + + + + + + + +@@@ + + + + + + + + + \ No newline at end of file diff --git a/test/plugins/removeUselessDefs.05.svg b/test/plugins/removeUselessDefs.05.svg new file mode 100644 index 000000000..ef3557e0a --- /dev/null +++ b/test/plugins/removeUselessDefs.05.svg @@ -0,0 +1,23 @@ +Don't remove used symbols. + +=== + + + + + + + + + + +@@@ + + + + + + + + + \ No newline at end of file