From ecbf0d9fbcbc1da4991c37ca11c4df56e55271b2 Mon Sep 17 00:00:00 2001 From: Toshit Chawda Date: Sat, 22 Jun 2024 13:07:07 -0700 Subject: [PATCH] fix: non-scoped css media rules --- src/css.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/css.js b/src/css.js index 7d1a1a6..ed8bd90 100644 --- a/src/css.js +++ b/src/css.js @@ -108,7 +108,7 @@ export function genCss(uid, str, scoped) { styleElement.textContent = `.${uid} {${selfstr}} @scope (.${uid}) to (:not(.${uid}).${cssBoundary} *) { ${newstr} } ${extstr}` } else { - for (const rule of styleElement.sheet.cssRules) { + const processRule = (rule) => { if (rule.selectorText) rule.selectorText = rule.selectorText .split(',') @@ -123,8 +123,17 @@ export function genCss(uid, str, scoped) { .join(', ') newstr += rule.cssText } + for (const rule of styleElement.sheet.cssRules) { + if (rule.media && rule.media.mediaText) { + newstr += `@media(${rule.media.mediaText}){` + Array.from(rule.cssRules).map(processRule) + newstr += '}' + } else { + processRule(rule) + } + } - styleElement.textContent = `.${uid} {${selfstr}}` + '\n' + newstr + styleElement.textContent = `.${uid} {${selfstr}}${newstr}` } return uid