Merge pull request #2114 from PR0M3TH3AN/perf/optimize-dynamic-styles-release-9977107167890684876

⚡ Optimize dynamicStyles releaseScope performance
This commit is contained in:
thePR0M3TH3AN authored and GitHub committed 2026-02-05 14:45:56 -05:00
commit a0213776f3
1 file changed
+22 -23
+22 -23
View File
@@ -121,19 +121,6 @@ function insertEmptyRule(sheet, selectorText) {
}
}
function findRuleIndex(sheet, rule) {
if (!sheet || !rule) {
return -1;
}
const { cssRules } = sheet;
for (let index = 0; index < cssRules.length; index += 1) {
if (cssRules[index] === rule) {
return index;
}
}
return -1;
}
function normalizeSelectors(selectors) {
if (!Array.isArray(selectors)) {
return [DEFAULT_SELECTOR];
@@ -242,18 +229,30 @@ export function releaseScope(scopeId) {
const { sheet } = scope.manager;
let removed = false;
const rulesToDelete = new Set();
for (const record of scope.rules) {
const rule = record.rule;
if (!rule) {
continue;
if (record.rule) {
rulesToDelete.add(record.rule);
}
const index = findRuleIndex(sheet, rule);
if (index >= 0) {
try {
sheet.deleteRule(index);
removed = true;
} catch (error) {
// Ignore deletion failures.
}
if (rulesToDelete.size > 0) {
const { cssRules } = sheet;
if (cssRules) {
for (let index = cssRules.length - 1; index >= 0; index -= 1) {
const rule = cssRules[index];
if (rulesToDelete.has(rule)) {
try {
sheet.deleteRule(index);
removed = true;
rulesToDelete.delete(rule);
} catch (error) {
// Ignore deletion failures.
}
if (rulesToDelete.size === 0) {
break;
}
}
}
}
}