zss-engine 0.2.77 → 0.2.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,9 +3,37 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isHashInStyleSheets = isHashInStyleSheets;
4
4
  function isHashInStyleSheets(hash) {
5
5
  const sheets = Array.from(document.styleSheets);
6
+ function checkRule(rule) {
7
+ if (rule instanceof CSSStyleRule && rule.selectorText) {
8
+ return hasHashInSelector(rule.selectorText, hash);
9
+ }
10
+ if (rule instanceof CSSMediaRule) {
11
+ return Array.from(rule.cssRules).some(checkRule);
12
+ }
13
+ if (rule instanceof CSSContainerRule) {
14
+ return Array.from(rule.cssRules).some(checkRule);
15
+ }
16
+ if (rule instanceof CSSSupportsRule) {
17
+ return Array.from(rule.cssRules).some(checkRule);
18
+ }
19
+ if ('cssRules' in rule && rule.cssRules) {
20
+ return Array.from(rule.cssRules).some(checkRule);
21
+ }
22
+ return false;
23
+ }
24
+ function hasHashInSelector(selectorText, hash) {
25
+ const selectors = selectorText.split(',').map(s => s.trim());
26
+ return selectors.some(selector => {
27
+ const classPattern = new RegExp(`\\.${escapeRegExp(hash)}(?![\\w-])`);
28
+ return classPattern.test(selector);
29
+ });
30
+ }
31
+ function escapeRegExp(string) {
32
+ return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
33
+ }
6
34
  return sheets.some(sheet => {
7
35
  try {
8
- return Array.from(sheet.cssRules).some(rule => rule.selectorText === `.${hash}`);
36
+ return Array.from(sheet.cssRules).some(checkRule);
9
37
  }
10
38
  catch (_err) {
11
39
  return false;
@@ -1,8 +1,36 @@
1
1
  export function isHashInStyleSheets(hash) {
2
2
  const sheets = Array.from(document.styleSheets);
3
+ function checkRule(rule) {
4
+ if (rule instanceof CSSStyleRule && rule.selectorText) {
5
+ return hasHashInSelector(rule.selectorText, hash);
6
+ }
7
+ if (rule instanceof CSSMediaRule) {
8
+ return Array.from(rule.cssRules).some(checkRule);
9
+ }
10
+ if (rule instanceof CSSContainerRule) {
11
+ return Array.from(rule.cssRules).some(checkRule);
12
+ }
13
+ if (rule instanceof CSSSupportsRule) {
14
+ return Array.from(rule.cssRules).some(checkRule);
15
+ }
16
+ if ('cssRules' in rule && rule.cssRules) {
17
+ return Array.from(rule.cssRules).some(checkRule);
18
+ }
19
+ return false;
20
+ }
21
+ function hasHashInSelector(selectorText, hash) {
22
+ const selectors = selectorText.split(',').map(s => s.trim());
23
+ return selectors.some(selector => {
24
+ const classPattern = new RegExp(`\\.${escapeRegExp(hash)}(?![\\w-])`);
25
+ return classPattern.test(selector);
26
+ });
27
+ }
28
+ function escapeRegExp(string) {
29
+ return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
30
+ }
3
31
  return sheets.some(sheet => {
4
32
  try {
5
- return Array.from(sheet.cssRules).some(rule => rule.selectorText === `.${hash}`);
33
+ return Array.from(sheet.cssRules).some(checkRule);
6
34
  }
7
35
  catch (_err) {
8
36
  return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zss-engine",
3
- "version": "0.2.77",
3
+ "version": "0.2.78",
4
4
  "description": "Zero-runtime StyleSheet Engine",
5
5
  "keywords": [
6
6
  "zero-runtime",