From c06f7ee0a40255214c477e13d9b956a7e07c2900 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sat, 14 Oct 2023 15:05:55 +0800 Subject: postcss,(plugins): nanocss, postcss-preset-env --- node_modules/svgo/plugins/removeEmptyContainers.js | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 node_modules/svgo/plugins/removeEmptyContainers.js (limited to 'node_modules/svgo/plugins/removeEmptyContainers.js') diff --git a/node_modules/svgo/plugins/removeEmptyContainers.js b/node_modules/svgo/plugins/removeEmptyContainers.js new file mode 100644 index 00000000..d803fc9c --- /dev/null +++ b/node_modules/svgo/plugins/removeEmptyContainers.js @@ -0,0 +1,56 @@ +'use strict'; + +const { detachNodeFromParent } = require('../lib/xast.js'); +const { elemsGroups } = require('./_collections.js'); + +exports.name = 'removeEmptyContainers'; +exports.description = 'removes empty container elements'; + +/** + * Remove empty containers. + * + * @see https://www.w3.org/TR/SVG11/intro.html#TermContainerElement + * + * @example + * + * + * @example + * + * + * @author Kir Belevich + * + * @type {import('./plugins-types').Plugin<'removeEmptyContainers'>} + */ +exports.fn = () => { + return { + element: { + exit: (node, parentNode) => { + // remove only empty non-svg containers + if ( + node.name === 'svg' || + elemsGroups.container.includes(node.name) === false || + node.children.length !== 0 + ) { + return; + } + // empty patterns may contain reusable configuration + if ( + node.name === 'pattern' && + Object.keys(node.attributes).length !== 0 + ) { + return; + } + // The may not have content, but the filter may cause a rectangle + // to be created and filled with pattern. + if (node.name === 'g' && node.attributes.filter != null) { + return; + } + // empty hides masked element + if (node.name === 'mask' && node.attributes.id != null) { + return; + } + detachNodeFromParent(node, parentNode); + }, + }, + }; +}; -- cgit v1.2.3