-
Notifications
You must be signed in to change notification settings - Fork 3
/
Animated.elm
121 lines (88 loc) · 2.61 KB
/
Animated.elm
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
module Utils.Animated exposing
( animatedElmCssDiv
, circle
, el
, g
, path
, typedSvgG
)
import Element exposing (Element)
import Html.Styled as Styled
import Html.Styled.Attributes
import Simple.Animation exposing (Animation)
import Simple.Animation.Animated as Animated
import Svg exposing (Svg)
import Svg.Attributes
import TypedSvg
import TypedSvg.Attributes
import TypedSvg.Core as TypedSvg
-- Elm UI
el : Animation -> List (Element.Attribute msg) -> Element msg -> Element msg
el =
animatedUi Element.el
animatedUi :
(List (Element.Attribute msg) -> children -> Element msg)
-> Animation
-> List (Element.Attribute msg)
-> children
-> Element msg
animatedUi =
Animated.ui
{ behindContent = Element.behindContent
, htmlAttribute = Element.htmlAttribute
, html = Element.html
}
-- Elm CSS
animatedElmCssDiv : Animation -> List (Styled.Attribute msg) -> List (Styled.Html msg) -> Styled.Html msg
animatedElmCssDiv =
animatedElmCssNode Styled.div
animatedElmCssNode :
(List (Styled.Attribute msg) -> List (Styled.Html msg) -> Styled.Html msg)
-> Animation
-> List (Styled.Attribute msg)
-> List (Styled.Html msg)
-> Styled.Html msg
animatedElmCssNode =
Animated.elmCss
{ text = Styled.text
, node = Styled.node
, class = Html.Styled.Attributes.class
}
-- Svg
g : Animation -> List (Svg.Attribute msg) -> List (Svg msg) -> Svg msg
g =
animatedSvg Svg.g
circle : Animation -> List (Svg.Attribute msg) -> List (Svg msg) -> Svg msg
circle =
animatedSvg Svg.circle
path : Animation -> List (Svg.Attribute msg) -> List (Svg msg) -> Svg msg
path =
animatedSvg Svg.path
animatedSvg :
(List (Svg.Attribute msg) -> List (Svg msg) -> Svg msg)
-> Animation
-> List (Svg.Attribute msg)
-> List (Svg msg)
-> Svg msg
animatedSvg =
Animated.svg
{ class = Svg.Attributes.class
}
-- Typed Svg
typedSvgG : Animation -> List (TypedSvg.Attribute msg) -> List (TypedSvg.Svg msg) -> TypedSvg.Svg msg
typedSvgG =
animatedTypedSvg TypedSvg.g
animatedTypedSvg :
(List (TypedSvg.Attribute msg) -> List (TypedSvg.Svg msg) -> TypedSvg.Svg msg)
-> Animation
-> List (TypedSvg.Attribute msg)
-> List (TypedSvg.Svg msg)
-> TypedSvg.Svg msg
animatedTypedSvg node animation attributes children =
Animated.custom
(\className stylesheet ->
node
(TypedSvg.Attributes.class [ className ] :: attributes)
(TypedSvg.style [] [ TypedSvg.text stylesheet ] :: children)
)
animation