module FF.HTML.Spec.Loose.StyleSheet where open import Agda.Builtin.String using (String) open import Cubical.Data.Bool.Base using (Bool; false; true) open import Cubical.Data.List.Base using (List; []; _∷_) import FF.CSS.Spec.Loose as CSS import FF.HTML.Spec.Loose as HTML import FF.HTML.Spec.Loose.Selector as Selector import FF.HTML.StyleSheet.Core as Sheet RuleT : _ RuleT = Sheet.StyleRule HTML.spec CSS.spec StyleSheetT : _ StyleSheetT = Sheet.StyleSheet HTML.spec CSS.spec MatchedRuleT : _ MatchedRuleT = Sheet.MatchedRule HTML.spec CSS.spec ElementStyleT : _ ElementStyleT = Sheet.ElementStyle HTML.spec CSS.spec rule : Selector.SelectorT -> List CSS.DeclarationT -> RuleT rule = Sheet.styleRule sheet : List RuleT -> StyleSheetT sheet = Sheet.fromRules declaration : String -> String -> CSS.DeclarationT declaration = CSS.declaration render : StyleSheetT -> String render = Sheet.renderStyleSheet HTML.renderer CSS.renderer matchingRules : StyleSheetT -> HTML.HtmlT -> List MatchedRuleT matchingRules = Sheet.matchingStyleSheet Selector.matcher styledElements : StyleSheetT -> HTML.HtmlT -> List ElementStyleT styledElements = Sheet.styledElements Selector.matcher matchesRoot : StyleSheetT -> HTML.HtmlT -> Bool matchesRoot stylesheet html with matchingRules stylesheet html ... | [] = false ... | _ ∷ _ = true