diagrams-svg-1.3.1.3: src/Diagrams/Backend/SVG/Attributes.hs
{-# LANGUAGE DeriveDataTypeable #-}
-----------------------------------------------------------------------------
-- |
-- Module : Diagrams.Backend.SVG.Attributes
-- Copyright : (c) 2015 Diagrams team (see LICENSE)
-- License : BSD-style (see LICENSE)
-- Maintainer : diagrams-discuss@googlegroups.com
--
-- Attributes that are specific to the SVG backend. The intent
-- of this module is to allow adding the attributes class,
-- and id attributes to an SVG. For those embedding
-- the resulting SVG into a webpage, this allows some
-- interactivity with javascript and stylesheets.
--
-----------------------------------------------------------------------------
module Diagrams.Backend.SVG.Attributes (
-- * Id
SvgId(..)
, svgId
-- * Class
, SvgClass(..)
, svgClass
) where
import Diagrams.Core.Style (AttributeClass, HasStyle, applyAttr)
import Data.Semigroup
import Data.Typeable (Typeable)
-----------------------------------------------------------------
-- Id
-----------------------------------------------------------------
-- | The SVG id attribute.
newtype SvgId = SvgId {getSvgId :: String}
deriving Typeable
instance Semigroup SvgId where
_ <> a = a
instance AttributeClass SvgId
-- | Set the Id attribute.
svgId :: HasStyle a => String -> a -> a
svgId = applyAttr . SvgId
-----------------------------------------------------------------
-- Class
-----------------------------------------------------------------
-- | The SVG class attribute.
newtype SvgClass = SvgClass {getSvgClass :: String}
deriving Typeable
instance Semigroup SvgClass where
_ <> a = a
instance AttributeClass SvgClass
-- | Set the class attribute.
svgClass :: HasStyle a => String -> a -> a
svgClass = applyAttr . SvgClass