module FF.HTML.Spec.Safe.Selector.Examples where
open import Agda.Builtin.String using (String)
open import Cubical.Data.List.Base using (List; []; _∷_)
import FF.HTML.Selector.Core as Selector
import FF.HTML.Spec.Safe as Safe
import FF.HTML.Spec.Safe.Selector as Select
samplePage : Safe.HtmlT
samplePage =
Safe.element Safe.sectionTag
( Safe.attribute Safe.idAttr "main"
∷ Safe.attribute Safe.classAttr (Safe.tokens "page")
∷ []
)
( Safe.element Safe.h1Tag [] (Safe.text "Selectors" ∷ [])
∷ Safe.element Safe.navTag
(Safe.attribute Safe.classAttr (Safe.tokens "primary-nav") ∷ [])
( Safe.element Safe.aTag
( Safe.attribute (Safe.hrefAttr Safe.hrefA) (Safe.url "/docs")
∷ Safe.attribute Safe.classAttr (Safe.tokens "nav-link")
∷ []
)
(Safe.text "Docs" ∷ [])
∷ Safe.element Safe.aTag
( Safe.attribute (Safe.hrefAttr Safe.hrefA) (Safe.url "/api")
∷ Safe.attribute Safe.classAttr (Safe.tokens "nav-link")
∷ []
)
(Safe.text "API" ∷ [])
∷ []
)
∷ Safe.element Safe.pTag
(Safe.attribute (Safe.dataAttr "state") "ready" ∷ [])
(Safe.text "Static selector checks." ∷ [])
∷ Safe.element Safe.pTag [] []
∷ []
)
sectionByTypedId : Select.SelectorT
sectionByTypedId =
Select.single
(Select.compound
(Select.tagWith Safe.sectionTag
(Select.typedId "main" ∷ [])))
linksUnderNav : Select.SelectorT
linksUnderNav =
Select.single
(Select.descendantOf
(Select.compound (Select.tag Safe.navTag))
(Select.tagWith Safe.aTag
(Select.typedClass "nav-link" ∷ [])))
firstHeadingChild : Select.SelectorT
firstHeadingChild =
Select.single
(Select.childOf
(Select.compound
(Select.tagWith Safe.sectionTag
(Select.typedId "main" ∷ [])))
(Select.tagWith Safe.h1Tag
(Select.typedPseudo "first-child" ∷ [])))
readyParagraph : Select.SelectorT
readyParagraph =
Select.single
(Select.compound
(Select.tagWith Safe.pTag
(Select.dataAttrEquals "state" "ready" ∷ [])))
emptyParagraph : Select.SelectorT
emptyParagraph =
Select.single
(Select.compound
(Select.tagWith Safe.pTag
(Select.typedPseudo "empty" ∷ [])))
rawHrefSelector : Select.SelectorT
rawHrefSelector =
Selector.one
(Selector.compound
(Selector.universal
(Select.rawAttrPresent "href" ∷ [])))
renderedLinksUnderNav : String
renderedLinksUnderNav = Select.render linksUnderNav
selectedLinksUnderNav : List Safe.HtmlT
selectedLinksUnderNav = Select.select linksUnderNav samplePage
selectedFirstHeadingChild : List Safe.HtmlT
selectedFirstHeadingChild = Select.select firstHeadingChild samplePage
selectedReadyParagraph : List Safe.HtmlT
selectedReadyParagraph = Select.select readyParagraph samplePage
selectedEmptyParagraph : List Safe.HtmlT
selectedEmptyParagraph = Select.select emptyParagraph samplePage
selectedRawHrefNodes : List Safe.HtmlT
selectedRawHrefNodes = Select.select rawHrefSelector samplePage