11module CSS.Transform where
22
33import Prelude
4-
5- import Data.Generic (class Generic )
6-
7- import CSS.Property (class Val , Value , value , noCommas )
4+ import CSS.Common (class Inherit , class Initial , class Unset )
5+ import CSS.Property (class Val , Value , noCommas , value )
86import CSS.Size (Angle , Abs , Size )
97import CSS.String (fromString )
108import CSS.Stylesheet (CSS , key )
9+ import Data.Generic (class Generic )
10+ import Data.Tuple.Nested (tuple3 )
1111
1212newtype Transformation = Transformation Value
1313
@@ -29,3 +29,61 @@ translate x y = Transformation $ fromString "translate(" <> value [x, y] <> from
2929
3030rotate :: forall a . Angle a -> Transformation
3131rotate a = Transformation $ fromString " rotate(" <> value a <> fromString " )"
32+
33+ data TransformOrigin a
34+ = TransformOrigin (TransformOriginOffset a ) (TransformOriginOffset a ) (Size a )
35+ | Initial
36+ | Inherit
37+ | Unset
38+
39+ data TransformOriginOffset a
40+ = OffsetLength (Size a )
41+ | OffsetTop
42+ | OffsetBottom
43+ | OffsetLeft
44+ | OffsetRight
45+ | OffsetCenter
46+
47+ instance valTransformOriginOffset :: Val (TransformOriginOffset a ) where
48+ value (OffsetLength s) = value s
49+ value (OffsetTop ) = fromString " top"
50+ value (OffsetBottom ) = fromString " bottom"
51+ value (OffsetLeft ) = fromString " left"
52+ value (OffsetRight ) = fromString " right"
53+ value (OffsetCenter ) = fromString " center"
54+
55+ instance valTransformOrigin :: Val (TransformOrigin a ) where
56+ value (TransformOrigin x y z) = value (tuple3 x y z)
57+ value (Initial ) = fromString " initial"
58+ value (Inherit ) = fromString " inherit"
59+ value (Unset ) = fromString " unset"
60+
61+ instance initialTransformOrigin :: Initial (TransformOrigin a ) where
62+ initial = Initial
63+
64+ instance inheritTransformOrigin :: Inherit (TransformOrigin a ) where
65+ inherit = Inherit
66+
67+ instance unsetTransformOrigin :: Unset (TransformOrigin a ) where
68+ unset = Unset
69+
70+ offset :: forall a . Size a -> TransformOriginOffset a
71+ offset = OffsetLength
72+
73+ offsetTop :: forall a . TransformOriginOffset a
74+ offsetTop = OffsetTop
75+
76+ offsetBottom :: forall a . TransformOriginOffset a
77+ offsetBottom = OffsetBottom
78+
79+ offsetLeft :: forall a . TransformOriginOffset a
80+ offsetLeft = OffsetLeft
81+
82+ offsetRight :: forall a . TransformOriginOffset a
83+ offsetRight = OffsetRight
84+
85+ offsetCenter :: forall a . TransformOriginOffset a
86+ offsetCenter = OffsetCenter
87+
88+ transformOrigin :: forall a . TransformOriginOffset a -> TransformOriginOffset a -> Size a -> CSS
89+ transformOrigin x y z = key (fromString " transform-origin" ) (TransformOrigin x y z)
0 commit comments