1
1
module CSS.Transform where
2
2
3
3
import 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 )
8
6
import CSS.Size (Angle , Abs , Size )
9
7
import CSS.String (fromString )
10
8
import CSS.Stylesheet (CSS , key )
9
+ import Data.Generic (class Generic )
10
+ import Data.Tuple.Nested (tuple3 )
11
11
12
12
newtype Transformation = Transformation Value
13
13
@@ -29,3 +29,61 @@ translate x y = Transformation $ fromString "translate(" <> value [x, y] <> from
29
29
30
30
rotate :: forall a . Angle a -> Transformation
31
31
rotate 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