1
- angular . module ( 'animations.create ' , [ ] )
1
+ angular . module ( 'animations.assist ' , [ ] )
2
2
3
3
4
+ . factory ( 'Assist' , function ( $filter ) {
5
+ return {
6
+
7
+ emit : function ( element , name , trigger ) {
8
+ var $scope = angular . element ( element ) . scope ( ) ;
9
+ return function ( ) {
10
+ $scope . $emit ( trigger + name ) ;
11
+ } ;
12
+ } ,
13
+
14
+ parseClassList : function ( element ) {
15
+ var list = element [ 0 ] . classList ,
16
+ results = { trigger : false , ease : 'Elastic' } ;
17
+ angular . forEach ( list , function ( className ) {
18
+ if ( className . slice ( 0 , 9 ) === 'ef-easing' ) {
19
+ results . ease = ( $filter ( 'cap' ) ( className . slice ( 10 ) ) ) ;
20
+ }
21
+ if ( className === 'ef-trigger' ) {
22
+ results . trigger = true ;
23
+ }
24
+ } ) ;
25
+ return results ;
26
+ }
27
+ } ;
28
+ } )
29
+
4
30
. filter ( 'cap' , function ( ) {
5
31
return function ( input ) {
6
32
return input . charAt ( 0 ) . toUpperCase ( ) + input . slice ( 1 ) ;
7
33
} ;
8
- } )
34
+ } ) ;
35
+ angular . module ( 'animations.create' , [ 'animations.assist' ] )
9
36
10
- . factory ( 'Animation' , [ '$timeout' , '$window' , '$filter' , function ( $timeout , $window , $filter ) {
11
- var getScope = function ( e ) {
12
- return angular . element ( e ) . scope ( ) ;
13
- } ;
14
- var emit = function ( element , name ) {
15
- var $scope = getScope ( element ) ;
16
- return function ( ) {
17
- $scope . $emit ( name ) ;
18
- } ;
19
- } ;
20
37
21
- var parseClassList = function ( element ) {
22
- var list = element [ 0 ] . classList ,
23
- results = { trigger : false , ease : 'Elastic' } ;
24
- angular . forEach ( list , function ( className ) {
25
- if ( className . slice ( 0 , 9 ) === 'ef-easing' ) {
26
- results . ease = ( $filter ( 'cap' ) ( className . slice ( 10 ) ) ) ;
27
- }
28
- if ( className === 'ef-trigger' ) {
29
- results . trigger = true ;
30
- }
31
- } ) ;
32
- return results ;
33
- } ;
34
38
35
- return {
36
- fade : function ( effect ) {
37
- var inEffect = effect . enter ,
39
+
40
+ . factory ( 'FadeAnimation' , [ '$timeout' , '$window' , 'Assist' , function ( $timeout , $window , Assist ) {
41
+ return function ( effect ) {
42
+ var inEffect = effect . enter ,
38
43
outEffect = effect . leave ,
39
44
outEffectLeave = effect . inverse || effect . leave ,
40
45
duration = effect . duration ,
41
46
enter ,
42
47
leave ,
43
48
move ;
44
49
45
- this . enter = function ( element , done ) {
46
- var options = parseClassList ( element ) ;
47
-
48
- options . trigger ? inEffect . onComplete = emit ( element , effect . animation ) : inEffect . onComplete = done ;
49
- inEffect . ease = $window [ options . ease ] . easeOut ;
50
- TweenMax . set ( element , outEffect ) ;
51
- enter = TweenMax . to ( element , duration , inEffect ) ;
52
- return function ( canceled ) {
53
- if ( canceled ) {
54
- $timeout ( function ( ) {
55
- angular . element ( element ) . remove ( ) ;
56
- } , 300 ) ;
57
- } else {
58
- enter . resume ( ) ;
59
- }
60
- } ;
50
+ this . enter = function ( element , done ) {
51
+ var options = Assist . parseClassList ( element ) ;
52
+
53
+ options . trigger ? inEffect . onComplete = Assist . emit ( element , effect . animation , 'enter' ) : inEffect . onComplete = done ;
54
+ inEffect . ease = $window [ options . ease ] . easeOut ;
55
+ TweenMax . set ( element , outEffect ) ;
56
+ enter = TweenMax . to ( element , duration , inEffect ) ;
57
+ return function ( canceled ) {
58
+ if ( canceled ) {
59
+ $timeout ( function ( ) {
60
+ angular . element ( element ) . remove ( ) ;
61
+ } , 300 ) ;
62
+ } else {
63
+ enter . resume ( ) ;
64
+ }
61
65
} ;
66
+ } ;
62
67
63
- this . leave = function ( element , done ) {
64
- var options = parseClassList ( element ) ;
65
- outEffect . onComplete = done ;
66
- outEffect . ease = $window [ options . ease ] . easeIn ;
67
- TweenMax . set ( element , inEffect ) ;
68
- leave = TweenMax . to ( element , duration , outEffectLeave ) ;
69
- return function ( canceled ) {
70
- if ( canceled ) {
68
+ this . leave = function ( element , done ) {
69
+ var options = Assist . parseClassList ( element ) ;
70
+ outEffect . onComplete = done ;
71
+ outEffect . ease = $window [ options . ease ] . easeIn ;
72
+ TweenMax . set ( element , inEffect ) ;
73
+ leave = TweenMax . to ( element , duration , outEffectLeave ) ;
74
+ return function ( canceled ) {
75
+ if ( canceled ) {
71
76
72
- }
73
- } ;
77
+ }
74
78
} ;
79
+ } ;
75
80
76
- this . move = function ( element , done ) {
77
- console . log ( 'move' ) ;
78
- inEffect . onComplete = done ;
79
- TweenMax . set ( element , outEffect ) ;
80
- move = TweenMax . to ( element . duration , inEffect ) ;
81
- return function ( canceled ) {
82
- if ( canceled ) {
83
-
84
- move . kill ( ) ;
85
- }
86
- } ;
87
- } ;
81
+ this . move = function ( element , done ) {
82
+ console . log ( 'move' ) ;
83
+ inEffect . onComplete = done ;
84
+ TweenMax . set ( element , outEffect ) ;
85
+ move = TweenMax . to ( element . duration , inEffect ) ;
86
+ return function ( canceled ) {
87
+ if ( canceled ) {
88
88
89
- this . beforeAddClass = function ( element , className , done ) {
90
- outEffect . onComplete = done ;
91
- if ( className === 'ng-hide' ) {
92
- TweenMax . to ( element , duration , outEffectLeave ) ;
93
- } else {
94
- done ( ) ;
89
+ move . kill ( ) ;
95
90
}
96
91
} ;
92
+ } ;
97
93
98
- this . removeClass = function ( element , className , done ) {
99
- inEffect . onComplete = done ;
100
- if ( className === 'ng-hide' ) {
101
- TweenMax . set ( element , outEffect ) ;
102
- TweenMax . to ( element , duration , inEffect ) ;
103
- } else {
104
- done ( ) ;
105
- }
106
- } ;
107
- } ,
94
+ this . beforeAddClass = function ( element , className , done ) {
95
+ outEffect . onComplete = done ;
96
+ if ( className === 'ng-hide' ) {
97
+ TweenMax . to ( element , duration , outEffectLeave ) ;
98
+ } else {
99
+ done ( ) ;
100
+ }
101
+ } ;
108
102
109
- bounce : function ( effect ) {
103
+ this . removeClass = function ( element , className , done ) {
104
+ inEffect . onComplete = done ;
105
+ if ( className === 'ng-hide' ) {
106
+ TweenMax . set ( element , outEffect ) ;
107
+ TweenMax . to ( element , duration , inEffect ) ;
108
+ } else {
109
+ done ( ) ;
110
+ }
111
+ } ;
112
+ } ;
113
+ } ] )
114
+
115
+ . factory ( 'BounceAnimation' , [ '$timeout' , '$window' , 'Assist' , function ( $timeout , $window , Assist ) {
116
+ return function ( effect ) {
110
117
var start = effect . first ,
111
118
mid = effect . mid ,
112
119
third = effect . third ,
@@ -164,26 +171,26 @@ angular.module('animations.create', [])
164
171
this . removeClass = function ( element , className , done ) {
165
172
166
173
} ;
167
- }
168
- } ;
174
+ } ;
169
175
} ] ) ;
170
176
177
+
171
178
var fades = angular . module ( 'animations.fades' , [ 'animations.create' ] ) ;
172
179
173
180
174
- fades . animation ( '.ef-fade-normal' , function ( Animation ) {
181
+ fades . animation ( '.ef-fade-normal' , function ( FadeAnimation ) {
175
182
var effect = {
176
183
enter : { opacity : 1 } ,
177
184
leave : { opacity : 0 } ,
178
185
duration : 0.6 ,
179
186
animation : 'fade-normal'
180
187
} ;
181
188
182
- return new Animation . fade ( effect ) ;
189
+ return new FadeAnimation ( effect ) ;
183
190
} ) ;
184
191
185
192
186
- fades . animation ( '.ef-fade-down' , function ( Animation ) {
193
+ fades . animation ( '.ef-fade-down' , function ( FadeAnimation ) {
187
194
var effect = {
188
195
enter : { opacity : 1 , transform : 'translateY(0)' } ,
189
196
leave : { opacity : 0 , transform : 'translateY(-20px)' } ,
@@ -192,10 +199,10 @@ fades.animation('.ef-fade-down', function (Animation){
192
199
animation : 'fade-down'
193
200
} ;
194
201
195
- return new Animation . fade ( effect ) ;
202
+ return new FadeAnimation ( effect ) ;
196
203
} ) ;
197
204
198
- fades . animation ( '.ef-fade-down-big' , function ( Animation ) {
205
+ fades . animation ( '.ef-fade-down-big' , function ( FadeAnimation ) {
199
206
var effect = {
200
207
enter : { opacity : 1 , transform : 'translateY(0)' } ,
201
208
leave : { opacity : 0 , transform : 'translateY(-2000px)' } ,
@@ -204,21 +211,21 @@ fades.animation('.ef-fade-down-big', function (Animation){
204
211
animation : 'fade-down-big'
205
212
} ;
206
213
207
- return new Animation . fade ( effect ) ;
214
+ return new FadeAnimation ( effect ) ;
208
215
} ) ;
209
216
210
- fades . animation ( '.ef-fade-left' , function ( Animation ) {
217
+ fades . animation ( '.ef-fade-left' , function ( FadeAnimation ) {
211
218
var effect = {
212
219
enter : { opacity : 1 , transform : 'translateX(0)' } ,
213
220
leave : { opacity : 0 , transform : 'translateX(-20px)' } ,
214
221
inverse : { opacity : 0 , transform : 'translateX(20px)' } ,
215
222
duration : 0.8 ,
216
223
animation : 'fade-left'
217
224
} ;
218
- return new Animation . fade ( effect ) ;
225
+ return new FadeAnimation ( effect ) ;
219
226
} ) ;
220
227
221
- fades . animation ( '.ef-fade-left-big' , function ( Animation ) {
228
+ fades . animation ( '.ef-fade-left-big' , function ( FadeAnimation ) {
222
229
var effect = {
223
230
enter : { opacity : 1 , transform : 'translateX(0)' } ,
224
231
leave : { opacity : 0 , transform : 'translateX(-2000px)' } ,
@@ -227,10 +234,10 @@ fades.animation('.ef-fade-left-big', function (Animation){
227
234
animation : 'fade-left-big'
228
235
} ;
229
236
230
- return new Animation . fade ( effect ) ;
237
+ return new FadeAnimation ( effect ) ;
231
238
} ) ;
232
239
233
- fades . animation ( '.ef-fade-right' , function ( Animation ) {
240
+ fades . animation ( '.ef-fade-right' , function ( FadeAnimation ) {
234
241
var effect = {
235
242
enter : { opacity : 1 , transform : 'translateX(0)' } ,
236
243
leave : { opacity : 0 , transform :'translateX(20px)' } ,
@@ -239,10 +246,10 @@ fades.animation('.ef-fade-right', function (Animation){
239
246
animation : 'fade-right'
240
247
} ;
241
248
242
- return new Animation . fade ( effect ) ;
249
+ return new FadeAnimation ( effect ) ;
243
250
} ) ;
244
251
245
- fades . animation ( '.ef-fade-right-big' , function ( Animation ) {
252
+ fades . animation ( '.ef-fade-right-big' , function ( FadeAnimation ) {
246
253
var effect = {
247
254
enter : { opacity : 1 , transform : 'translateX(0)' } ,
248
255
leave : { opacity : 0 , transform :'translateX(2000px)' } ,
@@ -251,10 +258,10 @@ fades.animation('.ef-fade-right-big', function (Animation){
251
258
animation : 'fade-right-big'
252
259
} ;
253
260
254
- return new Animation . fade ( effect ) ;
261
+ return new FadeAnimation ( effect ) ;
255
262
} ) ;
256
263
257
- fades . animation ( '.ef-fade-up' , function ( Animation ) {
264
+ fades . animation ( '.ef-fade-up' , function ( FadeAnimation ) {
258
265
var effect = {
259
266
enter : { opacity : 1 , transform : 'translateY(0)' } ,
260
267
leave : { opacity : 0 , transform :'translateY(20px)' } ,
@@ -263,10 +270,10 @@ fades.animation('.ef-fade-up', function (Animation){
263
270
animation : 'fade-up'
264
271
} ;
265
272
266
- return new Animation . fade ( effect ) ;
273
+ return new FadeAnimation ( effect ) ;
267
274
} ) ;
268
275
269
- fades . animation ( '.ef-fade-up-big' , function ( Animation ) {
276
+ fades . animation ( '.ef-fade-up-big' , function ( FadeAnimation ) {
270
277
var effect = {
271
278
enter : { opacity : 1 , transform : 'translateY(0)' } ,
272
279
leave : { opacity : 0 , transform :'translateY(2000px)' } ,
@@ -275,11 +282,11 @@ fades.animation('.ef-fade-up-big', function (Animation){
275
282
animation : 'fade-up-big'
276
283
} ;
277
284
278
- return new Animation . fade ( effect ) ;
285
+ return new FadeAnimation ( effect ) ;
279
286
} ) ;
280
287
var bounces = angular . module ( 'animations.bounces' , [ 'animations.create' ] ) ;
281
288
282
- bounces . animation ( '.bounce-normal' , function ( Animation ) {
289
+ bounces . animation ( '.ef- bounce-normal' , function ( BounceAnimation ) {
283
290
var effect = {
284
291
first : { opacity : 0 , transform : 'scale(.3)' } ,
285
292
mid : { opacity : 1 , transform : 'scale(1.05)' } ,
@@ -288,10 +295,10 @@ bounces.animation('.bounce-normal', function (Animation){
288
295
duration : 0.2
289
296
} ;
290
297
291
- return new Animation . bounce ( effect ) ;
298
+ return new BounceAnimation ( effect ) ;
292
299
} ) ;
293
300
294
- bounces . animation ( '.bounce-down' , function ( Animation ) {
301
+ bounces . animation ( '.ef- bounce-down' , function ( BounceAnimation ) {
295
302
var effect = {
296
303
first : { opacity : 0 , transform : 'translateY(-2000px)' } ,
297
304
mid : { opacity : 1 , transform : 'translateY(30px)' } ,
@@ -300,10 +307,10 @@ bounces.animation('.bounce-down', function (Animation){
300
307
duration : 0.2
301
308
} ;
302
309
303
- return new Animation . bounce ( effect ) ;
310
+ return new BounceAnimation ( effect ) ;
304
311
} ) ;
305
312
306
- bounces . animation ( '.bounce-left' , function ( Animation ) {
313
+ bounces . animation ( '.ef- bounce-left' , function ( BounceAnimation ) {
307
314
var effect = {
308
315
first : { opacity : 0 , transform : 'translateX(-2000px)' } ,
309
316
mid : { opacity : 1 , transform : 'translateX(30px)' } ,
@@ -312,7 +319,7 @@ bounces.animation('.bounce-left', function (Animation){
312
319
duration : 0.2
313
320
} ;
314
321
315
- return new Animation . bounce ( effect ) ;
322
+ return new BounceAnimation ( effect ) ;
316
323
} ) ;
317
324
var animate = angular . module ( 'animations' ,
318
325
[
0 commit comments