feat: enhance SVG color application by removing existing fill attributes before adding new ones

This commit is contained in:
sHa
2025-05-29 23:17:53 +03:00
parent e33d296aab
commit 46fc2915b1

View File

@@ -67,11 +67,13 @@ function applySvgColors(svgContent, colorSet, targets) {
if (selector.startsWith('#')) {
// ID selector - replace fill/stroke for specific element
const elementId = selector.substring(1);
const idRegex = new RegExp(`(id="${elementId}"[^>]*?)fill="[^"]*"`, 'g');
modifiedSvg = modifiedSvg.replace(idRegex, `$1fill="${color}"`);
// If no fill attribute, add it
const addFillRegex = new RegExp(`(id="${elementId}"[^>]*?)(?!.*fill=)([^>]*>)`, 'g');
// First, remove any existing fill attributes for this element
const removeExistingFillRegex = new RegExp(`(id="${elementId}"[^>]*?)\\s*fill="[^"]*"`, 'g');
modifiedSvg = modifiedSvg.replace(removeExistingFillRegex, '$1');
// Then add the new fill attribute
const addFillRegex = new RegExp(`(id="${elementId}"[^>]*?)(\s*>)`, 'g');
modifiedSvg = modifiedSvg.replace(addFillRegex, `$1 fill="${color}"$2`);
} else {
// Default: replace all fill attributes (fallback)