IOweb/node_modules/@iconify/tools/lib/svg/cleanup/attribs.cjs
2026-07-03 15:07:38 -05:00

39 lines
1.3 KiB
JavaScript

'use strict';
const svg_data_attributes = require('../data/attributes.cjs');
const svg_data_tags = require('../data/tags.cjs');
const svg_parse = require('../parse.cjs');
function removeBadAttributes(svg) {
svg_parse.parseSVG(svg, (item) => {
const tagName = item.tagName;
const attribs = item.element.attribs;
const $element = item.$element;
Object.keys(attribs).forEach((attr) => {
if (attr.slice(0, 2) === "on" || svg_data_attributes.badAttributes.has(attr) || svg_data_attributes.badSoftwareAttributes.has(attr) || svg_data_attributes.badAttributePrefixes.has(attr.split("-").shift())) {
$element.removeAttr(attr);
return;
}
if (svg_data_tags.defsTag.has(tagName) && !svg_data_attributes.tagSpecificPresentationalAttributes[tagName].has(attr)) {
$element.removeAttr(attr);
return;
}
const nsParts = attr.split(":");
if (nsParts.length > 1) {
const namespace = nsParts.shift();
const newAttr = nsParts.join(":");
switch (namespace) {
case "xlink": {
if (attribs[newAttr] === void 0) {
$element.attr(newAttr, attribs[attr]);
}
break;
}
}
$element.removeAttr(attr);
}
});
});
}
exports.removeBadAttributes = removeBadAttributes;