phcthemes_admin_panel_pack 1.6.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/common/lazysizes/lazysizes.js +754 -0
- data/app/assets/javascripts/common/scrollme/jquery.scrollme.js +455 -0
- data/app/assets/javascripts/common/slick/slick.js +3004 -0
- data/app/assets/javascripts/common/wow/wow.js +508 -0
- data/lib/phcthemes_admin_panel_pack/engine.rb +1 -0
- data/lib/phcthemes_admin_panel_pack/version.rb +1 -1
- metadata +30 -6
@@ -0,0 +1,455 @@
|
|
1
|
+
// ----------------------------------------------------------------------------------------------------
|
2
|
+
// ScrollMe
|
3
|
+
// A jQuery plugin for adding simple scrolling effects to web pages
|
4
|
+
// http://scrollme.nckprsn.com
|
5
|
+
// ----------------------------------------------------------------------------------------------------
|
6
|
+
|
7
|
+
var scrollme = ( function( $ )
|
8
|
+
{
|
9
|
+
// ----------------------------------------------------------------------------------------------------
|
10
|
+
// ScrollMe object
|
11
|
+
|
12
|
+
var _this = {};
|
13
|
+
|
14
|
+
// ----------------------------------------------------------------------------------------------------
|
15
|
+
// Properties
|
16
|
+
|
17
|
+
var $document = $( document );
|
18
|
+
var $window = $( window );
|
19
|
+
|
20
|
+
_this.body_height = 0;
|
21
|
+
|
22
|
+
_this.viewport_height = 0;
|
23
|
+
|
24
|
+
_this.viewport_top = 0;
|
25
|
+
_this.viewport_bottom = 0;
|
26
|
+
|
27
|
+
_this.viewport_top_previous = -1;
|
28
|
+
|
29
|
+
_this.elements = [];
|
30
|
+
_this.elements_in_view = [];
|
31
|
+
|
32
|
+
_this.property_defaults =
|
33
|
+
{
|
34
|
+
'opacity' : 1,
|
35
|
+
'translatex' : 0,
|
36
|
+
'translatey' : 0,
|
37
|
+
'translatez' : 0,
|
38
|
+
'rotatex' : 0,
|
39
|
+
'rotatey' : 0,
|
40
|
+
'rotatez' : 0,
|
41
|
+
'scale' : 1,
|
42
|
+
'scalex' : 1,
|
43
|
+
'scaley' : 1,
|
44
|
+
'scalez' : 1
|
45
|
+
};
|
46
|
+
|
47
|
+
_this.scrollme_selector = '.scrollme';
|
48
|
+
_this.animateme_selector = '.animateme';
|
49
|
+
|
50
|
+
_this.update_interval = 10;
|
51
|
+
|
52
|
+
// Easing functions
|
53
|
+
|
54
|
+
_this.easing_functions =
|
55
|
+
{
|
56
|
+
'linear' : function( x )
|
57
|
+
{
|
58
|
+
return x;
|
59
|
+
},
|
60
|
+
|
61
|
+
'easeout' : function( x )
|
62
|
+
{
|
63
|
+
return x * x * x;
|
64
|
+
},
|
65
|
+
|
66
|
+
'easein' : function( x )
|
67
|
+
{
|
68
|
+
x = 1 - x;
|
69
|
+
return 1 - ( x * x * x );
|
70
|
+
},
|
71
|
+
|
72
|
+
'easeinout' : function( x )
|
73
|
+
{
|
74
|
+
if( x < 0.5 )
|
75
|
+
{
|
76
|
+
return ( 4 * x * x * x );
|
77
|
+
}
|
78
|
+
else
|
79
|
+
{
|
80
|
+
x = 1 - x;
|
81
|
+
return 1 - ( 4 * x * x * x ) ;
|
82
|
+
}
|
83
|
+
}
|
84
|
+
};
|
85
|
+
|
86
|
+
// Document events to bind initialisation to
|
87
|
+
|
88
|
+
_this.init_events =
|
89
|
+
[
|
90
|
+
'ready',
|
91
|
+
'page:load', // Turbolinks
|
92
|
+
'page:change' // Turbolinks
|
93
|
+
];
|
94
|
+
|
95
|
+
// ----------------------------------------------------------------------------------------------------
|
96
|
+
// Initialisation conditions
|
97
|
+
|
98
|
+
_this.init_if = function() { return true; }
|
99
|
+
|
100
|
+
// ----------------------------------------------------------------------------------------------------
|
101
|
+
// Initialisation
|
102
|
+
|
103
|
+
_this.init = function()
|
104
|
+
{
|
105
|
+
// Cancel if initialisation conditions not met
|
106
|
+
|
107
|
+
if( !_this.init_if() ) return false;
|
108
|
+
|
109
|
+
// Load all elements to animate
|
110
|
+
|
111
|
+
_this.init_elements();
|
112
|
+
|
113
|
+
// Get element & viewport sizes
|
114
|
+
|
115
|
+
_this.on_resize();
|
116
|
+
|
117
|
+
// Recalculate heights & positions on resize and rotate
|
118
|
+
|
119
|
+
$window.on( 'resize orientationchange' , function(){ _this.on_resize(); } );
|
120
|
+
|
121
|
+
// Recalculate heights & positions when page is fully loaded + a bit just in case
|
122
|
+
|
123
|
+
$window.load( function(){ setTimeout( function(){ _this.on_resize(); } , 100 ) });
|
124
|
+
|
125
|
+
// Start animating
|
126
|
+
|
127
|
+
setInterval( _this.update , _this.update_interval );
|
128
|
+
|
129
|
+
return true;
|
130
|
+
}
|
131
|
+
|
132
|
+
// ----------------------------------------------------------------------------------------------------
|
133
|
+
// Get list and pre-load animated elements
|
134
|
+
|
135
|
+
_this.init_elements = function()
|
136
|
+
{
|
137
|
+
// For each reference element
|
138
|
+
|
139
|
+
$( _this.scrollme_selector ).each( function()
|
140
|
+
{
|
141
|
+
var element = {};
|
142
|
+
|
143
|
+
element.element = $( this );
|
144
|
+
|
145
|
+
var effects = [];
|
146
|
+
|
147
|
+
// For each animated element
|
148
|
+
|
149
|
+
$( this ).find( _this.animateme_selector ).addBack( _this.animateme_selector ).each( function()
|
150
|
+
{
|
151
|
+
// Get effect details
|
152
|
+
|
153
|
+
var effect = {};
|
154
|
+
|
155
|
+
effect.element = $( this );
|
156
|
+
|
157
|
+
effect.when = effect.element.data( 'when' );
|
158
|
+
effect.from = effect.element.data( 'from' );
|
159
|
+
effect.to = effect.element.data( 'to' );
|
160
|
+
|
161
|
+
if( effect.element.is( '[data-crop]' ) )
|
162
|
+
{
|
163
|
+
effect.crop = effect.element.data( 'crop' );
|
164
|
+
}
|
165
|
+
else
|
166
|
+
{
|
167
|
+
effect.crop = true;
|
168
|
+
}
|
169
|
+
|
170
|
+
if( effect.element.is( '[data-easing]' ) )
|
171
|
+
{
|
172
|
+
effect.easing = _this.easing_functions[ effect.element.data( 'easing' ) ]
|
173
|
+
}
|
174
|
+
else
|
175
|
+
{
|
176
|
+
effect.easing = _this.easing_functions[ 'easeout' ];
|
177
|
+
}
|
178
|
+
|
179
|
+
// Get animated properties
|
180
|
+
|
181
|
+
var properties = {};
|
182
|
+
|
183
|
+
if( effect.element.is( '[data-opacity]' ) ) properties.opacity = effect.element.data( 'opacity' );
|
184
|
+
if( effect.element.is( '[data-translatex]' ) ) properties.translatex = effect.element.data( 'translatex' );
|
185
|
+
if( effect.element.is( '[data-translatey]' ) ) properties.translatey = effect.element.data( 'translatey' );
|
186
|
+
if( effect.element.is( '[data-translatez]' ) ) properties.translatez = effect.element.data( 'translatez' );
|
187
|
+
if( effect.element.is( '[data-rotatex]' ) ) properties.rotatex = effect.element.data( 'rotatex' );
|
188
|
+
if( effect.element.is( '[data-rotatey]' ) ) properties.rotatey = effect.element.data( 'rotatey' );
|
189
|
+
if( effect.element.is( '[data-rotatez]' ) ) properties.rotatez = effect.element.data( 'rotatez' );
|
190
|
+
if( effect.element.is( '[data-scale]' ) ) properties.scale = effect.element.data( 'scale' );
|
191
|
+
if( effect.element.is( '[data-scalex]' ) ) properties.scalex = effect.element.data( 'scalex' );
|
192
|
+
if( effect.element.is( '[data-scaley]' ) ) properties.scaley = effect.element.data( 'scaley' );
|
193
|
+
if( effect.element.is( '[data-scalez]' ) ) properties.scalez = effect.element.data( 'scalez' );
|
194
|
+
|
195
|
+
effect.properties = properties;
|
196
|
+
|
197
|
+
effects.push( effect );
|
198
|
+
});
|
199
|
+
|
200
|
+
element.effects = effects;
|
201
|
+
|
202
|
+
_this.elements.push( element );
|
203
|
+
});
|
204
|
+
}
|
205
|
+
|
206
|
+
// ----------------------------------------------------------------------------------------------------
|
207
|
+
// Update elements
|
208
|
+
|
209
|
+
_this.update = function()
|
210
|
+
{
|
211
|
+
window.requestAnimationFrame( function()
|
212
|
+
{
|
213
|
+
_this.update_viewport_position();
|
214
|
+
|
215
|
+
if( _this.viewport_top_previous != _this.viewport_top )
|
216
|
+
{
|
217
|
+
_this.update_elements_in_view();
|
218
|
+
_this.animate();
|
219
|
+
}
|
220
|
+
|
221
|
+
_this.viewport_top_previous = _this.viewport_top;
|
222
|
+
});
|
223
|
+
}
|
224
|
+
|
225
|
+
// ----------------------------------------------------------------------------------------------------
|
226
|
+
// Animate stuff
|
227
|
+
|
228
|
+
_this.animate = function()
|
229
|
+
{
|
230
|
+
// For each element in viewport
|
231
|
+
|
232
|
+
var elements_in_view_length = _this.elements_in_view.length;
|
233
|
+
|
234
|
+
for( var i=0 ; i<elements_in_view_length ; i++ )
|
235
|
+
{
|
236
|
+
var element = _this.elements_in_view[i];
|
237
|
+
|
238
|
+
// For each effect
|
239
|
+
|
240
|
+
var effects_length = element.effects.length;
|
241
|
+
|
242
|
+
for( var e=0 ; e<effects_length ; e++ )
|
243
|
+
{
|
244
|
+
var effect = element.effects[e];
|
245
|
+
|
246
|
+
// Get effect animation boundaries
|
247
|
+
|
248
|
+
switch( effect.when )
|
249
|
+
{
|
250
|
+
case 'view' : // Maintained for backwards compatibility
|
251
|
+
case 'span' :
|
252
|
+
var start = element.top - _this.viewport_height;
|
253
|
+
var end = element.bottom;
|
254
|
+
break;
|
255
|
+
|
256
|
+
case 'exit' :
|
257
|
+
var start = element.bottom - _this.viewport_height;
|
258
|
+
var end = element.bottom;
|
259
|
+
break;
|
260
|
+
|
261
|
+
default :
|
262
|
+
var start = element.top - _this.viewport_height;
|
263
|
+
var end = element.top;
|
264
|
+
break;
|
265
|
+
}
|
266
|
+
|
267
|
+
// Crop boundaries
|
268
|
+
|
269
|
+
if( effect.crop )
|
270
|
+
{
|
271
|
+
if( start < 0 ) start = 0;
|
272
|
+
if( end > ( _this.body_height - _this.viewport_height ) ) end = _this.body_height - _this.viewport_height;
|
273
|
+
}
|
274
|
+
|
275
|
+
// Get scroll position of reference selector
|
276
|
+
|
277
|
+
var scroll = ( _this.viewport_top - start ) / ( end - start );
|
278
|
+
|
279
|
+
// Get relative scroll position for effect
|
280
|
+
|
281
|
+
var from = effect[ 'from' ];
|
282
|
+
var to = effect[ 'to' ];
|
283
|
+
|
284
|
+
var length = to - from;
|
285
|
+
|
286
|
+
var scroll_relative = ( scroll - from ) / length;
|
287
|
+
|
288
|
+
// Apply easing
|
289
|
+
|
290
|
+
var scroll_eased = effect.easing( scroll_relative );
|
291
|
+
|
292
|
+
// Get new value for each property
|
293
|
+
|
294
|
+
var opacity = _this.animate_value( scroll , scroll_eased , from , to , effect , 'opacity' );
|
295
|
+
var translatey = _this.animate_value( scroll , scroll_eased , from , to , effect , 'translatey' );
|
296
|
+
var translatex = _this.animate_value( scroll , scroll_eased , from , to , effect , 'translatex' );
|
297
|
+
var translatez = _this.animate_value( scroll , scroll_eased , from , to , effect , 'translatez' );
|
298
|
+
var rotatex = _this.animate_value( scroll , scroll_eased , from , to , effect , 'rotatex' );
|
299
|
+
var rotatey = _this.animate_value( scroll , scroll_eased , from , to , effect , 'rotatey' );
|
300
|
+
var rotatez = _this.animate_value( scroll , scroll_eased , from , to , effect , 'rotatez' );
|
301
|
+
var scale = _this.animate_value( scroll , scroll_eased , from , to , effect , 'scale' );
|
302
|
+
var scalex = _this.animate_value( scroll , scroll_eased , from , to , effect , 'scalex' );
|
303
|
+
var scaley = _this.animate_value( scroll , scroll_eased , from , to , effect , 'scaley' );
|
304
|
+
var scalez = _this.animate_value( scroll , scroll_eased , from , to , effect , 'scalez' );
|
305
|
+
|
306
|
+
// Override scale values
|
307
|
+
|
308
|
+
if( 'scale' in effect.properties )
|
309
|
+
{
|
310
|
+
scalex = scale;
|
311
|
+
scaley = scale;
|
312
|
+
scalez = scale;
|
313
|
+
}
|
314
|
+
|
315
|
+
// Update properties
|
316
|
+
|
317
|
+
effect.element.css(
|
318
|
+
{
|
319
|
+
'opacity' : opacity,
|
320
|
+
'transform' : 'translate3d( '+translatex+'px , '+translatey+'px , '+translatez+'px ) rotateX( '+rotatex+'deg ) rotateY( '+rotatey+'deg ) rotateZ( '+rotatez+'deg ) scale3d( '+scalex+' , '+scaley+' , '+scalez+' )'
|
321
|
+
} );
|
322
|
+
}
|
323
|
+
}
|
324
|
+
}
|
325
|
+
|
326
|
+
// ----------------------------------------------------------------------------------------------------
|
327
|
+
// Calculate property values
|
328
|
+
|
329
|
+
_this.animate_value = function( scroll , scroll_eased , from , to , effect , property )
|
330
|
+
{
|
331
|
+
var value_default = _this.property_defaults[ property ];
|
332
|
+
|
333
|
+
// Return default value if property is not animated
|
334
|
+
|
335
|
+
if( !( property in effect.properties ) ) return value_default;
|
336
|
+
|
337
|
+
var value_target = effect.properties[ property ];
|
338
|
+
|
339
|
+
var forwards = ( to > from ) ? true : false;
|
340
|
+
|
341
|
+
// Return boundary value if outside effect boundaries
|
342
|
+
|
343
|
+
if( scroll < from && forwards ) { return value_default; }
|
344
|
+
if( scroll > to && forwards ) { return value_target; }
|
345
|
+
|
346
|
+
if( scroll > from && !forwards ) { return value_default; }
|
347
|
+
if( scroll < to && !forwards ) { return value_target; }
|
348
|
+
|
349
|
+
// Calculate new property value
|
350
|
+
|
351
|
+
var new_value = value_default + ( scroll_eased * ( value_target - value_default ) );
|
352
|
+
|
353
|
+
// Round as required
|
354
|
+
|
355
|
+
switch( property )
|
356
|
+
{
|
357
|
+
case 'opacity' : new_value = new_value.toFixed(2); break;
|
358
|
+
case 'translatex' : new_value = new_value.toFixed(0); break;
|
359
|
+
case 'translatey' : new_value = new_value.toFixed(0); break;
|
360
|
+
case 'translatez' : new_value = new_value.toFixed(0); break;
|
361
|
+
case 'rotatex' : new_value = new_value.toFixed(1); break;
|
362
|
+
case 'rotatey' : new_value = new_value.toFixed(1); break;
|
363
|
+
case 'rotatez' : new_value = new_value.toFixed(1); break;
|
364
|
+
case 'scale' : new_value = new_value.toFixed(3); break;
|
365
|
+
default : break;
|
366
|
+
}
|
367
|
+
|
368
|
+
// Done
|
369
|
+
|
370
|
+
return new_value;
|
371
|
+
}
|
372
|
+
|
373
|
+
// ----------------------------------------------------------------------------------------------------
|
374
|
+
// Update viewport position
|
375
|
+
|
376
|
+
_this.update_viewport_position = function()
|
377
|
+
{
|
378
|
+
_this.viewport_top = $window.scrollTop();
|
379
|
+
_this.viewport_bottom = _this.viewport_top + _this.viewport_height;
|
380
|
+
}
|
381
|
+
|
382
|
+
// ----------------------------------------------------------------------------------------------------
|
383
|
+
// Update list of elements in view
|
384
|
+
|
385
|
+
_this.update_elements_in_view = function()
|
386
|
+
{
|
387
|
+
_this.elements_in_view = [];
|
388
|
+
|
389
|
+
var elements_length = _this.elements.length;
|
390
|
+
|
391
|
+
for( var i=0 ; i<elements_length ; i++ )
|
392
|
+
{
|
393
|
+
if ( ( _this.elements[i].top < _this.viewport_bottom ) && ( _this.elements[i].bottom > _this.viewport_top ) )
|
394
|
+
{
|
395
|
+
_this.elements_in_view.push( _this.elements[i] );
|
396
|
+
}
|
397
|
+
}
|
398
|
+
}
|
399
|
+
|
400
|
+
// ----------------------------------------------------------------------------------------------------
|
401
|
+
// Stuff to do on resize
|
402
|
+
|
403
|
+
_this.on_resize = function()
|
404
|
+
{
|
405
|
+
// Update viewport/element data
|
406
|
+
|
407
|
+
_this.update_viewport();
|
408
|
+
_this.update_element_heights();
|
409
|
+
|
410
|
+
// Update display
|
411
|
+
|
412
|
+
_this.update_viewport_position();
|
413
|
+
_this.update_elements_in_view();
|
414
|
+
_this.animate();
|
415
|
+
}
|
416
|
+
|
417
|
+
// ----------------------------------------------------------------------------------------------------
|
418
|
+
// Update viewport parameters
|
419
|
+
|
420
|
+
_this.update_viewport = function()
|
421
|
+
{
|
422
|
+
_this.body_height = $document.height();
|
423
|
+
_this.viewport_height = $window.height();
|
424
|
+
}
|
425
|
+
|
426
|
+
// ----------------------------------------------------------------------------------------------------
|
427
|
+
// Update height of animated elements
|
428
|
+
|
429
|
+
_this.update_element_heights = function()
|
430
|
+
{
|
431
|
+
var elements_length = _this.elements.length;
|
432
|
+
|
433
|
+
for( var i=0 ; i<elements_length ; i++ )
|
434
|
+
{
|
435
|
+
var element_height = _this.elements[i].element.outerHeight();
|
436
|
+
var position = _this.elements[i].element.offset();
|
437
|
+
|
438
|
+
_this.elements[i].height = element_height;
|
439
|
+
_this.elements[i].top = position.top;
|
440
|
+
_this.elements[i].bottom = position.top + element_height;
|
441
|
+
}
|
442
|
+
}
|
443
|
+
|
444
|
+
// ----------------------------------------------------------------------------------------------------
|
445
|
+
// Bind initialisation
|
446
|
+
|
447
|
+
$document.on( _this.init_events.join( ' ' ) , function(){ _this.init(); } );
|
448
|
+
|
449
|
+
// ----------------------------------------------------------------------------------------------------
|
450
|
+
|
451
|
+
return _this;
|
452
|
+
|
453
|
+
// ----------------------------------------------------------------------------------------------------
|
454
|
+
|
455
|
+
})( jQuery );
|