module FF.HTML.Spec.Common.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; []; _∷_) open import FF.CSS.Core using (declare) import FF.CSS.Spec.Common as CSS import FF.CSS.Spec.Loose as LooseCSS import FF.HTML.Spec.Common as HTML import FF.HTML.Spec.Common.Selector as Selector import FF.HTML.Spec.Loose as LooseHTML 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 : CSS.PropertyName -> String -> CSS.DeclarationT declaration = declare render : StyleSheetT -> String render = Sheet.renderStyleSheet HTML.renderer CSS.renderer toLoose : StyleSheetT -> Sheet.StyleSheet LooseHTML.spec LooseCSS.spec toLoose = Sheet.mapStyleSheet HTML.toLoose CSS.toLoose renderedByLooseRenderer : StyleSheetT -> String renderedByLooseRenderer stylesheet = Sheet.renderStyleSheet LooseHTML.renderer LooseCSS.renderer (toLoose stylesheet) matchingRules : StyleSheetT -> HTML.HtmlT -> List MatchedRuleT matchingRules = Sheet.matchingStyleSheet Selector.matcher styledElements : StyleSheetT -> HTML.HtmlT -> List ElementStyleT styledElements = Sheet.styledElements Selector.matcher hasMatchingRules : StyleSheetT -> HTML.HtmlT -> Bool hasMatchingRules stylesheet html with matchingRules stylesheet html ... | [] = false ... | _ ∷ _ = true