'use strict'; const { detachNodeFromParent } = require('../lib/xast.js'); exports.name = 'removeDesc'; exports.type = 'visitor'; exports.active = true; exports.description = 'removes '; const standardDescs = /^(Created with|Created using)/; /** * Removes . * Removes only standard editors content or empty elements 'cause it can be used for accessibility. * Enable parameter 'removeAny' to remove any description. * * https://developer.mozilla.org/en-US/docs/Web/SVG/Element/desc * * @author Daniel Wabyick * * @type {import('../lib/types').Plugin<{ removeAny?: boolean }>} */ exports.fn = (root, params) => { const { removeAny = true } = params; return { element: { enter: (node, parentNode) => { if (node.name === 'desc') { if ( removeAny || node.children.length === 0 || (node.children[0].type === 'text' && standardDescs.test(node.children[0].value)) ) { detachNodeFromParent(node, parentNode); } } }, }, }; };