From ff3772d0e18c8cbd63f343078291edbee4e9bb59 Mon Sep 17 00:00:00 2001 From: Jonathan Kemp Date: Sat, 12 Oct 2019 22:20:49 -0400 Subject: [PATCH 1/2] Fixes @font-face nested in @media Fixes #102 --- lib/parse.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/parse.js b/lib/parse.js index 563fa72..517e11d 100644 --- a/lib/parse.js +++ b/lib/parse.js @@ -399,7 +399,6 @@ CSSOM.parse = function parse(token) { prevScope = currentScope; currentScope = parentRule; currentScope.cssRules.push(prevScope); - break; } if (ancestorRules.length === 0) { From 975f1d646ab42e1e164b078223b6d8ef60d38de2 Mon Sep 17 00:00:00 2001 From: Jonathan Kemp Date: Sun, 3 Nov 2019 22:11:30 -0500 Subject: [PATCH 2/2] Add tests for @font-face nested in @media fix --- spec/parse.spec.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/spec/parse.spec.js b/spec/parse.spec.js index c38a5ba..86162ca 100644 --- a/spec/parse.spec.js +++ b/spec/parse.spec.js @@ -676,6 +676,48 @@ var TESTS = [ return result; })() }, + { + input: "@media screen{a{color:blue !important;background:red;} @font-face { font-family: 'Arial2'; } }", + result: (function() { + var result = { + cssRules: [ + { + media: { + 0: "screen", + length: 1 + }, + cssRules: [ + { + selectorText: "a", + style: { + 0: "color", + 1: "background", + color: "blue", + background: "red", + length: 2 + } + }, + { + style: { + 0: "font-family", + "font-family": "'Arial2'", + length: 1 + } + }, + ".." + ], + parentRule: null + } + ], + parentStyleSheet: null + }; + result.cssRules[0].parentStyleSheet = result.cssRules[0].cssRules[0].parentStyleSheet = result.cssRules[0].cssRules[1].parentStyleSheet = result; + result.cssRules[0].cssRules[0].parentRule = result.cssRules[0].cssRules[1].parentRule = result.cssRules[0]; + result.cssRules[0].cssRules[0].style.parentRule = result.cssRules[0].cssRules[0]; + result.cssRules[0].cssRules[1].style.parentRule = result.cssRules[0].cssRules[1]; + return result; + })() + }, { input: "@supports (display: grid) { html { display: grid; } }", result: (function() {