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

37 lines
1.2 KiB
JavaScript

import { badAttributes, badSoftwareAttributes, badAttributePrefixes, tagSpecificPresentationalAttributes } from '../data/attributes.mjs';
import { defsTag } from '../data/tags.mjs';
import { parseSVG } from '../parse.mjs';
function removeBadAttributes(svg) {
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" || badAttributes.has(attr) || badSoftwareAttributes.has(attr) || badAttributePrefixes.has(attr.split("-").shift())) {
$element.removeAttr(attr);
return;
}
if (defsTag.has(tagName) && !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);
}
});
});
}
export { removeBadAttributes };