41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
import { badAttributes, badSoftwareAttributes, badAttributePrefixes } from '../data/attributes.mjs';
|
|
import { parseSVGStyle } from '../parse-style.mjs';
|
|
import { runSVGO } from '../../optimise/svgo.mjs';
|
|
import '../data/tags.mjs';
|
|
import '../../css/parse.mjs';
|
|
import '../../css/parser/tokens.mjs';
|
|
import '../../css/parser/error.mjs';
|
|
import '../../css/parser/strings.mjs';
|
|
import '../../css/parser/text.mjs';
|
|
import '../../css/parser/export.mjs';
|
|
import '../../css/parser/tree.mjs';
|
|
import '../parse.mjs';
|
|
import 'svgo';
|
|
import '@iconify/utils/lib/svg/id';
|
|
|
|
function convertStyleToAttrs(svg) {
|
|
let hasStyle = false;
|
|
parseSVGStyle(svg, (item) => {
|
|
if (item.type !== "inline" && item.type !== "global") {
|
|
return item.value;
|
|
}
|
|
const prop = item.prop;
|
|
if (
|
|
// Attributes / properties now allowed
|
|
badAttributes.has(prop) || badSoftwareAttributes.has(prop) || badAttributePrefixes.has(prop.split("-").shift())
|
|
) {
|
|
return;
|
|
}
|
|
hasStyle = true;
|
|
return item.value;
|
|
});
|
|
if (!hasStyle) {
|
|
return;
|
|
}
|
|
runSVGO(svg, {
|
|
plugins: ["convertStyleToAttrs", "inlineStyles"],
|
|
multipass: true
|
|
});
|
|
}
|
|
|
|
export { convertStyleToAttrs };
|