UNPKG

zss-engine

Version:
40 lines (39 loc) 1.38 kB
export function isHashInStyleSheets(hash) { const sheets = Array.from(document.styleSheets); function checkRule(rule) { if (rule instanceof CSSStyleRule && rule.selectorText) { return hasHashInSelector(rule.selectorText, hash); } if (rule instanceof CSSMediaRule) { return Array.from(rule.cssRules).some(checkRule); } if (rule instanceof CSSContainerRule) { return Array.from(rule.cssRules).some(checkRule); } if (rule instanceof CSSSupportsRule) { return Array.from(rule.cssRules).some(checkRule); } if ('cssRules' in rule && rule.cssRules) { return Array.from(rule.cssRules).some(checkRule); } return false; } function hasHashInSelector(selectorText, hash) { const selectors = selectorText.split(',').map(s => s.trim()); return selectors.some(selector => { const classPattern = new RegExp(`\\.${escapeRegExp(hash)}(?![\\w-])`); return classPattern.test(selector); }); } function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); } return sheets.some(sheet => { try { return Array.from(sheet.cssRules).some(checkRule); } catch (_err) { return false; } }); }