/
Transform.purs
89 lines (67 loc) · 2.75 KB
/
Transform.purs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
module CSS.Transform where
import Prelude
import CSS.Common (class Inherit, class Initial, class Unset)
import CSS.Property (class Val, Value, noCommas, value)
import CSS.Size (Angle, Abs, Size)
import CSS.String (fromString)
import CSS.Stylesheet (CSS, key)
import Data.Generic (class Generic)
import Data.Tuple.Nested (tuple3)
newtype Transformation = Transformation Value
derive instance eqTransformation :: Eq Transformation
derive instance ordTransformation:: Ord Transformation
derive instance genericTransformation :: Generic Transformation
instance valTransformation :: Val Transformation where
value (Transformation v) = v
transform :: Transformation -> CSS
transform = key $ fromString "transform"
transforms :: Array Transformation -> CSS
transforms = key (fromString "transform") <<< noCommas
translate :: Size Abs -> Size Abs -> Transformation
translate x y = Transformation $ fromString "translate(" <> value [x, y] <> fromString ")"
rotate :: forall a. Angle a -> Transformation
rotate a = Transformation $ fromString "rotate(" <> value a <> fromString ")"
data TransformOrigin a
= TransformOrigin (TransformOriginOffset a) (TransformOriginOffset a) (Size a)
| Initial
| Inherit
| Unset
data TransformOriginOffset a
= OffsetLength (Size a)
| OffsetTop
| OffsetBottom
| OffsetLeft
| OffsetRight
| OffsetCenter
instance valTransformOriginOffset :: Val (TransformOriginOffset a) where
value (OffsetLength s) = value s
value (OffsetTop) = fromString "top"
value (OffsetBottom) = fromString "bottom"
value (OffsetLeft) = fromString "left"
value (OffsetRight) = fromString "right"
value (OffsetCenter) = fromString "center"
instance valTransformOrigin :: Val (TransformOrigin a) where
value (TransformOrigin x y z) = value (tuple3 x y z)
value (Initial) = fromString "initial"
value (Inherit) = fromString "inherit"
value (Unset) = fromString "unset"
instance initialTransformOrigin :: Initial (TransformOrigin a) where
initial = Initial
instance inheritTransformOrigin :: Inherit (TransformOrigin a) where
inherit = Inherit
instance unsetTransformOrigin :: Unset (TransformOrigin a) where
unset = Unset
offset :: forall a. Size a -> TransformOriginOffset a
offset = OffsetLength
offsetTop :: forall a. TransformOriginOffset a
offsetTop = OffsetTop
offsetBottom :: forall a. TransformOriginOffset a
offsetBottom = OffsetBottom
offsetLeft :: forall a. TransformOriginOffset a
offsetLeft = OffsetLeft
offsetRight :: forall a. TransformOriginOffset a
offsetRight = OffsetRight
offsetCenter :: forall a. TransformOriginOffset a
offsetCenter = OffsetCenter
transformOrigin :: forall a. TransformOriginOffset a -> TransformOriginOffset a -> Size a -> CSS
transformOrigin x y z = key (fromString "transform-origin") (TransformOrigin x y z)