/
Transition.purs
68 lines (61 loc) · 2.22 KB
/
Transition.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
module Mathbox.Class.Present.Transition where
import Prelude (map, ($))
import Data.Maybe (Maybe(Nothing))
import Data.Nullable (Nullable, toNullable)
import Mathbox.Field
import Mathbox.Types as T
type TransitionG a b =
{ id :: b String
, classes :: a T.Classes
, stagger :: a T.Vec4
, enter :: b Number
, exit :: b Number
, delay :: a Number
, delayEnter :: b Number
, delayExit :: b Number
, duration :: a Number
, durationEnter :: b Number
, durationExit :: b Number
}
type Transition = TransitionG Field MaybeField
type JsTransition =
{ id :: Nullable (Field String)
, classes :: Field T.JsClasses
, stagger :: Field T.Vec4
, enter :: Nullable (Field Number)
, exit :: Nullable (Field Number)
, delay :: Field Number
, delayEnter :: Nullable (Field Number)
, delayExit :: Nullable (Field Number)
, duration :: Field Number
, durationEnter :: Nullable (Field Number)
, durationExit :: Nullable (Field Number)
}
mkTransition :: Transition
mkTransition =
{ id : Nothing
, classes : Val $ T.mkClasses0
, stagger : Val $ T.mkVec40
, enter : Nothing
, exit : Nothing
, delay : Val $ 0.0
, delayEnter : Nothing
, delayExit : Nothing
, duration : Val $ 0.3
, durationEnter : Nothing
, durationExit : Nothing
}
transitionToJs :: Transition -> JsTransition
transitionToJs t =
{ id : toNullable t.id
, classes : map T.classesToJs t.classes
, stagger : t.stagger
, enter : toNullable t.enter
, exit : toNullable t.exit
, delay : t.delay
, delayEnter : toNullable t.delayEnter
, delayExit : toNullable t.delayExit
, duration : t.duration
, durationEnter : toNullable t.durationEnter
, durationExit : toNullable t.durationExit
}