-- | -- Module: Data.CSS.Properties.Compat -- Copyright: (c) 2013 Ertugrul Soeylemez -- License: BSD3 -- Maintainer: Ertugrul Soeylemez module Data.CSS.Properties.Compat ( -- * Vendor prefixes vendors ) where import qualified Data.ByteString as B import Control.Lens import Control.Monad.Writer.Class import Data.CSS.Types -- | Adds vendor-prefixed properties for all properties in the given -- style sheet. The following vendors are currently added: -- -- * Microsoft (@-ms-@), -- -- * Mozilla (@-moz-@), -- -- * Opera (@-o-@), -- -- * WebKit (@-webkit-@). -- -- This combinator keeps the original (non-prefixed) property and does -- not prefix properties that already have a vendor prefix. vendors :: (MonadWriter CSS m) => m a -> m a vendors = censoring (cssProps . mapped) . concatMap $ \(Property sel (PropName name) val imp) -> let prefix pfx = Property sel (PropName $ B.append pfx name) val imp prefixes | B.isPrefixOf "-" name = [""] | otherwise = ["", "-moz-", "-ms-", "-o-", "-webkit-"] in map prefix prefixes