Skip to content

Commit 08a04d5

Browse files
authored
Merge pull request #52 from alexmingoia/topic/transform-origin-rule
Add transform-origin rule.
2 parents 260c0c8 + 01eb140 commit 08a04d5

File tree

1 file changed

+62
-4
lines changed

1 file changed

+62
-4
lines changed

src/CSS/Transform.purs

Lines changed: 62 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
module CSS.Transform where
22

33
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)
86
import CSS.Size (Angle, Abs, Size)
97
import CSS.String (fromString)
108
import CSS.Stylesheet (CSS, key)
9+
import Data.Generic (class Generic)
10+
import Data.Tuple.Nested (tuple3)
1111

1212
newtype Transformation = Transformation Value
1313

@@ -29,3 +29,61 @@ translate x y = Transformation $ fromString "translate(" <> value [x, y] <> from
2929

3030
rotate :: forall a. Angle a -> Transformation
3131
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

Comments
 (0)