PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` 'use strict'; const { detachNodeFromParent } = require('../lib/xast.js'); exports.name = 'removeElementsByAttr'; exports.type = 'visitor'; exports.active = false; exports.description = 'removes arbitrary elements by ID or className (disabled by default)'; /** * Remove arbitrary SVG elements by ID or className. * * @example id * > single: remove element with ID of `elementID` * --- * removeElementsByAttr: * id: 'elementID' * * > list: remove multiple elements by ID * --- * removeElementsByAttr: * id: * - 'elementID' * - 'anotherID' * * @example class * > single: remove all elements with class of `elementClass` * --- * removeElementsByAttr: * class: 'elementClass' * * > list: remove all elements with class of `elementClass` or `anotherClass` * --- * removeElementsByAttr: * class: * - 'elementClass' * - 'anotherClass' * * @author Eli Dupuis (@elidupuis) * * @type {import('../lib/types').Plugin<{ * id?: string | Array, * class?: string | Array * }>} */ exports.fn = (root, params) => { const ids = params.id == null ? [] : Array.isArray(params.id) ? params.id : [params.id]; const classes = params.class == null ? [] : Array.isArray(params.class) ? params.class : [params.class]; return { element: { enter: (node, parentNode) => { // remove element if it's `id` matches configured `id` params if (node.attributes.id != null && ids.length !== 0) { if (ids.includes(node.attributes.id)) { detachNodeFromParent(node, parentNode); } } // remove element if it's `class` contains any of the configured `class` params if (node.attributes.class && classes.length !== 0) { const classList = node.attributes.class.split(' '); for (const item of classes) { if (classList.includes(item)) { detachNodeFromParent(node, parentNode); break; } } } }, }, }; };