module FF.CSS.Spec.Common where

open import Agda.Builtin.String using (String)
open import Agda.Primitive using (lzero) renaming (Set to Type)

open import FF.CSS.Core using (Spec; Declaration; Map)
open import FF.CSS.Render using (Renderer; renderVia)
import FF.CSS.Spec.Loose as Loose
open import FF.CSS.Spec.Safe.Property public using (PropertyName; propertyString)

spec : Spec lzero lzero
spec =
  record
    { Property = PropertyName
    ; Value = \ _ -> String
    }

DeclarationT : Type lzero
DeclarationT = Declaration spec

renderer : Renderer spec
renderer =
  record
    { renderProperty = propertyString
    ; renderValue = \ _ value -> value
    }

toLoose : Map spec Loose.spec
toLoose =
  record
    { mapProperty = propertyString
    ; mapValue = \ _ value -> value
    }

renderedByLooseRenderer : DeclarationT -> String
renderedByLooseRenderer = renderVia toLoose Loose.renderer