first commit
This commit is contained in:
@@ -0,0 +1,250 @@
|
||||
/**
|
||||
* animOnScroll.js v1.0.0
|
||||
* http://www.codrops.com
|
||||
*
|
||||
* Licensed under the MIT license.
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
*
|
||||
* Copyright 2013, Codrops
|
||||
* http://www.codrops.com
|
||||
*/
|
||||
;( function( window ) {
|
||||
|
||||
'use strict';
|
||||
|
||||
var docElem = window.document.documentElement;
|
||||
|
||||
function classReg( className ) {
|
||||
return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
|
||||
}
|
||||
|
||||
// classList support for class management
|
||||
// altho to be fair, the api sucks because it won't accept multiple classes at once
|
||||
var hasClass, addClass, removeClass;
|
||||
|
||||
if ( 'classList' in document.documentElement ) {
|
||||
hasClass = function( elem, c ) {
|
||||
return elem.classList.contains( c );
|
||||
};
|
||||
addClass = function( elem, c ) {
|
||||
elem.classList.add( c );
|
||||
};
|
||||
removeClass = function( elem, c ) {
|
||||
elem.classList.remove( c );
|
||||
};
|
||||
}
|
||||
else {
|
||||
hasClass = function( elem, c ) {
|
||||
return classReg( c ).test( elem.className );
|
||||
};
|
||||
addClass = function( elem, c ) {
|
||||
if ( !hasClass( elem, c ) ) {
|
||||
elem.className = elem.className + ' ' + c;
|
||||
}
|
||||
};
|
||||
removeClass = function( elem, c ) {
|
||||
elem.className = elem.className.replace( classReg( c ), ' ' );
|
||||
};
|
||||
}
|
||||
|
||||
function toggleClass( elem, c ) {
|
||||
var fn = hasClass( elem, c ) ? removeClass : addClass;
|
||||
fn( elem, c );
|
||||
}
|
||||
|
||||
var classie = {
|
||||
// full names
|
||||
hasClass: hasClass,
|
||||
addClass: addClass,
|
||||
removeClass: removeClass,
|
||||
toggleClass: toggleClass,
|
||||
// short names
|
||||
has: hasClass,
|
||||
add: addClass,
|
||||
remove: removeClass,
|
||||
toggle: toggleClass
|
||||
};
|
||||
|
||||
// transport
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( classie );
|
||||
} else {
|
||||
// browser global
|
||||
window.classie = classie;
|
||||
}
|
||||
|
||||
function getViewportH() {
|
||||
var client = docElem['clientHeight'],
|
||||
inner = window['innerHeight'];
|
||||
|
||||
if( client < inner )
|
||||
return inner;
|
||||
else
|
||||
return client;
|
||||
}
|
||||
|
||||
function scrollY() {
|
||||
return window.pageYOffset || docElem.scrollTop;
|
||||
}
|
||||
|
||||
// http://stackoverflow.com/a/5598797/989439
|
||||
function getOffset( el ) {
|
||||
var offsetTop = 0, offsetLeft = 0;
|
||||
do {
|
||||
if ( !isNaN( el.offsetTop ) ) {
|
||||
offsetTop += el.offsetTop;
|
||||
}
|
||||
if ( !isNaN( el.offsetLeft ) ) {
|
||||
offsetLeft += el.offsetLeft;
|
||||
}
|
||||
} while( el = el.offsetParent )
|
||||
|
||||
return {
|
||||
top : offsetTop,
|
||||
left : offsetLeft
|
||||
}
|
||||
}
|
||||
|
||||
function inViewport( el, h ) {
|
||||
var elH = el.offsetHeight,
|
||||
scrolled = scrollY(),
|
||||
viewed = scrolled + getViewportH(),
|
||||
elTop = getOffset(el).top,
|
||||
elBottom = elTop + elH,
|
||||
// if 0, the element is considered in the viewport as soon as it enters.
|
||||
// if 1, the element is considered in the viewport only when it's fully inside
|
||||
// value in percentage (1 >= h >= 0)
|
||||
h = h || 0;
|
||||
|
||||
return (elTop + elH * h) <= viewed && (elBottom - elH * h) >= scrolled;
|
||||
}
|
||||
|
||||
function extend( a, b ) {
|
||||
for( var key in b ) {
|
||||
if( b.hasOwnProperty( key ) ) {
|
||||
a[key] = b[key];
|
||||
}
|
||||
}
|
||||
return a;
|
||||
}
|
||||
|
||||
function AnimOnScroll( el, options, masonryOptions ) {
|
||||
this.el = el;
|
||||
this.options = extend( this.defaults, options );
|
||||
this.masonryOptions = masonryOptions;
|
||||
this._init();
|
||||
}
|
||||
|
||||
AnimOnScroll.prototype = {
|
||||
defaults : {
|
||||
// Minimum and a maximum duration of the animation (random value is chosen)
|
||||
minDuration : 0,
|
||||
maxDuration : 0,
|
||||
// The viewportFactor defines how much of the appearing item has to be visible in order to trigger the animation
|
||||
// if we'd use a value of 0, this would mean that it would add the animation class as soon as the item is in the viewport.
|
||||
// If we were to use the value of 1, the animation would only be triggered when we see all of the item in the viewport (100% of it)
|
||||
viewportFactor : 0,
|
||||
animateVisible : false
|
||||
},
|
||||
_init : function() {
|
||||
this.items = Array.prototype.slice.call( jQuery(this.el).find('.masonry-item') );
|
||||
this.itemsCount = this.items.length;
|
||||
this.itemsRenderedCount = 0;
|
||||
this.didScroll = false;
|
||||
|
||||
var self = this;
|
||||
|
||||
imagesLoaded( this.el, function() {
|
||||
|
||||
// initialize masonry
|
||||
if (self.masonryOptions){
|
||||
new Masonry( self.el, self.masonryOptions );
|
||||
}
|
||||
|
||||
if( Modernizr.cssanimations ) {
|
||||
// the items already shown...
|
||||
self.items.forEach( function( el, i ) {
|
||||
if( inViewport( el ) ) {
|
||||
self._checkTotalRendered();
|
||||
|
||||
//fade item after init
|
||||
if (self.options.animateVisible){
|
||||
setTimeout( function() {
|
||||
self._scrollPage();
|
||||
}, 500 );
|
||||
} else {
|
||||
//show item on init
|
||||
classie.add( el, 'shown' );
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
||||
// animate on scroll the items inside the viewport
|
||||
window.addEventListener( 'scroll', function() {
|
||||
self._onScrollFn();
|
||||
}, false );
|
||||
window.addEventListener( 'resize', function() {
|
||||
self._resizeHandler();
|
||||
}, false );
|
||||
}
|
||||
|
||||
});
|
||||
},
|
||||
_onScrollFn : function() {
|
||||
var self = this;
|
||||
if( !this.didScroll ) {
|
||||
this.didScroll = true;
|
||||
setTimeout( function() { self._scrollPage(); }, 60 );
|
||||
}
|
||||
},
|
||||
_scrollPage : function() {
|
||||
var self = this;
|
||||
this.items.forEach( function( el, i ) {
|
||||
if( !classie.has( el, 'shown' ) && !classie.has( el, 'animate' ) && inViewport( el, self.options.viewportFactor ) ) {
|
||||
setTimeout( function() {
|
||||
var el_offset = $( self.el ).offset();
|
||||
var el_scrollY = (parseFloat(scrollY() - el_offset.top) < 0) ? 0 : (scrollY() - el_offset.top);
|
||||
var perspY = el_scrollY + getViewportH() / 2;
|
||||
self.el.style.WebkitPerspectiveOrigin = '50% ' + perspY + 'px';
|
||||
self.el.style.MozPerspectiveOrigin = '50% ' + perspY + 'px';
|
||||
self.el.style.perspectiveOrigin = '50% ' + perspY + 'px';
|
||||
|
||||
self._checkTotalRendered();
|
||||
|
||||
if( self.options.minDuration && self.options.maxDuration ) {
|
||||
var randDuration = ( Math.random() * ( self.options.maxDuration - self.options.minDuration ) + self.options.minDuration ) + 's';
|
||||
el.style.WebkitAnimationDuration = randDuration;
|
||||
el.style.MozAnimationDuration = randDuration;
|
||||
el.style.animationDuration = randDuration;
|
||||
}
|
||||
|
||||
classie.add( el, 'animate' );
|
||||
}, 25 );
|
||||
}
|
||||
});
|
||||
this.didScroll = false;
|
||||
},
|
||||
_resizeHandler : function() {
|
||||
var self = this;
|
||||
function delayed() {
|
||||
self._scrollPage();
|
||||
self.resizeTimeout = null;
|
||||
}
|
||||
if ( this.resizeTimeout ) {
|
||||
clearTimeout( this.resizeTimeout );
|
||||
}
|
||||
this.resizeTimeout = setTimeout( delayed, 1000 );
|
||||
},
|
||||
_checkTotalRendered : function() {
|
||||
++this.itemsRenderedCount;
|
||||
if( this.itemsRenderedCount === this.itemsCount ) {
|
||||
window.removeEventListener( 'scroll', this._onScrollFn );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// add to global namespace
|
||||
window.AnimOnScroll = AnimOnScroll;
|
||||
|
||||
} )( window );
|
||||
@@ -0,0 +1,209 @@
|
||||
.masonry-grid .masonry-item.shown,
|
||||
.no-js .masonry-grid .masonry-item,
|
||||
.no-cssanimations .masonry-grid .masonry-item
|
||||
{
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.masonry-grid .masonry-item a,
|
||||
.masonry-grid .masonry-item img {
|
||||
outline: none;
|
||||
border: none;
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* Effect 1: opacity */
|
||||
.masonry-grid.effect-1 .masonry-item.animate {
|
||||
-webkit-animation: fadeIn 0.65s ease forwards;
|
||||
animation: fadeIn 0.65s ease forwards;
|
||||
}
|
||||
|
||||
@-webkit-keyframes fadeIn {
|
||||
0% { }
|
||||
100% { opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes fadeIn {
|
||||
0% { }
|
||||
100% { opacity: 1; }
|
||||
}
|
||||
|
||||
/* Effect 2: Move Up */
|
||||
.masonry-grid.effect-2 .masonry-item.animate {
|
||||
-webkit-transform: translateY(200px);
|
||||
transform: translateY(200px);
|
||||
-webkit-animation: moveUp 0.65s ease forwards;
|
||||
animation: moveUp 0.65s ease forwards;
|
||||
}
|
||||
|
||||
@-webkit-keyframes moveUp {
|
||||
0% { }
|
||||
100% { -webkit-transform: translateY(0); opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes moveUp {
|
||||
0% { }
|
||||
100% { -webkit-transform: translateY(0); transform: translateY(0); opacity: 1; }
|
||||
}
|
||||
|
||||
/* Effect 3: Scale up */
|
||||
.masonry-grid.effect-3 .masonry-item.animate {
|
||||
-webkit-transform: scale(0.6);
|
||||
transform: scale(0.6);
|
||||
-webkit-animation: scaleUp 0.65s ease-in-out forwards;
|
||||
animation: scaleUp 0.65s ease-in-out forwards;
|
||||
}
|
||||
|
||||
@-webkit-keyframes scaleUp {
|
||||
0% { }
|
||||
100% { -webkit-transform: scale(1); opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes scaleUp {
|
||||
0% { }
|
||||
100% { -webkit-transform: scale(1); transform: scale(1); opacity: 1; }
|
||||
}
|
||||
|
||||
/* Effect 4: fall perspective */
|
||||
.masonry-grid.effect-4 {
|
||||
-webkit-perspective: 1300px;
|
||||
perspective: 1300px;
|
||||
}
|
||||
|
||||
.masonry-grid.effect-4 .masonry-item.animate {
|
||||
-webkit-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d;
|
||||
-webkit-transform: translateZ(400px) translateY(300px) rotateX(-90deg);
|
||||
transform: translateZ(400px) translateY(300px) rotateX(-90deg);
|
||||
-webkit-animation: fallPerspective .8s ease-in-out forwards;
|
||||
animation: fallPerspective .8s ease-in-out forwards;
|
||||
}
|
||||
|
||||
@-webkit-keyframes fallPerspective {
|
||||
0% { }
|
||||
100% { -webkit-transform: translateZ(0px) translateY(0px) rotateX(0deg); opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes fallPerspective {
|
||||
0% { }
|
||||
100% { -webkit-transform: translateZ(0px) translateY(0px) rotateX(0deg); transform: translateZ(0px) translateY(0px) rotateX(0deg); opacity: 1; }
|
||||
}
|
||||
|
||||
/* Effect 5: fly (based on http://lab.hakim.se/scroll-effects/ by @hakimel) */
|
||||
.masonry-grid.effect-5 {
|
||||
-webkit-perspective: 1300px;
|
||||
perspective: 1300px;
|
||||
}
|
||||
|
||||
.masonry-grid.effect-5 .masonry-item.animate {
|
||||
-webkit-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d;
|
||||
-webkit-transform-origin: 50% 50% -300px;
|
||||
transform-origin: 50% 50% -300px;
|
||||
-webkit-transform: rotateX(-180deg);
|
||||
transform: rotateX(-180deg);
|
||||
-webkit-animation: fly .8s ease-in-out forwards;
|
||||
animation: fly .8s ease-in-out forwards;
|
||||
}
|
||||
|
||||
@-webkit-keyframes fly {
|
||||
0% { }
|
||||
100% { -webkit-transform: rotateX(0deg); opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes fly {
|
||||
0% { }
|
||||
100% { -webkit-transform: rotateX(0deg); transform: rotateX(0deg); opacity: 1; }
|
||||
}
|
||||
|
||||
/* Effect 6: flip (based on http://lab.hakim.se/scroll-effects/ by @hakimel) */
|
||||
.masonry-grid.effect-6 {
|
||||
-webkit-perspective: 1300px;
|
||||
perspective: 1300px;
|
||||
}
|
||||
|
||||
.masonry-grid.effect-6 .masonry-item.animate {
|
||||
-webkit-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d;
|
||||
-webkit-transform-origin: 0% 0%;
|
||||
transform-origin: 0% 0%;
|
||||
-webkit-transform: rotateX(-80deg);
|
||||
transform: rotateX(-80deg);
|
||||
-webkit-animation: flip .8s ease-in-out forwards;
|
||||
animation: flip .8s ease-in-out forwards;
|
||||
}
|
||||
|
||||
@-webkit-keyframes flip {
|
||||
0% { }
|
||||
100% { -webkit-transform: rotateX(0deg); opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes flip {
|
||||
0% { }
|
||||
100% { -webkit-transform: rotateX(0deg); transform: rotateX(0deg); opacity: 1; }
|
||||
}
|
||||
|
||||
/* Effect 7: helix (based on http://lab.hakim.se/scroll-effects/ by @hakimel) */
|
||||
.masonry-grid.effect-7 {
|
||||
-webkit-perspective: 1300px;
|
||||
perspective: 1300px;
|
||||
}
|
||||
|
||||
.masonry-grid.effect-7 .masonry-item.animate {
|
||||
-webkit-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d;
|
||||
-webkit-transform: rotateY(-180deg);
|
||||
transform: rotateY(-180deg);
|
||||
-webkit-animation: helix .8s ease-in-out forwards;
|
||||
animation: helix .8s ease-in-out forwards;
|
||||
}
|
||||
|
||||
@-webkit-keyframes helix {
|
||||
0% { }
|
||||
100% { -webkit-transform: rotateY(0deg); opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes helix {
|
||||
0% { }
|
||||
100% { -webkit-transform: rotateY(0deg); transform: rotateY(0deg); opacity: 1; }
|
||||
}
|
||||
|
||||
/* Effect 8: Zoom In */
|
||||
.masonry-grid.effect-8 {
|
||||
-webkit-perspective: 1300px;
|
||||
perspective: 1300px;
|
||||
}
|
||||
|
||||
.masonry-grid.effect-8 .masonry-item.animate {
|
||||
-webkit-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d;
|
||||
-webkit-transform: scale(0.4);
|
||||
transform: scale(0.4);
|
||||
-webkit-animation: popUp .8s ease-in forwards;
|
||||
animation: popUp .8s ease-in forwards;
|
||||
}
|
||||
|
||||
@-webkit-keyframes popUp {
|
||||
0% { }
|
||||
70% { -webkit-transform: scale(1.1); opacity: .8; -webkit-animation-timing-function: ease-out; }
|
||||
100% { -webkit-transform: scale(1); opacity: 1; }
|
||||
}
|
||||
|
||||
@keyframes popUp {
|
||||
0% { }
|
||||
70% { -webkit-transform: scale(1.1); transform: scale(1.1); opacity: .8; -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; }
|
||||
100% { -webkit-transform: scale(1); transform: scale(1); opacity: 1; }
|
||||
}
|
||||
|
||||
@media screen and (max-width: 900px) {
|
||||
.masonry-grid .masonry-item {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 400px) {
|
||||
.masonry-grid .masonry-item {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,247 @@
|
||||
var __assign = (this && this.__assign) || function () {
|
||||
__assign = Object.assign || function(t) {
|
||||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||
s = arguments[i];
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
||||
t[p] = s[p];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
return __assign.apply(this, arguments);
|
||||
};
|
||||
// playground: stackblitz.com/edit/countup-typescript
|
||||
var CountUp = /** @class */ (function () {
|
||||
function CountUp(target, endVal, options) {
|
||||
var _this = this;
|
||||
this.target = target;
|
||||
this.endVal = endVal;
|
||||
this.options = options;
|
||||
this.version = '2.0.4';
|
||||
this.defaults = {
|
||||
startVal: 0,
|
||||
decimalPlaces: 0,
|
||||
duration: 2,
|
||||
useEasing: true,
|
||||
useGrouping: true,
|
||||
smartEasingThreshold: 999,
|
||||
smartEasingAmount: 333,
|
||||
separator: ',',
|
||||
decimal: '.',
|
||||
prefix: '',
|
||||
suffix: ''
|
||||
};
|
||||
this.finalEndVal = null; // for smart easing
|
||||
this.useEasing = true;
|
||||
this.countDown = false;
|
||||
this.error = '';
|
||||
this.startVal = 0;
|
||||
this.paused = true;
|
||||
this.count = function (timestamp) {
|
||||
if (!_this.startTime) {
|
||||
_this.startTime = timestamp;
|
||||
}
|
||||
var progress = timestamp - _this.startTime;
|
||||
_this.remaining = _this.duration - progress;
|
||||
// to ease or not to ease
|
||||
if (_this.useEasing) {
|
||||
if (_this.countDown) {
|
||||
_this.frameVal = _this.startVal - _this.easingFn(progress, 0, _this.startVal - _this.endVal, _this.duration);
|
||||
}
|
||||
else {
|
||||
_this.frameVal = _this.easingFn(progress, _this.startVal, _this.endVal - _this.startVal, _this.duration);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (_this.countDown) {
|
||||
_this.frameVal = _this.startVal - ((_this.startVal - _this.endVal) * (progress / _this.duration));
|
||||
}
|
||||
else {
|
||||
_this.frameVal = _this.startVal + (_this.endVal - _this.startVal) * (progress / _this.duration);
|
||||
}
|
||||
}
|
||||
// don't go past endVal since progress can exceed duration in the last frame
|
||||
if (_this.countDown) {
|
||||
_this.frameVal = (_this.frameVal < _this.endVal) ? _this.endVal : _this.frameVal;
|
||||
}
|
||||
else {
|
||||
_this.frameVal = (_this.frameVal > _this.endVal) ? _this.endVal : _this.frameVal;
|
||||
}
|
||||
// decimal
|
||||
_this.frameVal = Math.round(_this.frameVal * _this.decimalMult) / _this.decimalMult;
|
||||
// format and print value
|
||||
_this.printValue(_this.frameVal);
|
||||
// whether to continue
|
||||
if (progress < _this.duration) {
|
||||
_this.rAF = requestAnimationFrame(_this.count);
|
||||
}
|
||||
else if (_this.finalEndVal !== null) {
|
||||
// smart easing
|
||||
_this.update(_this.finalEndVal);
|
||||
}
|
||||
else {
|
||||
if (_this.callback) {
|
||||
_this.callback();
|
||||
}
|
||||
}
|
||||
};
|
||||
// default format and easing functions
|
||||
this.formatNumber = function (num) {
|
||||
var neg = (num < 0) ? '-' : '';
|
||||
var result, x, x1, x2, x3;
|
||||
result = Math.abs(num).toFixed(_this.options.decimalPlaces);
|
||||
result += '';
|
||||
x = result.split('.');
|
||||
x1 = x[0];
|
||||
x2 = x.length > 1 ? _this.options.decimal + x[1] : '';
|
||||
if (_this.options.useGrouping) {
|
||||
x3 = '';
|
||||
for (var i = 0, len = x1.length; i < len; ++i) {
|
||||
if (i !== 0 && (i % 3) === 0) {
|
||||
x3 = _this.options.separator + x3;
|
||||
}
|
||||
x3 = x1[len - i - 1] + x3;
|
||||
}
|
||||
x1 = x3;
|
||||
}
|
||||
// optional numeral substitution
|
||||
if (_this.options.numerals && _this.options.numerals.length) {
|
||||
x1 = x1.replace(/[0-9]/g, function (w) { return _this.options.numerals[+w]; });
|
||||
x2 = x2.replace(/[0-9]/g, function (w) { return _this.options.numerals[+w]; });
|
||||
}
|
||||
return neg + _this.options.prefix + x1 + x2 + _this.options.suffix;
|
||||
};
|
||||
this.easeOutExpo = function (t, b, c, d) {
|
||||
return c * (-Math.pow(2, -10 * t / d) + 1) * 1024 / 1023 + b;
|
||||
};
|
||||
this.options = __assign({}, this.defaults, options);
|
||||
this.formattingFn = (this.options.formattingFn) ?
|
||||
this.options.formattingFn : this.formatNumber;
|
||||
this.easingFn = (this.options.easingFn) ?
|
||||
this.options.easingFn : this.easeOutExpo;
|
||||
this.startVal = this.validateValue(this.options.startVal);
|
||||
this.frameVal = this.startVal;
|
||||
this.endVal = this.validateValue(endVal);
|
||||
this.options.decimalPlaces = Math.max(0 || this.options.decimalPlaces);
|
||||
this.decimalMult = Math.pow(10, this.options.decimalPlaces);
|
||||
this.resetDuration();
|
||||
this.options.separator = String(this.options.separator);
|
||||
this.useEasing = this.options.useEasing;
|
||||
if (this.options.separator === '') {
|
||||
this.options.useGrouping = false;
|
||||
}
|
||||
this.el = (typeof target === 'string') ? document.getElementById(target) : target;
|
||||
if (this.el) {
|
||||
this.printValue(this.startVal);
|
||||
}
|
||||
else {
|
||||
this.error = '[CountUp] target is null or undefined';
|
||||
}
|
||||
}
|
||||
// determines where easing starts and whether to count down or up
|
||||
CountUp.prototype.determineDirectionAndSmartEasing = function () {
|
||||
var end = (this.finalEndVal) ? this.finalEndVal : this.endVal;
|
||||
this.countDown = (this.startVal > end);
|
||||
var animateAmount = end - this.startVal;
|
||||
if (Math.abs(animateAmount) > this.options.smartEasingThreshold) {
|
||||
this.finalEndVal = end;
|
||||
var up = (this.countDown) ? 1 : -1;
|
||||
this.endVal = end + (up * this.options.smartEasingAmount);
|
||||
this.duration = this.duration / 2;
|
||||
}
|
||||
else {
|
||||
this.endVal = end;
|
||||
this.finalEndVal = null;
|
||||
}
|
||||
if (this.finalEndVal) {
|
||||
this.useEasing = false;
|
||||
}
|
||||
else {
|
||||
this.useEasing = this.options.useEasing;
|
||||
}
|
||||
};
|
||||
// start animation
|
||||
CountUp.prototype.start = function (callback) {
|
||||
if (this.error) {
|
||||
return;
|
||||
}
|
||||
this.callback = callback;
|
||||
if (this.duration > 0) {
|
||||
this.determineDirectionAndSmartEasing();
|
||||
this.paused = false;
|
||||
this.rAF = requestAnimationFrame(this.count);
|
||||
}
|
||||
else {
|
||||
this.printValue(this.endVal);
|
||||
}
|
||||
};
|
||||
// pause/resume animation
|
||||
CountUp.prototype.pauseResume = function () {
|
||||
if (!this.paused) {
|
||||
cancelAnimationFrame(this.rAF);
|
||||
}
|
||||
else {
|
||||
this.startTime = null;
|
||||
this.duration = this.remaining;
|
||||
this.startVal = this.frameVal;
|
||||
this.determineDirectionAndSmartEasing();
|
||||
this.rAF = requestAnimationFrame(this.count);
|
||||
}
|
||||
this.paused = !this.paused;
|
||||
};
|
||||
// reset to startVal so animation can be run again
|
||||
CountUp.prototype.reset = function () {
|
||||
cancelAnimationFrame(this.rAF);
|
||||
this.paused = true;
|
||||
this.resetDuration();
|
||||
this.startVal = this.validateValue(this.options.startVal);
|
||||
this.frameVal = this.startVal;
|
||||
this.printValue(this.startVal);
|
||||
};
|
||||
// pass a new endVal and start animation
|
||||
CountUp.prototype.update = function (newEndVal) {
|
||||
cancelAnimationFrame(this.rAF);
|
||||
this.startTime = null;
|
||||
this.endVal = this.validateValue(newEndVal);
|
||||
if (this.endVal === this.frameVal) {
|
||||
return;
|
||||
}
|
||||
this.startVal = this.frameVal;
|
||||
if (!this.finalEndVal) {
|
||||
this.resetDuration();
|
||||
}
|
||||
this.determineDirectionAndSmartEasing();
|
||||
this.rAF = requestAnimationFrame(this.count);
|
||||
};
|
||||
CountUp.prototype.printValue = function (val) {
|
||||
var result = this.formattingFn(val);
|
||||
if (this.el.tagName === 'INPUT') {
|
||||
var input = this.el;
|
||||
input.value = result;
|
||||
}
|
||||
else if (this.el.tagName === 'text' || this.el.tagName === 'tspan') {
|
||||
this.el.textContent = result;
|
||||
}
|
||||
else {
|
||||
this.el.innerHTML = result;
|
||||
}
|
||||
};
|
||||
CountUp.prototype.ensureNumber = function (n) {
|
||||
return (typeof n === 'number' && !isNaN(n));
|
||||
};
|
||||
CountUp.prototype.validateValue = function (value) {
|
||||
var newValue = Number(value);
|
||||
if (!this.ensureNumber(newValue)) {
|
||||
this.error = "[CountUp] invalid start or end value: " + value;
|
||||
return null;
|
||||
}
|
||||
else {
|
||||
return newValue;
|
||||
}
|
||||
};
|
||||
CountUp.prototype.resetDuration = function () {
|
||||
this.startTime = null;
|
||||
this.duration = Number(this.options.duration) * 1000;
|
||||
this.remaining = this.duration;
|
||||
};
|
||||
return CountUp;
|
||||
}());
|
||||
@@ -0,0 +1 @@
|
||||
var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(t){for(var i,a=1,s=arguments.length;a<s;a++)for(var n in i=arguments[a])Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n]);return t}).apply(this,arguments)},CountUp=function(){function t(t,i,a){var s=this;this.target=t,this.endVal=i,this.options=a,this.version="2.0.4",this.defaults={startVal:0,decimalPlaces:0,duration:2,useEasing:!0,useGrouping:!0,smartEasingThreshold:999,smartEasingAmount:333,separator:",",decimal:".",prefix:"",suffix:""},this.finalEndVal=null,this.useEasing=!0,this.countDown=!1,this.error="",this.startVal=0,this.paused=!0,this.count=function(t){s.startTime||(s.startTime=t);var i=t-s.startTime;s.remaining=s.duration-i,s.useEasing?s.countDown?s.frameVal=s.startVal-s.easingFn(i,0,s.startVal-s.endVal,s.duration):s.frameVal=s.easingFn(i,s.startVal,s.endVal-s.startVal,s.duration):s.countDown?s.frameVal=s.startVal-(s.startVal-s.endVal)*(i/s.duration):s.frameVal=s.startVal+(s.endVal-s.startVal)*(i/s.duration),s.countDown?s.frameVal=s.frameVal<s.endVal?s.endVal:s.frameVal:s.frameVal=s.frameVal>s.endVal?s.endVal:s.frameVal,s.frameVal=Math.round(s.frameVal*s.decimalMult)/s.decimalMult,s.printValue(s.frameVal),i<s.duration?s.rAF=requestAnimationFrame(s.count):null!==s.finalEndVal?s.update(s.finalEndVal):s.callback&&s.callback()},this.formatNumber=function(t){var i,a,n,e,r,o=t<0?"-":"";if(i=Math.abs(t).toFixed(s.options.decimalPlaces),n=(a=(i+="").split("."))[0],e=a.length>1?s.options.decimal+a[1]:"",s.options.useGrouping){r="";for(var l=0,h=n.length;l<h;++l)0!==l&&l%3==0&&(r=s.options.separator+r),r=n[h-l-1]+r;n=r}return s.options.numerals&&s.options.numerals.length&&(n=n.replace(/[0-9]/g,function(t){return s.options.numerals[+t]}),e=e.replace(/[0-9]/g,function(t){return s.options.numerals[+t]})),o+s.options.prefix+n+e+s.options.suffix},this.easeOutExpo=function(t,i,a,s){return a*(1-Math.pow(2,-10*t/s))*1024/1023+i},this.options=__assign({},this.defaults,a),this.formattingFn=this.options.formattingFn?this.options.formattingFn:this.formatNumber,this.easingFn=this.options.easingFn?this.options.easingFn:this.easeOutExpo,this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.endVal=this.validateValue(i),this.options.decimalPlaces=Math.max(this.options.decimalPlaces),this.decimalMult=Math.pow(10,this.options.decimalPlaces),this.resetDuration(),this.options.separator=String(this.options.separator),this.useEasing=this.options.useEasing,""===this.options.separator&&(this.options.useGrouping=!1),this.el="string"==typeof t?document.getElementById(t):t,this.el?this.printValue(this.startVal):this.error="[CountUp] target is null or undefined"}return t.prototype.determineDirectionAndSmartEasing=function(){var t=this.finalEndVal?this.finalEndVal:this.endVal;this.countDown=this.startVal>t;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold){this.finalEndVal=t;var a=this.countDown?1:-1;this.endVal=t+a*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},t.prototype.start=function(t){this.error||(this.callback=t,this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},t.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},t.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},t.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,this.finalEndVal||this.resetDuration(),this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},t.prototype.printValue=function(t){var i=this.formattingFn(t);"INPUT"===this.el.tagName?this.el.value=i:"text"===this.el.tagName||"tspan"===this.el.tagName?this.el.textContent=i:this.el.innerHTML=i},t.prototype.ensureNumber=function(t){return"number"==typeof t&&!isNaN(t)},t.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error="[CountUp] invalid start or end value: "+t,null)},t.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},t}();
|
||||
@@ -0,0 +1,398 @@
|
||||
/**
|
||||
* donutty // Create SVG donut charts with Javascript
|
||||
* @author simeydotme <[email protected]>
|
||||
* @version 2.0.0
|
||||
* @license MIT
|
||||
* @link http://simey.me
|
||||
* @preserve
|
||||
*/
|
||||
|
||||
(function( doc, win ) {
|
||||
|
||||
var donutty,
|
||||
namespace = "http://www.w3.org/2000/svg";
|
||||
|
||||
function isDefined( input ) {
|
||||
return typeof input !== "undefined";
|
||||
}
|
||||
|
||||
function float( input ) {
|
||||
return parseFloat( input, 10 );
|
||||
}
|
||||
|
||||
function truth( input ) {
|
||||
return isDefined( input ) && ( input === true || input === "true" );
|
||||
}
|
||||
|
||||
donutty = win.Donutty = function( el, options ) {
|
||||
|
||||
if ( el && typeof el === "string" ) {
|
||||
this.$wrapper = doc.querySelectorAll( el )[0];
|
||||
} else if ( doc.querySelector( `.${el.className}` ) ) {
|
||||
this.$wrapper = el;
|
||||
} else {
|
||||
this.$wrapper = doc.body;
|
||||
options = el;
|
||||
}
|
||||
|
||||
if ( !this.$wrapper ) {
|
||||
|
||||
return this;
|
||||
|
||||
}
|
||||
|
||||
if ( !isDefined( options ) ) {
|
||||
|
||||
options = this.getOptionsFromTag();
|
||||
|
||||
}
|
||||
|
||||
this.state = {};
|
||||
this.options = options || {};
|
||||
this.options.min = isDefined( this.options.min ) ? float( this.options.min ) : 0;
|
||||
this.options.max = isDefined( this.options.max ) ? float( this.options.max ) : 100;
|
||||
this.options.value = isDefined( this.options.value ) ? float( this.options.value ) : 50;
|
||||
this.options.round = isDefined( this.options.round ) ? truth( this.options.round ) : true;
|
||||
this.options.circle = isDefined( this.options.circle ) ? truth( this.options.circle ) : true;
|
||||
this.options.padding = isDefined( this.options.padding ) ? float( this.options.padding ) : 4;
|
||||
this.options.radius = float( this.options.radius ) || 50;
|
||||
this.options.thickness = float( this.options.thickness ) || 10;
|
||||
this.options.bg = this.options.bg || "rgba(70, 130, 180, 0.15)";
|
||||
this.options.color = this.options.color || "mediumslateblue";
|
||||
this.options.transition = this.options.transition || "all 1.2s cubic-bezier(0.57, 0.13, 0.18, 0.98)";
|
||||
this.options.text = isDefined( this.options.text ) ? this.options.text : false;
|
||||
|
||||
this.init();
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
donutty.prototype.getOptionsFromTag = function() {
|
||||
|
||||
return JSON.parse(JSON.stringify(this.$wrapper.dataset));
|
||||
|
||||
};
|
||||
|
||||
donutty.prototype.init = function() {
|
||||
|
||||
this.$wrapper.donutty = this;
|
||||
|
||||
var values;
|
||||
|
||||
// create the state object from the options,
|
||||
// and then get the dash values for use in element creation
|
||||
this.createState();
|
||||
values = this.getDashValues();
|
||||
|
||||
this.createSvg();
|
||||
this.createBg( values );
|
||||
this.createDonut( values );
|
||||
this.createText();
|
||||
this.insertFragments( values );
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
donutty.prototype.createState = function() {
|
||||
|
||||
this.state.min = this.options.min;
|
||||
this.state.max = this.options.max;
|
||||
this.state.value = this.options.value;
|
||||
this.state.bg = this.options.bg;
|
||||
this.state.color = this.options.color;
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
donutty.prototype.createText = function() {
|
||||
|
||||
if ( typeof this.options.text === "function" ) {
|
||||
|
||||
this.$text = doc.createElement( "span" );
|
||||
this.$text.setAttribute( "class", "donut-text" );
|
||||
this.$text.style.opacity = 0;
|
||||
this.updateText();
|
||||
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
donutty.prototype.createBg = function( values ) {
|
||||
|
||||
this.$bg = doc.createElementNS( namespace, "circle" );
|
||||
|
||||
this.$bg.setAttribute( "cx", "50%" );
|
||||
this.$bg.setAttribute( "cy", "50%" );
|
||||
this.$bg.setAttribute( "r", this.options.radius );
|
||||
this.$bg.setAttribute( "fill", "transparent" );
|
||||
this.$bg.setAttribute( "stroke", this.state.bg );
|
||||
this.$bg.setAttribute( "stroke-width", this.options.thickness + this.options.padding );
|
||||
this.$bg.setAttribute( "stroke-dasharray", values.full * values.multiplier );
|
||||
this.$bg.setAttribute( "class", "donut-bg" );
|
||||
|
||||
if ( this.options.round ) {
|
||||
this.$bg.setAttribute( "stroke-linecap", "round" );
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
donutty.prototype.createDonut = function( values ) {
|
||||
|
||||
this.$donut = doc.createElementNS( namespace, "circle" );
|
||||
|
||||
this.$donut.setAttribute( "fill", "transparent" );
|
||||
this.$donut.setAttribute( "cx", "50%" );
|
||||
this.$donut.setAttribute( "cy", "50%" );
|
||||
this.$donut.setAttribute( "r", this.options.radius );
|
||||
this.$donut.setAttribute( "stroke", this.state.color );
|
||||
this.$donut.setAttribute( "stroke-width", this.options.thickness );
|
||||
this.$donut.setAttribute( "stroke-dashoffset", values.full );
|
||||
this.$donut.setAttribute( "stroke-dasharray", values.full );
|
||||
this.$donut.setAttribute( "class", "donut-fill" );
|
||||
this.$donut.style.opacity = 0;
|
||||
|
||||
if ( this.options.round ) {
|
||||
this.$donut.setAttribute( "stroke-linecap", "round" );
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
donutty.prototype.createSvg = function() {
|
||||
|
||||
var viewbox = this.options.radius * 2 + this.options.thickness + ( this.options.padding * 2 ),
|
||||
rotateExtra = this.options.round ? this.options.thickness / 3 : 0,
|
||||
rotate = this.options.circle ? 90 + rotateExtra : -225;
|
||||
|
||||
this.$html = doc.createDocumentFragment();
|
||||
this.$svg = doc.createElementNS( namespace, "svg" );
|
||||
|
||||
this.$svg.setAttribute( "xmlns", namespace );
|
||||
this.$svg.setAttribute( "viewbox", "0 0 " + viewbox + " " + viewbox );
|
||||
this.$svg.setAttribute( "transform", "rotate( " + rotate +" )" );
|
||||
this.$svg.setAttribute( "preserveAspectRatio", "xMidYMid meet" );
|
||||
this.$svg.setAttribute( "class", "donut" );
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
donutty.prototype.insertFragments = function( values ) {
|
||||
|
||||
this.$svg.appendChild( this.$bg );
|
||||
this.$svg.appendChild( this.$donut );
|
||||
this.$html.appendChild( this.$svg );
|
||||
|
||||
if ( this.$text ) {
|
||||
this.$html.appendChild( this.$text );
|
||||
}
|
||||
|
||||
this.$wrapper.appendChild( this.$html );
|
||||
|
||||
// because of a strange bug in browsers not updating
|
||||
// the "preserveAspectRatio" setting when applied programmatically,
|
||||
// we need to essentially delete the DOM fragment, and then
|
||||
// set the innerHTML of the parent so that it updates in browser.
|
||||
this.$wrapper.innerHTML = this.$wrapper.innerHTML;
|
||||
|
||||
// and because we just destroyed the DOM fragment and all
|
||||
// the references to it, we now set all those references again.
|
||||
this.$svg = this.$wrapper.querySelector(".donut");
|
||||
this.$bg = this.$wrapper.querySelector(".donut-bg");
|
||||
this.$donut = this.$wrapper.querySelector(".donut-fill");
|
||||
if ( this.$text ) {
|
||||
this.$text = this.$wrapper.querySelector(".donut-text");
|
||||
}
|
||||
|
||||
// now the references are re-set, we can go
|
||||
// ahead and animate the element again.
|
||||
this.animate( values.fill, values.full );
|
||||
|
||||
};
|
||||
|
||||
donutty.prototype.getDashValues = function() {
|
||||
|
||||
var circumference,
|
||||
percentageFilled,
|
||||
absoluteFilled,
|
||||
multiplier;
|
||||
|
||||
multiplier = this.options.circle ? 1 : 0.75;
|
||||
circumference = 2 * Math.PI * this.options.radius;
|
||||
percentageFilled = ( this.state.value - this.state.min ) / ( this.state.max - this.state.min ) * 100;
|
||||
absoluteFilled = circumference - ( ( circumference * multiplier ) / 100 * percentageFilled );
|
||||
|
||||
if (
|
||||
this.options.round &&
|
||||
this.options.circle &&
|
||||
percentageFilled < 100 &&
|
||||
absoluteFilled < this.options.thickness
|
||||
) {
|
||||
|
||||
// when in circle mode, if the linecaps are "round"
|
||||
// then the circle would look complete if it is actually
|
||||
// only ~97% complete, this is because the linecaps
|
||||
// overhang the stroke.
|
||||
absoluteFilled = this.options.thickness;
|
||||
|
||||
}
|
||||
|
||||
return {
|
||||
fill: absoluteFilled,
|
||||
full: circumference,
|
||||
multiplier: multiplier
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
donutty.prototype.animate = function( fill, full ) {
|
||||
|
||||
var _this = this;
|
||||
|
||||
// ensure the transition property is applied before
|
||||
// the actual properties are set, so that browser renders
|
||||
// the transition
|
||||
_this.$bg.style.transition = this.options.transition;
|
||||
_this.$donut.style.transition = this.options.transition;
|
||||
if ( _this.$text ) {
|
||||
_this.$text.style.transition = this.options.transition;
|
||||
}
|
||||
|
||||
// use a short timeout (~60fps) to simulate a new
|
||||
// animation frame (not using rAF due to ie9 problems)
|
||||
window.setTimeout( function() {
|
||||
|
||||
_this.$bg.setAttribute( "stroke", _this.state.bg );
|
||||
_this.$bg.style.opacity = 1;
|
||||
|
||||
_this.$donut.setAttribute( "stroke-dashoffset", fill );
|
||||
_this.$donut.setAttribute( "stroke-dasharray", full );
|
||||
_this.$donut.setAttribute( "stroke", _this.state.color );
|
||||
_this.$donut.style.opacity = 1;
|
||||
|
||||
if ( _this.$text ) {
|
||||
_this.$text.style.opacity = 1;
|
||||
}
|
||||
|
||||
}, 16 );
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* use the current state to set the text inside
|
||||
* the text element (only if option is provided);
|
||||
* @return {object} the donut instance
|
||||
*/
|
||||
donutty.prototype.updateText = function() {
|
||||
|
||||
if ( typeof this.options.text === "function" ) {
|
||||
|
||||
this.$text.innerHTML = this.options.text( this.state );
|
||||
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* set an individual state property for the chart
|
||||
* @param {string} prop the property to set
|
||||
* @param {string/number} val the value of the given property
|
||||
* @return {object} the donut instance
|
||||
* @chainable
|
||||
*/
|
||||
donutty.prototype.set = function( prop, val ) {
|
||||
|
||||
var values;
|
||||
|
||||
if ( isDefined( prop ) && isDefined( val ) ) {
|
||||
|
||||
this.state[ prop ] = val;
|
||||
values = this.getDashValues();
|
||||
this.updateText();
|
||||
this.animate( values.fill, values.full );
|
||||
|
||||
}
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* set multiple state properties with an object
|
||||
* @param {object} newState a map of properties to set
|
||||
* @return {object} the donut instance
|
||||
* @chainable
|
||||
*/
|
||||
donutty.prototype.setState = function( newState ) {
|
||||
|
||||
var values;
|
||||
|
||||
if ( isDefined( newState.value ) ) {
|
||||
this.state.value = newState.value;
|
||||
}
|
||||
|
||||
if ( isDefined( newState.min ) ) {
|
||||
this.state.min = newState.min;
|
||||
}
|
||||
|
||||
if ( isDefined( newState.max ) ) {
|
||||
this.state.max = newState.max;
|
||||
}
|
||||
|
||||
if ( isDefined( newState.bg ) ) {
|
||||
this.state.bg = newState.bg;
|
||||
}
|
||||
|
||||
if ( isDefined( newState.color ) ) {
|
||||
this.state.color = newState.color;
|
||||
}
|
||||
|
||||
values = this.getDashValues();
|
||||
this.updateText();
|
||||
this.animate( values.fill, values.full );
|
||||
|
||||
return this;
|
||||
|
||||
};
|
||||
|
||||
}( document, window ));
|
||||
|
||||
// jquery constructor
|
||||
|
||||
( function( Donutty, $ ) {
|
||||
|
||||
if ( typeof window.$ !== "undefined" ) {
|
||||
|
||||
$( function() {
|
||||
|
||||
$.fn.donutty = function( options ) {
|
||||
|
||||
return $( this ).each( function() {
|
||||
|
||||
new Donutty( this, options );
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
$( "[data-donutty]" ).donutty();
|
||||
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
console.warn( "Can't find jQuery to attach Donutty" );
|
||||
|
||||
}
|
||||
|
||||
}( Donutty, jQuery ));
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,9 @@
|
||||
/*! Simple JavaScript Inheritance
|
||||
* By John Resig http://ejohn.org/
|
||||
* MIT Licensed.
|
||||
*/
|
||||
!function(){"use strict";var a=!1;window.JQClass=function(){},JQClass.classes={},JQClass.extend=function b(c){function d(){!a&&this._init&&this._init.apply(this,arguments)}var e=this.prototype;a=!0;var f=new this;a=!1;for(var g in c)if("function"==typeof c[g]&&"function"==typeof e[g])f[g]=function(a,b){return function(){var c=this._super;this._super=function(b){return e[a].apply(this,b||[])};var d=b.apply(this,arguments);return this._super=c,d}}(g,c[g]);else if("object"==typeof c[g]&&"object"==typeof e[g]&&"defaultOptions"===g){var h,i=e[g],j=c[g],k={};for(h in i)k[h]=i[h];for(h in j)k[h]=j[h];f[g]=k}else f[g]=c[g];return d.prototype=f,d.prototype.constructor=d,d.extend=b,d}}(),/*! Abstract base class for collection plugins v1.0.2.
|
||||
Written by Keith Wood (wood.keith{at}optusnet.com.au) December 2013.
|
||||
Licensed under the MIT license (http://keith-wood.name/licence.html). */
|
||||
function($){"use strict";function camelCase(a){return a.replace(/-([a-z])/g,function(a,b){return b.toUpperCase()})}JQClass.classes.JQPlugin=JQClass.extend({name:"plugin",defaultOptions:{},regionalOptions:{},deepMerge:!0,_getMarker:function(){return"is-"+this.name},_init:function(){$.extend(this.defaultOptions,this.regionalOptions&&this.regionalOptions[""]||{});var a=camelCase(this.name);$[a]=this,$.fn[a]=function(b){var c=Array.prototype.slice.call(arguments,1),d=this,e=this;return this.each(function(){if("string"==typeof b){if("_"===b[0]||!$[a][b])throw"Unknown method: "+b;var f=$[a][b].apply($[a],[this].concat(c));if(f!==d&&void 0!==f)return e=f,!1}else $[a]._attach(this,b)}),e}},setDefaults:function(a){$.extend(this.defaultOptions,a||{})},_attach:function(a,b){if(a=$(a),!a.hasClass(this._getMarker())){a.addClass(this._getMarker()),b=$.extend(this.deepMerge,{},this.defaultOptions,this._getMetadata(a),b||{});var c=$.extend({name:this.name,elem:a,options:b},this._instSettings(a,b));a.data(this.name,c),this._postAttach(a,c),this.option(a,b)}},_instSettings:function(a,b){return{}},_postAttach:function(a,b){},_getMetadata:function(elem){try{var data=elem.data(this.name.toLowerCase())||"";data=data.replace(/(\\?)'/g,function(a,b){return b?"'":'"'}).replace(/([a-zA-Z0-9]+):/g,function(a,b,c){var d=data.substring(0,c).match(/"/g);return d&&d.length%2!==0?b+":":'"'+b+'":'}).replace(/\\:/g,":"),data=$.parseJSON("{"+data+"}");for(var key in data)if(data.hasOwnProperty(key)){var value=data[key];"string"==typeof value&&value.match(/^new Date\(([-0-9,\s]*)\)$/)&&(data[key]=eval(value))}return data}catch(a){return{}}},_getInst:function(a){return $(a).data(this.name)||{}},option:function(a,b,c){a=$(a);var d=a.data(this.name),e=b||{};return!b||"string"==typeof b&&"undefined"==typeof c?(e=(d||{}).options,e&&b?e[b]:e):void(a.hasClass(this._getMarker())&&("string"==typeof b&&(e={},e[b]=c),this._optionsChanged(a,d,e),$.extend(d.options,e)))},_optionsChanged:function(a,b,c){},destroy:function(a){a=$(a),a.hasClass(this._getMarker())&&(this._preDestroy(a,this._getInst(a)),a.removeData(this.name).removeClass(this._getMarker()))},_preDestroy:function(a,b){}}),$.JQPlugin={createPlugin:function(a,b){"object"==typeof a&&(b=a,a="JQPlugin"),a=camelCase(a);var c=camelCase(b.name);JQClass.classes[c]=JQClass.classes[a].extend(b),new JQClass.classes[c]}}}(jQuery);
|
||||
//# sourceMappingURL=jquery.plugin.min.map
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Arabic (عربي) initialisation for the jQuery countdown extension
|
||||
Translated by Talal Al Asmari ([email protected]), April 2009. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.ar = {
|
||||
labels: ['سنوات','أشهر','أسابيع','أيام','ساعات','دقائق','ثواني'],
|
||||
labels1: ['سنة','شهر','أسبوع','يوم','ساعة','دقيقة','ثانية'],
|
||||
compactLabels: ['س','ش','أ','ي'],
|
||||
whichLabels: null,
|
||||
digits: ['٠','١','٢','٣','٤','٥','٦','٧','٨','٩'],
|
||||
timeSeparator: ':',
|
||||
isRTL: true
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.ar);
|
||||
})(jQuery);
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Bulgarian initialisation for the jQuery countdown extension
|
||||
* Written by Manol Trendafilov [email protected] (2010) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.bg = {
|
||||
labels: ['Години','Месеца','Седмица','Дни','Часа','Минути','Секунди'],
|
||||
labels1: ['Година','Месец','Седмица','Ден','Час','Минута','Секунда'],
|
||||
compactLabels: ['l','m','n','d'],
|
||||
compactLabels1: ['g','m','n','d'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.bg);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Bengali/Bangla initialisation for the jQuery countdown extension
|
||||
* Written by Mohammed Tajuddin ([email protected]) Jan 2011. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.bn = {
|
||||
labels: ['বছর','মাস','সপ্তাহ','দিন','ঘন্টা','মিনিট','সেকেন্ড'],
|
||||
labels1: ['বছর','মাস','সপ্তাহ','দিন','ঘন্টা','মিনিট','সেকেন্ড'],
|
||||
compactLabels: ['ব','মা','স','দি'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.bn);
|
||||
})(jQuery);
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Bosnian Latin initialisation for the jQuery countdown extension
|
||||
* Written by Miralem Mehic [email protected] (2011) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.bs = {
|
||||
labels: ['Godina','Mjeseci','Sedmica','Dana','Sati','Minuta','Sekundi'],
|
||||
labels1: ['Godina','Mjesec','Sedmica','Dan','Sat','Minuta','Sekunda'],
|
||||
labels2: ['Godine','Mjeseca','Sedmica','Dana','Sata','Minute','Sekunde'],
|
||||
compactLabels: ['g','m','t','d'],
|
||||
whichLabels: function(amount) {
|
||||
return (amount === 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0));
|
||||
},
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.bs);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Catalan initialisation for the jQuery countdown extension
|
||||
Written by Amanida Media www.amanidamedia.com (2010) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.ca = {
|
||||
labels: ['Anys','Mesos','Setmanes','Dies','Hores','Minuts','Segons'],
|
||||
labels1: ['Anys','Mesos','Setmanes','Dies','Hores','Minuts','Segons'],
|
||||
compactLabels: ['a','m','s','g'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.ca);
|
||||
})(jQuery);
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Czech initialisation for the jQuery countdown extension
|
||||
* Written by Roman Chlebec ([email protected]) (2008) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.cs = {
|
||||
labels: ['Roků','Měsíců','Týdnů','Dní','Hodin','Minut','Sekund'],
|
||||
labels1: ['Rok','Měsíc','Týden','Den','Hodina','Minuta','Sekunda'],
|
||||
labels2: ['Roky','Měsíce','Týdny','Dny','Hodiny','Minuty','Sekundy'],
|
||||
compactLabels: ['r','m','t','d'],
|
||||
whichLabels: function(amount) {
|
||||
return (amount === 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0));
|
||||
},
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.cs);
|
||||
})(jQuery);
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
/* http://keith-wood.name/countdown.html␍ Welsh initialisation for the jQuery countdown extension␍ Written by Gareth Jones | http://garethvjones.com | October 2011. */␍(function($) {␍ 'use strict';␍ $.countdown.regionalOptions.cy = {␍ labels: ['Blynyddoedd','Mis','Wythnosau','Diwrnodau','Oriau','Munudau','Eiliadau'],␍ labels1: ['Blwyddyn','Mis','Wythnos','Diwrnod','Awr','Munud','Eiliad'],␍ compactLabels: ['b','m','w','d'],␍ whichLabels: null,␍ digits: ['0','1','2','3','4','5','6','7','8','9'],␍ timeSeparator: ':',
|
||||
isRTL: false␍ };␍ $.countdown.setDefaults($.countdown.regionalOptions.cy);␍})(jQuery);␍
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Danish initialisation for the jQuery countdown extension
|
||||
Written by Buch ([email protected]). */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.da = {
|
||||
labels: ['År','Måneder','Uger','Dage','Timer','Minutter','Sekunder'],
|
||||
labels1: ['År','Måned','Uge','Dag','Time','Minut','Sekund'],
|
||||
compactLabels: ['Å','M','U','D'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.da);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
German initialisation for the jQuery countdown extension
|
||||
Written by Samuel Wulf. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.de = {
|
||||
labels: ['Jahre','Monate','Wochen','Tage','Stunden','Minuten','Sekunden'],
|
||||
labels1: ['Jahr','Monat','Woche','Tag','Stunde','Minute','Sekunde'],
|
||||
compactLabels: ['J','M','W','T'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.de);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Greek initialisation for the jQuery countdown extension
|
||||
Written by Philip. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.el = {
|
||||
labels: ['Χρόνια','Μήνες','Εβδομάδες','Μέρες','Ώρες','Λεπτά','Δευτερόλεπτα'],
|
||||
labels1: ['Χρόνος','Μήνας','Εβδομάδα','Ημέρα','Ώρα','Λεπτό','Δευτερόλεπτο'],
|
||||
compactLabels: ['Χρ.','Μην.','Εβδ.','Ημ.'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.el);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Spanish initialisation for the jQuery countdown extension
|
||||
* Written by Sergio Carracedo Martinez [email protected] (2008) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.es = {
|
||||
labels: ['Años','Meses','Semanas','Días','Horas','Minutos','Segundos'],
|
||||
labels1: ['Año','Mes','Semana','Día','Hora','Minuto','Segundo'],
|
||||
compactLabels: ['a','m','s','d'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.es);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Estonian initialisation for the jQuery countdown extension
|
||||
Written by Helmer <helmer{at}city.ee> */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.et = {
|
||||
labels: ['Aastat','Kuud','Nädalat','Päeva','Tundi','Minutit','Sekundit'],
|
||||
labels1: ['Aasta','Kuu','Nädal','Päev','Tund','Minut','Sekund'],
|
||||
compactLabels: ['a','k','n','p'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.et);
|
||||
})(jQuery);
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Persian (فارسی) initialisation for the jQuery countdown extension
|
||||
Written by Alireza Ziaie ([email protected]) Oct 2008.
|
||||
Digits corrected by Hamed Ramezanian Feb 2013. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.fa = {
|
||||
labels: ['سال','ماه','هفته','روز','ساعت','دقیقه','ثانیه'],
|
||||
labels1: ['سال','ماه','هفته','روز','ساعت','دقیقه','ثانیه'],
|
||||
compactLabels: ['س','م','ه','ر'],
|
||||
whichLabels: null,
|
||||
digits: ['۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'],
|
||||
timeSeparator: ':',
|
||||
isRTL: true
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.fa);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Finnish initialisation for the jQuery countdown extension
|
||||
Written by Kalle Vänskä and Juha Suni ([email protected]). Corrected by Olli. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.fi = {
|
||||
labels: ['vuotta','kuukautta','viikkoa','päivää','tuntia','minuuttia','sekuntia'],
|
||||
labels1: ['vuosi','kuukausi','viikko','päivä','tunti','minuutti','sekunti'],
|
||||
compactLabels: ['v','kk','vk','pv'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.fi);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Faroese initialisation for the jQuery countdown extension
|
||||
Written by Kasper Friis Christensen ([email protected]). */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.fo = {
|
||||
labels: ['Ár','Mánaðir','Vikur','Dagar','Tímar','Minuttir','Sekund'],
|
||||
labels1: ['Ár','Mánaður','Vika','Dagur','Tími','Minuttur','Sekund'],
|
||||
compactLabels: ['Á','M','V','D'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.fo);
|
||||
})(jQuery);
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
French initialisation for the jQuery countdown extension
|
||||
Written by Keith Wood (wood.keith{at}optusnet.com.au) Jan 2008. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.fr = {
|
||||
labels: ['Années','Mois','Semaines','Jours','Heures','Minutes','Secondes'],
|
||||
labels1: ['Année','Mois','Semaine','Jour','Heure','Minute','Seconde'],
|
||||
compactLabels: ['a','m','s','j'],
|
||||
whichLabels: function(amount) {
|
||||
return (amount > 1 ? 0 : 1);
|
||||
},
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.fr);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Galician initialisation for the jQuery countdown extension
|
||||
* Written by Moncho Pena [email protected] (2009) and Angel Farrapeira */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.gl = {
|
||||
labels: ['Anos','Meses','Semanas','Días','Horas','Minutos','Segundos'],
|
||||
labels1: ['Ano','Mes','Semana','Día','Hora','Minuto','Segundo'],
|
||||
compactLabels: ['a','m','s','g'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.gl);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Gujarati initialization for the jQuery countdown extension
|
||||
* Written by Sahil Jariwala [email protected] (2012) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.gu = {
|
||||
labels: ['વર્ષ','મહિનો','અઠવાડિયા','દિવસ','કલાક','મિનિટ','સેકન્ડ'],
|
||||
labels1: ['વર્ષ','મહિનો','અઠવાડિયા','દિવસ','કલાક','મિનિટ','સેકન્ડ'],
|
||||
compactLabels: ['વ','મ','અ','દિ'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.gu);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Hebrew initialisation for the jQuery countdown extension
|
||||
* Translated by Nir Livne, Dec 2008 */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.he = {
|
||||
labels: ['שנים','חודשים','שבועות','ימים','שעות','דקות','שניות'],
|
||||
labels1: ['שנה','חודש','שבוע','יום','שעה','דקה','שנייה'],
|
||||
compactLabels: ['שנ','ח','שב','י'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: true
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.he);
|
||||
})(jQuery);
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Croatian l10n for the jQuery countdown plugin
|
||||
* Written by Dejan Broz [email protected] (2011)
|
||||
* Improved by zytzagoo (2014) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.hr = {
|
||||
labels: ['Godina','Mjeseci','Tjedana','Dana','Sati','Minuta','Sekundi'], // plurals
|
||||
labels1: ['Godina','Mjesec','Tjedan','Dan','Sat','Minutu','Sekundu'], // singles
|
||||
labels2: ['Godine','Mjeseca','Tjedana','Dana','Sata','Minute','Sekunde'], // paucals
|
||||
compactLabels: ['g','m','t','d'],
|
||||
whichLabels: function(amount){
|
||||
amount = parseInt(amount, 10);
|
||||
if (amount % 10 === 1 && amount % 100 !== 11) {
|
||||
return 1; // singles (/.*1$/ && ! /.*11$/)
|
||||
}
|
||||
if (amount % 10 >= 2 && amount % 10 <= 4 && (amount % 100 < 10 || amount % 100 >= 20)) {
|
||||
return 2; // paucals (/.*[234]$/ && ! /.*1[234]$/
|
||||
}
|
||||
return 0; // default plural (most common case)
|
||||
},
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.hr);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Hungarian initialisation for the jQuery countdown extension
|
||||
* Written by Edmond L. ([email protected]). */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.hu = {
|
||||
labels: ['Év','Hónap','Hét','Nap','Óra','Perc','Másodperc'],
|
||||
labels1: ['Év','Hónap','Hét','Nap','Óra','Perc','Másodperc'],
|
||||
compactLabels: ['É','H','Hé','N'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.hu);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Armenian initialisation for the jQuery countdown extension
|
||||
* Written by Artur Martirosyan. (artur{at}zoom.am) October 2011. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.hy = {
|
||||
labels: ['Տարի','Ամիս','Շաբաթ','Օր','Ժամ','Րոպե','Վարկյան'],
|
||||
labels1: ['Տարի','Ամիս','Շաբաթ','Օր','Ժամ','Րոպե','Վարկյան'],
|
||||
compactLabels: ['տ','ա','շ','օ'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.hy);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Indonesian initialisation for the jQuery countdown extension
|
||||
Written by Erwin Yonathan Jan 2009. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.id = {
|
||||
labels: ['tahun','bulan','minggu','hari','jam','menit','detik'],
|
||||
labels1: ['tahun','bulan','minggu','hari','jam','menit','detik'],
|
||||
compactLabels: ['t','b','m','h'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.id);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Icelandic initialisation for the jQuery countdown extension
|
||||
Written by Róbert K. L. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.is = {
|
||||
labels: ['Ár','Mánuðir','Vikur','Dagar','Klukkustundir','Mínútur','Sekúndur'],
|
||||
labels1: ['Ár','Mánuður','Vika','Dagur','Klukkustund','Mínúta','Sekúnda'],
|
||||
compactLabels: ['ár.','mán.','vik.','dag.','klst.','mín.','sek.'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.is);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Italian initialisation for the jQuery countdown extension
|
||||
* Written by Davide Bellettini ([email protected]) and Roberto Chiaveri Feb 2008. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.it = {
|
||||
labels: ['Anni','Mesi','Settimane','Giorni','Ore','Minuti','Secondi'],
|
||||
labels1: ['Anno','Mese','Settimana','Giorno','Ora','Minuto','Secondo'],
|
||||
compactLabels: ['a','m','s','g'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.it);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Japanese initialisation for the jQuery countdown extension
|
||||
Written by Ken Ishimoto ([email protected]) Aug 2009. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.ja = {
|
||||
labels: ['年','月','週','日','時','分','秒'],
|
||||
labels1: ['年','月','週','日','時','分','秒'],
|
||||
compactLabels: ['年','月','週','日'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.ja);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Kazakh initialisation for the jQuery countdown extension
|
||||
* Written by Veaceslav Grimalschi [email protected] (2019) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions['kk'] = {
|
||||
labels: ['Жыл','Ай','Апта','Күн','Сағат','Минут','Секунд'],
|
||||
labels1: ['Жыл','Ай','Апта','Күн','Сағат','Минут','Секунд'],
|
||||
compactLabels: ['ж','а','а','к'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions['kk']);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Kannada initialization for the jQuery countdown extension
|
||||
* Written by Guru Chaturvedi [email protected] (2011) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.kn = {
|
||||
labels: ['ವರ್ಷಗಳು','ತಿಂಗಳು','ವಾರಗಳು','ದಿನಗಳು','ಘಂಟೆಗಳು','ನಿಮಿಷಗಳು','ಕ್ಷಣಗಳು'],
|
||||
labels1: ['ವರ್ಷ','ತಿಂಗಳು','ವಾರ','ದಿನ','ಘಂಟೆ','ನಿಮಿಷ','ಕ್ಷಣ'],
|
||||
compactLabels: ['ವ','ತಿ','ವಾ','ದಿ'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.kn);
|
||||
})(jQuery);
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Korean initialisation for the jQuery countdown extension
|
||||
Written by Ryan Yu ([email protected]). */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.ko = {
|
||||
labels: ['년','월','주','일','시','분','초'],
|
||||
labels1: ['년','월','주','일','시','분','초'],
|
||||
compactLabels: ['년','월','주','일'],
|
||||
compactLabels1: ['년','월','주','일'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.ko);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Lithuanian localisation for the jQuery countdown extension
|
||||
* Written by Moacir P. de Sá Pereira (moacir{at}gmail.com) (2009) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.lt = {
|
||||
labels: ['Metų','Mėnesių','Savaičių','Dienų','Valandų','Minučių','Sekundžių'],
|
||||
labels1: ['Metai','Mėnuo','Savaitė','Diena','Valanda','Minutė','Sekundė'],
|
||||
compactLabels: ['m','m','s','d'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.lt);
|
||||
})(jQuery);
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Latvian initialisation for the jQuery countdown extension
|
||||
* Written by Jānis Peisenieks [email protected] (2010) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.lv = {
|
||||
labels: ['Gadi','Mēneši','Nedēļas','Dienas','Stundas','Minūtes','Sekundes'],
|
||||
labels1: ['Gads','Mēnesis','Nedēļa','Diena','Stunda','Minūte','Sekunde'],
|
||||
compactLabels: ['l','m','n','d'],
|
||||
compactLabels1: ['g','m','n','d'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.lv);
|
||||
})(jQuery);
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Macedonian initialisation for the jQuery countdown extension
|
||||
* Written by Gorast Cvetkovski [email protected] (2016) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.mk = {
|
||||
labels: ['Години','Месеци','Недели','Дена','Часа','Минути','Секунди'],
|
||||
labels1: ['Година','Месец','Недела','Ден','Час','Минута','Секунда'],
|
||||
compactLabels: ['l','m','n','d'],
|
||||
compactLabels1: ['g','m','n','d'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.mk);
|
||||
})(jQuery);
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Malayalam/(Indian>>Kerala) initialisation for the jQuery countdown extension
|
||||
* Written by Harilal.B ([email protected]) Feb 2013. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
/* jshint -W100 */
|
||||
$.countdown.regionalOptions.ml = {
|
||||
labels: ['വര്ഷങ്ങള്','മാസങ്ങള്','ആഴ്ചകള്','ദിവസങ്ങള്','മണിക്കൂറുകള്','മിനിറ്റുകള്','സെക്കന്റുകള്'],
|
||||
labels1: ['വര്ഷം','മാസം','ആഴ്ച','ദിവസം','മണിക്കൂര്','മിനിറ്റ്','സെക്കന്റ്'],
|
||||
compactLabels: ['വ','മ','ആ','ദി'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
// digits: ['൦','൧','൨','൩','൪','൫','൬','൭','൮','൯'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.ml);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Malay initialisation for the jQuery countdown extension
|
||||
Written by Jason Ong (jason{at}portalgroove.com) May 2010. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.ms = {
|
||||
labels: ['Tahun','Bulan','Minggu','Hari','Jam','Minit','Saat'],
|
||||
labels1: ['Tahun','Bulan','Minggu','Hari','Jam','Minit','Saat'],
|
||||
compactLabels: ['t','b','m','h'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.ms);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Burmese initialisation for the jQuery countdown extension
|
||||
Written by Win Lwin Moe ([email protected]) Dec 2009. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.my = {
|
||||
labels: ['နွစ္','လ','ရက္သတဿတပတ္','ရက္','နာရီ','မိနစ္','စကဿကန့္'],
|
||||
labels1: ['နွစ္','လ','ရက္သတဿတပတ္','ရက္','နာရီ','မိနစ္','စကဿကန့္'],
|
||||
compactLabels: ['နွစ္','လ','ရက္သတဿတပတ္','ရက္'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.my);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Norwegian Bokmål translation
|
||||
Written by Kristian Ravnevand */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.nb = {
|
||||
labels: ['År','Måneder','Uker','Dager','Timer','Minutter','Sekunder'],
|
||||
labels1: ['År','Måned','Uke','Dag','Time','Minutt','Sekund'],
|
||||
compactLabels: ['Å','M','U','D'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.nb);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Dutch initialisation for the jQuery countdown extension
|
||||
Written by Mathias Bynens <http://mathiasbynens.be/> Mar 2008. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.nl = {
|
||||
labels: ['Jaren','Maanden','Weken','Dagen','Uren','Minuten','Seconden'],
|
||||
labels1: ['Jaar','Maand','Week','Dag','Uur','Minuut','Seconde'],
|
||||
compactLabels: ['j','m','w','d'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.nl);
|
||||
})(jQuery);
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Polish initialisation for the jQuery countdown extension
|
||||
* Written by Pawel Lewtak [email protected] (2008) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.pl = {
|
||||
labels: ['lat','miesięcy','tygodni','dni','godzin','minut','sekund'],
|
||||
labels1: ['rok','miesiąc','tydzień','dzień','godzina','minuta','sekunda'],
|
||||
labels2: ['lata','miesiące','tygodnie','dni','godziny','minuty','sekundy'],
|
||||
compactLabels: ['l','m','t','d'],
|
||||
compactLabels1: ['r','m','t','d'],
|
||||
whichLabels: function(amount) {
|
||||
var units = amount % 10;
|
||||
var tens = Math.floor((amount % 100) / 10);
|
||||
return (amount === 1 ? 1 : (units >= 2 && units <= 4 && tens !== 1 ? 2 : 0));
|
||||
},
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.pl);
|
||||
})(jQuery);
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Brazilian initialisation for the jQuery countdown extension
|
||||
Translated by Marcelo Pellicano de Oliveira ([email protected]) Feb 2008.
|
||||
and Juan Roldan (juan.roldan[at]relayweb.com.br) Mar 2012. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions['pt-BR'] = {
|
||||
labels: ['Anos','Meses','Semanas','Dias','Horas','Minutos','Segundos'],
|
||||
labels1: ['Ano','Mês','Semana','Dia','Hora','Minuto','Segundo'],
|
||||
compactLabels: ['a','m','s','d'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions['pt-BR']);
|
||||
})(jQuery);
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Brazilian initialisation for the jQuery countdown extension
|
||||
Translated by Marcelo Pellicano de Oliveira ([email protected]) Feb 2008.
|
||||
and Juan Roldan (juan.roldan[at]relayweb.com.br) Mar 2012. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions['pt-BR'] = {
|
||||
labels: ['Anos','Meses','Semanas','Dias','Horas','Minutos','Segundos'],
|
||||
labels1: ['Ano','Mês','Semana','Dia','Hora','Minuto','Segundo'],
|
||||
compactLabels: ['a','m','s','d'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions['pt-BR']);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Romanian initialisation for the jQuery countdown extension
|
||||
* Written by Edmond L. ([email protected]). */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.ro = {
|
||||
labels: ['Ani','Luni','Saptamani','Zile','Ore','Minute','Secunde'],
|
||||
labels1: ['An','Luna','Saptamana','Ziua','Ora','Minutul','Secunda'],
|
||||
compactLabels: ['A','L','S','Z'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.ro);
|
||||
})(jQuery);
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Russian initialisation for the jQuery countdown extension
|
||||
* Written by Sergey K. (xslade{at}gmail.com) June 2010. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.ru = {
|
||||
labels: ['Лет','Месяцев','Недель','Дней','Часов','Минут','Секунд'],
|
||||
labels1: ['Год','Месяц','Неделя','День','Час','Минута','Секунда'],
|
||||
labels2: ['Года','Месяца','Недели','Дня','Часа','Минуты','Секунды'],
|
||||
compactLabels: ['л','м','н','д'],
|
||||
compactLabels1: ['г','м','н','д'],
|
||||
whichLabels: function(amount) {
|
||||
var units = amount % 10;
|
||||
var tens = Math.floor((amount % 100) / 10);
|
||||
return (amount === 1 ? 1 : (units >= 2 && units <= 4 && tens !== 1 ? 2 :
|
||||
(units === 1 && tens !== 1 ? 1 : 0)));
|
||||
},
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.ru);
|
||||
})(jQuery);
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Slovak initialisation for the jQuery countdown extension
|
||||
* Written by Roman Chlebec ([email protected]) (2008) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.sk = {
|
||||
labels: ['Rokov','Mesiacov','Týždňov','Dní','Hodín','Minút','Sekúnd'],
|
||||
labels1: ['Rok','Mesiac','Týždeň','Deň','Hodina','Minúta','Sekunda'],
|
||||
labels2: ['Roky','Mesiace','Týždne','Dni','Hodiny','Minúty','Sekundy'],
|
||||
compactLabels: ['r','m','t','d'],
|
||||
whichLabels: function(amount) {
|
||||
return (amount === 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0));
|
||||
},
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.sk);
|
||||
})(jQuery);
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Slovenian localisation for the jQuery countdown extension
|
||||
* Written by Borut Tomažin (debijan{at}gmail.com) (2011)
|
||||
* updated by Jan Zavrl ([email protected]) (2015) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.sl = {
|
||||
labels: ['Let','Mesecev','Tednov','Dni','Ur','Minut','Sekund'], // Plurals
|
||||
labels1: ['Leto','Mesec','Teden','Dan','Ura','Minuta','Sekunda'], // Singles
|
||||
labels2: ['Leti','Meseca','Tedna','Dneva','Uri','Minuti','Sekundi'], // Doubles
|
||||
labels3: ['Leta','Meseci','Tedni','Dnevi','Ure','Minute','Sekunde'], // 3's
|
||||
labels4: ['Leta','Meseci','Tedni','Dnevi','Ure','Minute','Sekunde'], // 4's
|
||||
compactLabels: ['l','m','t','d'],
|
||||
whichLabels: function(amount) {
|
||||
return (amount > 4 ? 0 : amount);
|
||||
},
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.sl);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Albanian initialisation for the jQuery countdown extension
|
||||
Written by Erzen Komoni. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.sq = {
|
||||
labels: ['Vite','Muaj','Javë','Ditë','Orë','Minuta','Sekonda'],
|
||||
labels1: ['Vit','Muaj','Javë','Dit','Orë','Minutë','Sekond'],
|
||||
compactLabels: ['V','M','J','D'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.sq);
|
||||
})(jQuery);
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Serbian Latin initialisation for the jQuery countdown extension
|
||||
* Written by Predrag Leka [email protected] (2010) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions['sr-SR'] = {
|
||||
labels: ['Godina','Meseci','Nedelja','Dana','Časova','Minuta','Sekundi'],
|
||||
labels1: ['Godina','Mesec','Nedelja','Dan','Čas','Minut','Sekunda'],
|
||||
labels2: ['Godine','Meseca','Nedelje','Dana','Časa','Minuta','Sekunde'],
|
||||
compactLabels: ['g','m','n','d'],
|
||||
whichLabels: function(amount) {
|
||||
return (amount === 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0));
|
||||
},
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions['sr-SR']);
|
||||
})(jQuery);
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Serbian Cyrillic initialisation for the jQuery countdown extension
|
||||
* Written by Predrag Leka [email protected] (2010) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.sr = {
|
||||
labels: ['Година','Месеци','Недеља','Дана','Часова','Минута','Секунди'],
|
||||
labels1: ['Година','месец','Недеља','Дан','Час','Минут','Секунда'],
|
||||
labels2: ['Године','Месеца','Недеље','Дана','Часа','Минута','Секунде'],
|
||||
compactLabels: ['г','м','н','д'],
|
||||
whichLabels: function(amount) {
|
||||
return (amount === 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0));
|
||||
},
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.sr);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Swedish initialisation for the jQuery countdown extension
|
||||
Written by Carl ([email protected]). */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.sv = {
|
||||
labels: ['År','Månader','Veckor','Dagar','Timmar','Minuter','Sekunder'],
|
||||
labels1: ['År','Månad','Vecka','Dag','Timme','Minut','Sekund'],
|
||||
compactLabels: ['Å','M','V','D'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.sv);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Thai initialisation for the jQuery countdown extension
|
||||
Written by Pornchai Sakulsrimontri ([email protected]). */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.th = {
|
||||
labels: ['ปี','เดือน','สัปดาห์','วัน','ชั่วโมง','นาที','วินาที'],
|
||||
labels1: ['ปี','เดือน','สัปดาห์','วัน','ชั่วโมง','นาที','วินาที'],
|
||||
compactLabels: ['ปี','เดือน','สัปดาห์','วัน'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.th);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Turkish initialisation for the jQuery countdown extension
|
||||
* Written by Bekir Ahmetoğlu ([email protected]) Aug 2008. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.tr = {
|
||||
labels: ['Yıl','Ay','Hafta','Gün','Saat','Dakika','Saniye'],
|
||||
labels1: ['Yıl','Ay','Hafta','Gün','Saat','Dakika','Saniye'],
|
||||
compactLabels: ['y','a','h','g'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.tr);
|
||||
})(jQuery);
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Ukrainian initialisation for the jQuery countdown extension
|
||||
* Written by Goloborodko M [email protected] (2009), corrections by Iгор Kоновал */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.uk = {
|
||||
labels: ['Років','Місяців','Тижнів','Днів','Годин','Хвилин','Секунд'],
|
||||
labels1: ['Рік','Місяць','Тиждень','День','Година','Хвилина','Секунда'],
|
||||
labels2: ['Роки','Місяці','Тижні','Дні','Години','Хвилини','Секунди'],
|
||||
compactLabels: ['r','m','t','d'],
|
||||
whichLabels: function(amount) {
|
||||
return (amount === 1 ? 1 : (amount >=2 && amount <= 4 ? 2 : 0));
|
||||
},
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.uk);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Urdu (اردو) initialisation for the jQuery countdown extension
|
||||
Translated by Azhar Rasheed ([email protected]), November 2013. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.ur = {
|
||||
labels: ['سال','مہينے','ہفتے','دن','گھنٹے','منٹس','سيکنڑز'],
|
||||
labels1: ['سال','ماہ','ہفتہ','دن','گھنٹہ','منٹ','سیکنڈز'],
|
||||
compactLabels: ['(ق)','سینٹ','ایک','J'],
|
||||
whichLabels: null,
|
||||
digits: ['٠','١','٢','٣','۴','۵','۶','۷','٨','٩'],
|
||||
timeSeparator: ':',
|
||||
isRTL: true
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.ur);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Uzbek initialisation for the jQuery countdown extension
|
||||
* Written by Alisher U. (ulugbekov{at}gmail.com) August 2012. */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.uz = {
|
||||
labels: ['Yil','Oy','Hafta','Kun','Soat','Daqiqa','Soniya'],
|
||||
labels1: ['Yil','Oy','Hafta','Kun','Soat','Daqiqa','Soniya'],
|
||||
compactLabels: ['y','o','h','k'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.uz);
|
||||
})(jQuery);
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
* Vietnamese initialisation for the jQuery countdown extension
|
||||
* Written by Pham Tien Hung [email protected] (2010) */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions.vi = {
|
||||
labels: ['Năm','Tháng','Tuần','Ngày','Giờ','Phút','Giây'],
|
||||
labels1: ['Năm','Tháng','Tuần','Ngày','Giờ','Phút','Giây'],
|
||||
compactLabels: ['năm','th','tu','ng'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions.vi);
|
||||
})(jQuery);
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Simplified Chinese initialisation for the jQuery countdown extension
|
||||
Written by Cloudream ([email protected]). */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions['zh-CN'] = {
|
||||
labels: ['年','月','周','天','时','分','秒'],
|
||||
labels1: ['年','月','周','天','时','分','秒'],
|
||||
compactLabels: ['年','月','周','天'],
|
||||
compactLabels1: ['年','月','周','天'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions['zh-CN']);
|
||||
})(jQuery);
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/* http://keith-wood.name/countdown.html
|
||||
Traditional Chinese initialisation for the jQuery countdown extension
|
||||
Written by Cloudream ([email protected]). */
|
||||
(function($) {
|
||||
'use strict';
|
||||
$.countdown.regionalOptions['zh-TW'] = {
|
||||
labels: ['年','月','周','天','時','分','秒'],
|
||||
labels1: ['年','月','周','天','時','分','秒'],
|
||||
compactLabels: ['年','月','周','天'],
|
||||
compactLabels1: ['年','月','周','天'],
|
||||
whichLabels: null,
|
||||
digits: ['0','1','2','3','4','5','6','7','8','9'],
|
||||
timeSeparator: ':',
|
||||
isRTL: false
|
||||
};
|
||||
$.countdown.setDefaults($.countdown.regionalOptions['zh-TW']);
|
||||
})(jQuery);
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,577 @@
|
||||
/**
|
||||
* jQuery Nested v1.03
|
||||
*
|
||||
* For a (total) gap free, multi column, grid layout experience.
|
||||
* http://suprb.com/apps/nested/
|
||||
* By Andreas Pihlström and additional brain activity by Jonas Blomdin
|
||||
*
|
||||
* Licensed under the MIT license.
|
||||
*/
|
||||
|
||||
// Debouncing function from John Hann
|
||||
// http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
|
||||
// Copy pasted from http://paulirish.com/2009/throttled-smartresize-jquery-event-handler/
|
||||
|
||||
(function ($, sr) {
|
||||
var debounce = function (func, threshold, execAsap) {
|
||||
var timeout;
|
||||
return function debounced() {
|
||||
var obj = this,
|
||||
args = arguments;
|
||||
|
||||
function delayed() {
|
||||
if (!execAsap) func.apply(obj, args);
|
||||
timeout = null;
|
||||
};
|
||||
if (timeout) clearTimeout(timeout);
|
||||
else if (execAsap) func.apply(obj, args);
|
||||
|
||||
timeout = setTimeout(delayed, threshold || 150);
|
||||
};
|
||||
};
|
||||
jQuery.fn[sr] = function (fn) {
|
||||
return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr);
|
||||
};
|
||||
|
||||
})(jQuery, 'smartresize');
|
||||
|
||||
// Simple count object properties
|
||||
|
||||
if (!Object.keys) {
|
||||
Object.keys = function (obj) {
|
||||
var keys = [],
|
||||
k;
|
||||
for (k in obj) {
|
||||
if (Object.prototype.hasOwnProperty.call(obj, k)) {
|
||||
keys.push(k);
|
||||
}
|
||||
}
|
||||
return keys;
|
||||
};
|
||||
}
|
||||
|
||||
// The Nested magic
|
||||
|
||||
(function ($) {
|
||||
|
||||
$.Nested = function (options, element) {
|
||||
this.element = $(element);
|
||||
this._init(options);
|
||||
};
|
||||
|
||||
$.Nested.settings = {
|
||||
selector: '.box',
|
||||
minWidth: 50,
|
||||
minColumns: 1,
|
||||
gutter: 1,
|
||||
centered: false,
|
||||
resizeToFit: true, // will resize block bigger than the gap
|
||||
resizeToFitOptions: {
|
||||
resizeAny: true // will resize any block to fit the gap
|
||||
},
|
||||
animate: true,
|
||||
animationOptions: {
|
||||
speed: 20,
|
||||
duration: 100,
|
||||
queue: true,
|
||||
complete: function () {}
|
||||
}
|
||||
};
|
||||
|
||||
$.Nested.prototype = {
|
||||
|
||||
_init: function (options) {
|
||||
var container = this;
|
||||
this.box = this.element;
|
||||
$(this.box).css('position', 'relative');
|
||||
this.options = $.extend(true, {}, $.Nested.settings, options);
|
||||
this.elements = [];
|
||||
this._isResizing = false;
|
||||
this._update = true;
|
||||
this.maxy = new Array();
|
||||
|
||||
// add smartresize
|
||||
$(window).smartresize(function () {
|
||||
container.resize();
|
||||
});
|
||||
|
||||
// build box dimensions
|
||||
this._setBoxes();
|
||||
},
|
||||
|
||||
_setBoxes: function ($els, method) {
|
||||
var self = this;
|
||||
this.idCounter = 0;
|
||||
this.counter = 0;
|
||||
this.t = 0;
|
||||
this.maxHeight = 0;
|
||||
this.currWidth = 0;
|
||||
this.total = this.box.find(this.options.selector);
|
||||
this.matrix = {};
|
||||
this.gridrow = new Object;
|
||||
|
||||
var calcWidth = !this.options.centered ? this.box.innerWidth() : $(window).width();
|
||||
|
||||
this.columns = Math.max(this.options.minColumns, parseInt(calcWidth / (this.options.minWidth + this.options.gutter)) + 1);
|
||||
|
||||
// build columns
|
||||
var minWidth = this.options.minWidth;
|
||||
var gutter = this.options.gutter;
|
||||
var display = "block";
|
||||
|
||||
$els = this.box.find(this.options.selector);
|
||||
|
||||
$.each($els, function () {
|
||||
|
||||
var dim = parseInt($(this).attr('class').replace(/^.*size([0-9]+).*$/, '$1')).toString().split('');
|
||||
var x = (dim[0] == "N") ? 1 : parseFloat(dim[0]);
|
||||
var y = (dim[1] == "a") ? 1 : parseFloat(dim[1]);
|
||||
|
||||
var currWidth = minWidth * x + gutter * (x - 1);
|
||||
var currHeight = minWidth * y + gutter * (y - 1);
|
||||
|
||||
$(this).css({
|
||||
'display': display,
|
||||
'position': 'absolute',
|
||||
'width': currWidth,
|
||||
'height': currHeight,
|
||||
'top': $(this).position().top,
|
||||
'left': $(this).position().left
|
||||
}).removeClass('nested-moved').attr('data-box', self.idCounter).attr('data-width', currWidth);
|
||||
|
||||
self.idCounter++;
|
||||
|
||||
// render grid
|
||||
self._renderGrid($(this), method);
|
||||
|
||||
});
|
||||
|
||||
// position grid
|
||||
if (self.counter == self.total.length) {
|
||||
|
||||
// if option resizeToFit is true
|
||||
if (self.options.resizeToFit) {
|
||||
self.elements = self._fillGaps();
|
||||
}
|
||||
self._renderItems(self.elements);
|
||||
// reset elements
|
||||
self.elements = [];
|
||||
}
|
||||
},
|
||||
|
||||
_addMatrixRow: function (y) {
|
||||
if (this.matrix[y]) {
|
||||
return false;
|
||||
} else this.matrix[y] = {};
|
||||
|
||||
for (var c = 0; c < (this.columns - 1); c++) {
|
||||
var x = c * (this.options.minWidth + this.options.gutter);
|
||||
this.matrix[y][x] = 'false';
|
||||
}
|
||||
},
|
||||
|
||||
_updateMatrix: function (el) {
|
||||
var height = 0;
|
||||
var t = parseInt(el['y']);
|
||||
var l = parseInt(el['x']);
|
||||
for (var h = 0; h < el['height']; h += (this.options.minWidth + this.options.gutter)) {
|
||||
for (var w = 0; w < el['width']; w += (this.options.minWidth + this.options.gutter)) {
|
||||
var x = l + w;
|
||||
var y = t + h;
|
||||
if (!this.matrix[y]) {
|
||||
this._addMatrixRow(y);
|
||||
}
|
||||
this.matrix[y][x] = 'true';
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_getObjectSize: function (obj) { // Helper to get size of object, should probably be moved
|
||||
var size = 0;
|
||||
$.each(obj, function (p, v) {
|
||||
size++;
|
||||
});
|
||||
return size;
|
||||
},
|
||||
|
||||
|
||||
_fillGaps: function () {
|
||||
var self = this;
|
||||
var box = {};
|
||||
|
||||
$.each(this.elements, function (index, el) {
|
||||
self._updateMatrix(el);
|
||||
});
|
||||
|
||||
var arr = this.elements;
|
||||
arr.sort(function (a, b) {
|
||||
return a.y - b.y;
|
||||
});
|
||||
arr.reverse();
|
||||
|
||||
// Used to keep the highest y value for a box in memory
|
||||
var topY = arr[0]['y'];
|
||||
|
||||
// Used for current y with added offset
|
||||
var actualY = 0;
|
||||
|
||||
// Current number of rows in matrix
|
||||
var rowsLeft = this._getObjectSize(this.matrix);
|
||||
|
||||
$.each(this.matrix, function (y, row) {
|
||||
rowsLeft--;
|
||||
actualY = parseInt(y); // + parseInt(self.box.offset().top);
|
||||
$.each(row, function (x, col) {
|
||||
|
||||
if (col === 'false' && actualY < topY) {
|
||||
if (!box.y) box.y = y;
|
||||
if (!box.x) box.x = x;
|
||||
if (!box.w) box.w = 0;
|
||||
if (!box.h) box.h = self.options.minWidth;
|
||||
box.w += (box.w) ? (self.options.minWidth + self.options.gutter) : self.options.minWidth;
|
||||
|
||||
var addonHeight = 0;
|
||||
for (var row = 1; row < rowsLeft; row++) {
|
||||
var z = parseInt(y) + parseInt(row * (self.options.minWidth + self.options.gutter));
|
||||
if (self.matrix[z] && self.matrix[z][x] == 'false') {
|
||||
addonHeight += (self.options.minWidth + self.options.gutter);
|
||||
self.matrix[z][x] = 'true';
|
||||
} else break;
|
||||
}
|
||||
|
||||
box.h + (parseInt(addonHeight) / (self.options.minWidth + self.options.gutter) == rowsLeft) ? 0 : parseInt(addonHeight);
|
||||
box.ready = true;
|
||||
|
||||
} else if (box.ready) {
|
||||
|
||||
$.each(arr, function (i, el) {
|
||||
if (box.y <= arr[i]['y'] && (self.options.resizeToFitOptions.resizeAny || box.w <= arr[i]['width'] && box.h <= arr[i]['height'])) {
|
||||
arr.splice(i, 1);
|
||||
$(el['$el']).addClass('nested-moved');
|
||||
self.elements.push({
|
||||
$el: $(el['$el']),
|
||||
x: parseInt(box.x),
|
||||
y: parseInt(box.y),
|
||||
col: i,
|
||||
width: parseInt(box.w),
|
||||
height: parseInt(box.h)
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
box = {};
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
self.elements = arr;
|
||||
return self.elements;
|
||||
|
||||
},
|
||||
|
||||
_renderGrid: function ($box, method) {
|
||||
|
||||
this.counter++;
|
||||
var ypos, gridy = ypos = 0;
|
||||
var tot = 0;
|
||||
var direction = !method ? "append" : "prepend";
|
||||
|
||||
// Width & height
|
||||
var width = $box.width();
|
||||
var height = $box.height();
|
||||
|
||||
// Calculate row and col
|
||||
var col = Math.ceil(width / (this.options.minWidth + this.options.gutter));
|
||||
var row = Math.ceil(height / (this.options.minWidth + this.options.gutter));
|
||||
|
||||
// lock widest box to match minColumns
|
||||
if (col > this.options.minColumns) {
|
||||
this.options.minColumns = col;
|
||||
}
|
||||
|
||||
while (true) {
|
||||
|
||||
for (var y = col; y >= 0; y--) {
|
||||
if (this.gridrow[gridy + y]) break;
|
||||
this.gridrow[gridy + y] = new Object;
|
||||
for (var x = 0; x < this.columns; x++) {
|
||||
this.gridrow[gridy + y][x] = false;
|
||||
}
|
||||
}
|
||||
|
||||
for (var column = 0; column < (this.columns - col); column++) {
|
||||
|
||||
// Add default empty matrix, used to calculate and update matrix for each box
|
||||
matrixY = gridy * (this.options.minWidth + this.options.gutter);
|
||||
this._addMatrixRow(matrixY);
|
||||
|
||||
var fits = true;
|
||||
|
||||
for (var y = 0; y < row; y++) {
|
||||
for (var x = 0; x < col; x++) {
|
||||
|
||||
if (!this.gridrow[gridy + y]) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (this.gridrow[gridy + y][column + x]) {
|
||||
fits = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!fits) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (fits) {
|
||||
// Set as taken
|
||||
for (var y = 0; y < row; y++) {
|
||||
for (var x = 0; x < col; x++) {
|
||||
|
||||
if (!this.gridrow[gridy + y]) {
|
||||
break;
|
||||
}
|
||||
this.gridrow[gridy + y][column + x] = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Push to elements array
|
||||
this._pushItem($box, column * (this.options.minWidth + this.options.gutter), gridy * (this.options.minWidth + this.options.gutter), width, height, col, row, direction);
|
||||
return;
|
||||
}
|
||||
}
|
||||
gridy++;
|
||||
}
|
||||
},
|
||||
|
||||
_pushItem: function ($el, x, y, w, h, cols, rows, method) {
|
||||
|
||||
if (method == "prepend") {
|
||||
this.elements.unshift({
|
||||
$el: $el,
|
||||
x: x,
|
||||
y: y,
|
||||
width: w,
|
||||
height: h,
|
||||
cols: cols,
|
||||
rows: rows
|
||||
});
|
||||
} else {
|
||||
this.elements.push({
|
||||
$el: $el,
|
||||
x: x,
|
||||
y: y,
|
||||
width: w,
|
||||
height: h,
|
||||
cols: cols,
|
||||
rows: rows
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
_setHeight: function ($els) {
|
||||
var self = this;
|
||||
$.each($els, function (index, value) {
|
||||
// set maxHeight
|
||||
var colY = (value['y'] + value['height']);
|
||||
if (colY > self.maxHeight) {
|
||||
self.maxHeight = colY;
|
||||
}
|
||||
});
|
||||
return self.maxHeight;
|
||||
},
|
||||
|
||||
_setWidth: function ($els) {
|
||||
var self = this;
|
||||
$.each($els, function (index, value) {
|
||||
// set maxWidth
|
||||
var colX = (value['x'] + value['width']);
|
||||
if (colX > self.currWidth) {
|
||||
self.currWidth = colX;
|
||||
}
|
||||
});
|
||||
return self.currWidth;
|
||||
},
|
||||
|
||||
_renderItems: function ($els) {
|
||||
var self = this;
|
||||
|
||||
// set container height and width
|
||||
this.box.css('height', this._setHeight($els));
|
||||
if (this.options.centered) {
|
||||
this.box.css({'width' : this._setWidth($els), 'margin-left' : 'auto', 'margin-right' : 'auto'});
|
||||
}
|
||||
|
||||
$els.reverse();
|
||||
var speed = this.options.animationOptions.speed;
|
||||
var effect = this.options.animationOptions.effect;
|
||||
var duration = this.options.animationOptions.duration;
|
||||
var queue = this.options.animationOptions.queue;
|
||||
var animate = this.options.animate;
|
||||
var complete = this.options.animationOptions.complete;
|
||||
var item = this;
|
||||
var i = 0;
|
||||
var t = 0;
|
||||
|
||||
$.each($els, function (index, value) {
|
||||
|
||||
$currLeft = $(value['$el']).position().left;
|
||||
$currTop = $(value['$el']).position().top;
|
||||
$currWidth = $(value['$el']).width();
|
||||
$currHeight = $(value['$el']).width();
|
||||
|
||||
value['$el'].attr('data-y', $currTop).attr('data-x', $currLeft);
|
||||
|
||||
//if animate and queue
|
||||
if (animate && queue && ($currLeft != value['x'] || $currTop != value['y'])) {
|
||||
setTimeout(function () {
|
||||
value['$el'].css({
|
||||
'display': 'block',
|
||||
'width': value['width'],
|
||||
'height': value['height']
|
||||
}).animate({
|
||||
'left': value['x'],
|
||||
'top': value['y']
|
||||
}, duration);
|
||||
t++;
|
||||
if (t == i) {
|
||||
complete.call(undefined, $els)
|
||||
}
|
||||
}, i * speed);
|
||||
i++;
|
||||
}
|
||||
|
||||
//if animate and no queue
|
||||
if (animate && !queue && ($currLeft != value['x'] || $currTop != value['y'])) {
|
||||
setTimeout(function () {
|
||||
value['$el'].css({
|
||||
'display': 'block',
|
||||
'width': value['width'],
|
||||
'height': value['height']
|
||||
}).animate({
|
||||
'left': value['x'],
|
||||
'top': value['y']
|
||||
}, duration);
|
||||
t++;
|
||||
if (t == i) {
|
||||
complete.call(undefined, $els)
|
||||
}
|
||||
}, i);
|
||||
i++;
|
||||
}
|
||||
|
||||
//if no animation and no queue
|
||||
if (!animate && ($currLeft != value['x'] || $currTop != value['y'])) {
|
||||
value['$el'].css({
|
||||
'display': 'block',
|
||||
'width': value['width'],
|
||||
'height': value['height'],
|
||||
'left': value['x'],
|
||||
'top': value['y']
|
||||
});
|
||||
t++;
|
||||
if (t == i) {
|
||||
complete.call(undefined, $els)
|
||||
}
|
||||
}
|
||||
});
|
||||
if (i == 0) {
|
||||
complete.call(undefined, $els)
|
||||
}
|
||||
},
|
||||
|
||||
append: function ($els) {
|
||||
this._isResizing = true;
|
||||
this._setBoxes($els, 'append');
|
||||
this._isResizing = false;
|
||||
},
|
||||
|
||||
prepend: function ($els) {
|
||||
this._isResizing = true;
|
||||
this._setBoxes($els, 'prepend');
|
||||
this._isResizing = false;
|
||||
},
|
||||
|
||||
resize: function ($els) {
|
||||
if (Object.keys(this.matrix[0]).length % Math.floor(this.element.width() / (this.options.minWidth + this.options.gutter)) > 0) {
|
||||
this._isResizing = true;
|
||||
this._setBoxes(this.box.find(this.options.selector));
|
||||
this._isResizing = false;
|
||||
}
|
||||
},
|
||||
|
||||
refresh: function(options) {
|
||||
|
||||
options = options || this.options;
|
||||
|
||||
this.options = $.extend(true, {}, $.Nested.settings, options);
|
||||
this.elements = [];
|
||||
this._isResizing = false;
|
||||
|
||||
// build box dimensions
|
||||
this._setBoxes();
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
|
||||
var container = this;
|
||||
|
||||
$(window).unbind("resize", function () {
|
||||
container.resize();
|
||||
});
|
||||
|
||||
// unbind the resize event
|
||||
$els = this.box.find(this.options.selector);
|
||||
$($els).removeClass('nested-moved').removeAttr('style data-box data-width data-x data-y').removeData();
|
||||
|
||||
this.box.removeAttr("style").removeData();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
var methods =
|
||||
{
|
||||
refresh: function(options) {
|
||||
return this.each(function(){
|
||||
var $this=$(this);
|
||||
var nested = $this.data('nested');
|
||||
|
||||
nested.refresh(options);
|
||||
});
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
return this.each(function(){
|
||||
var $this=$(this);
|
||||
var nested = $this.data('nested');
|
||||
|
||||
nested.destroy();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
$.fn.nested = function (options, e) {
|
||||
|
||||
if(methods[options]) {
|
||||
return methods[options].apply(this, Array.prototype.slice.call(arguments, 1));
|
||||
}
|
||||
|
||||
if (typeof options === 'string') {
|
||||
this.each(function () {
|
||||
var container = $.data(this, 'nested');
|
||||
container[options].apply(container, [e]);
|
||||
});
|
||||
} else {
|
||||
this.each(function () {
|
||||
$.data(this, 'nested', new $.Nested(options, this));
|
||||
});
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
})(jQuery);
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,12 @@
|
||||
.tippy-box[data-animation=perspective][data-placement^=top]{transform-origin:bottom}.tippy-box[data-animation=perspective][data-placement^=top][data-state=visible]{transform:perspective(700px)}.tippy-box[data-animation=perspective][data-placement^=top][data-state=hidden]{transform:perspective(700px) translateY(8px) rotateX(60deg)}.tippy-box[data-animation=perspective][data-placement^=bottom]{transform-origin:top}.tippy-box[data-animation=perspective][data-placement^=bottom][data-state=visible]{transform:perspective(700px)}.tippy-box[data-animation=perspective][data-placement^=bottom][data-state=hidden]{transform:perspective(700px) translateY(-8px) rotateX(-60deg)}.tippy-box[data-animation=perspective][data-placement^=left]{transform-origin:right}.tippy-box[data-animation=perspective][data-placement^=left][data-state=visible]{transform:perspective(700px)}.tippy-box[data-animation=perspective][data-placement^=left][data-state=hidden]{transform:perspective(700px) translateX(8px) rotateY(-60deg)}.tippy-box[data-animation=perspective][data-placement^=right]{transform-origin:left}.tippy-box[data-animation=perspective][data-placement^=right][data-state=visible]{transform:perspective(700px)}.tippy-box[data-animation=perspective][data-placement^=right][data-state=hidden]{transform:perspective(700px) translateX(-8px) rotateY(60deg)}.tippy-box[data-animation=perspective][data-state=hidden]{opacity:0}
|
||||
.tippy-box[data-animation=shift-toward-subtle][data-state=hidden]{opacity:0}.tippy-box[data-animation=shift-toward-subtle][data-state=hidden][data-placement^=top][data-state=hidden]{transform:translateY(-5px)}.tippy-box[data-animation=shift-toward-subtle][data-state=hidden][data-placement^=bottom][data-state=hidden]{transform:translateY(5px)}.tippy-box[data-animation=shift-toward-subtle][data-state=hidden][data-placement^=left][data-state=hidden]{transform:translateX(-5px)}.tippy-box[data-animation=shift-toward-subtle][data-state=hidden][data-placement^=right][data-state=hidden]{transform:translateX(5px)}
|
||||
.tippy-box[data-animation=shift-toward-extreme][data-state=hidden]{opacity:0}.tippy-box[data-animation=shift-toward-extreme][data-state=hidden][data-placement^=top]{transform:translateY(-20px)}.tippy-box[data-animation=shift-toward-extreme][data-state=hidden][data-placement^=bottom]{transform:translateY(20px)}.tippy-box[data-animation=shift-toward-extreme][data-state=hidden][data-placement^=left]{transform:translateX(-20px)}.tippy-box[data-animation=shift-toward-extreme][data-state=hidden][data-placement^=right]{transform:translateX(20px)}
|
||||
.tippy-box[data-animation=shift-toward][data-state=hidden]{opacity:0}.tippy-box[data-animation=shift-toward][data-state=hidden][data-placement^=top]{transform:translateY(-10px)}.tippy-box[data-animation=shift-toward][data-state=hidden][data-placement^=bottom]{transform:translateY(10px)}.tippy-box[data-animation=shift-toward][data-state=hidden][data-placement^=left]{transform:translateX(-10px)}.tippy-box[data-animation=shift-toward][data-state=hidden][data-placement^=right]{transform:translateX(10px)}
|
||||
.tippy-box[data-animation=shift-away-subtle][data-state=hidden]{opacity:0}.tippy-box[data-animation=shift-away-subtle][data-state=hidden][data-placement^=top]{transform:translateY(5px)}.tippy-box[data-animation=shift-away-subtle][data-state=hidden][data-placement^=bottom]{transform:translateY(-5px)}.tippy-box[data-animation=shift-away-subtle][data-state=hidden][data-placement^=left]{transform:translateX(5px)}.tippy-box[data-animation=shift-away-subtle][data-state=hidden][data-placement^=right]{transform:translateX(-5px)}
|
||||
.tippy-box[data-animation=shift-away-extreme][data-state=hidden]{opacity:0}.tippy-box[data-animation=shift-away-extreme][data-state=hidden][data-placement^=top]{transform:translateY(20px)}.tippy-box[data-animation=shift-away-extreme][data-state=hidden][data-placement^=bottom]{transform:translateY(-20px)}.tippy-box[data-animation=shift-away-extreme][data-state=hidden][data-placement^=left]{transform:translateX(20px)}.tippy-box[data-animation=shift-away-extreme][data-state=hidden][data-placement^=right]{transform:translateX(-20px)}
|
||||
.tippy-box[data-animation=shift-away][data-state=hidden]{opacity:0}.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=top]{transform:translateY(10px)}.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=bottom]{transform:translateY(-10px)}.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=left]{transform:translateX(10px)}.tippy-box[data-animation=shift-away][data-state=hidden][data-placement^=right]{transform:translateX(-10px)}
|
||||
.tippy-box[data-animation=scale-subtle][data-placement^=top]{transform-origin:bottom}.tippy-box[data-animation=scale-subtle][data-placement^=bottom]{transform-origin:top}.tippy-box[data-animation=scale-subtle][data-placement^=left]{transform-origin:right}.tippy-box[data-animation=scale-subtle][data-placement^=right]{transform-origin:left}.tippy-box[data-animation=scale-subtle][data-state=hidden]{transform:scale(.8);opacity:0}
|
||||
.tippy-box[data-animation=scale-extreme][data-placement^=top]{transform-origin:bottom}.tippy-box[data-animation=scale-extreme][data-placement^=bottom]{transform-origin:top}.tippy-box[data-animation=scale-extreme][data-placement^=left]{transform-origin:right}.tippy-box[data-animation=scale-extreme][data-placement^=right]{transform-origin:left}.tippy-box[data-animation=scale-extreme][data-state=hidden]{transform:scale(0);opacity:.25}
|
||||
.tippy-box[data-animation=scale][data-placement^=top]{transform-origin:bottom}.tippy-box[data-animation=scale][data-placement^=bottom]{transform-origin:top}.tippy-box[data-animation=scale][data-placement^=left]{transform-origin:right}.tippy-box[data-animation=scale][data-placement^=right]{transform-origin:left}.tippy-box[data-animation=scale][data-state=hidden]{transform:scale(.5);opacity:0}
|
||||
.tippy-box[data-animation=perspective-subtle][data-placement^=top]{transform-origin:bottom}.tippy-box[data-animation=perspective-subtle][data-placement^=top][data-state=visible]{transform:perspective(700px)}.tippy-box[data-animation=perspective-subtle][data-placement^=top][data-state=hidden]{transform:perspective(700px) translateY(5px) rotateX(30deg)}.tippy-box[data-animation=perspective-subtle][data-placement^=bottom]{transform-origin:top}.tippy-box[data-animation=perspective-subtle][data-placement^=bottom][data-state=visible]{transform:perspective(700px)}.tippy-box[data-animation=perspective-subtle][data-placement^=bottom][data-state=hidden]{transform:perspective(700px) translateY(-5px) rotateX(-30deg)}.tippy-box[data-animation=perspective-subtle][data-placement^=left]{transform-origin:right}.tippy-box[data-animation=perspective-subtle][data-placement^=left][data-state=visible]{transform:perspective(700px)}.tippy-box[data-animation=perspective-subtle][data-placement^=left][data-state=hidden]{transform:perspective(700px) translateX(5px) rotateY(-30deg)}.tippy-box[data-animation=perspective-subtle][data-placement^=right]{transform-origin:left}.tippy-box[data-animation=perspective-subtle][data-placement^=right][data-state=visible]{transform:perspective(700px)}.tippy-box[data-animation=perspective-subtle][data-placement^=right][data-state=hidden]{transform:perspective(700px) translateX(-5px) rotateY(30deg)}.tippy-box[data-animation=perspective-subtle][data-state=hidden]{opacity:0}
|
||||
.tippy-box[data-animation=perspective-extreme][data-placement^=top]{transform-origin:bottom}.tippy-box[data-animation=perspective-extreme][data-placement^=top][data-state=visible]{transform:perspective(700px)}.tippy-box[data-animation=perspective-extreme][data-placement^=top][data-state=hidden]{transform:perspective(700px) translateY(10px) rotateX(90deg)}.tippy-box[data-animation=perspective-extreme][data-placement^=bottom]{transform-origin:top}.tippy-box[data-animation=perspective-extreme][data-placement^=bottom][data-state=visible]{transform:perspective(700px)}.tippy-box[data-animation=perspective-extreme][data-placement^=bottom][data-state=hidden]{transform:perspective(700px) translateY(-10px) rotateX(-90deg)}.tippy-box[data-animation=perspective-extreme][data-placement^=left]{transform-origin:right}.tippy-box[data-animation=perspective-extreme][data-placement^=left][data-state=visible]{transform:perspective(700px)}.tippy-box[data-animation=perspective-extreme][data-placement^=left][data-state=hidden]{transform:perspective(700px) translateX(10px) rotateY(-90deg)}.tippy-box[data-animation=perspective-extreme][data-placement^=right]{transform-origin:left}.tippy-box[data-animation=perspective-extreme][data-placement^=right][data-state=visible]{transform:perspective(700px)}.tippy-box[data-animation=perspective-extreme][data-placement^=right][data-state=hidden]{transform:perspective(700px) translateX(-10px) rotateY(90deg)}.tippy-box[data-animation=perspective-extreme][data-state=hidden]{opacity:.5}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,4 @@
|
||||
.tippy-box[data-theme~=light]{color:#26323d;box-shadow:0 0 20px 4px rgba(154,161,177,.15),0 4px 80px -8px rgba(36,40,47,.25),0 4px 4px -2px rgba(91,94,105,.15);background-color:#fff}.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff}.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff}.tippy-box[data-theme~=light]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light]>.tippy-svg-arrow{fill:#fff}
|
||||
.tippy-box[data-theme~=light-border]{background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,8,16,.15);color:#333;box-shadow:0 4px 14px -2px rgba(0,8,16,.08)}.tippy-box[data-theme~=light-border]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light-border]>.tippy-arrow:after,.tippy-box[data-theme~=light-border]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=light-border]>.tippy-arrow:after{border-color:transparent;border-style:solid}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-arrow:after{border-top-color:rgba(0,8,16,.2);border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:rgba(0,8,16,.2);border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:16px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-arrow:after{border-left-color:rgba(0,8,16,.2);border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:rgba(0,8,16,.2)}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=light-border]>.tippy-svg-arrow{fill:#fff}.tippy-box[data-theme~=light-border]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}
|
||||
.tippy-box[data-theme~=material]{background-color:#505355;font-weight:600}.tippy-box[data-theme~=material][data-placement^=top]>.tippy-arrow:before{border-top-color:#505355}.tippy-box[data-theme~=material][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#505355}.tippy-box[data-theme~=material][data-placement^=left]>.tippy-arrow:before{border-left-color:#505355}.tippy-box[data-theme~=material][data-placement^=right]>.tippy-arrow:before{border-right-color:#505355}.tippy-box[data-theme~=material]>.tippy-backdrop{background-color:#505355}.tippy-box[data-theme~=material]>.tippy-svg-arrow{fill:#505355}
|
||||
.tippy-box[data-theme~=translucent]{background-color:rgba(0,0,0,.7)}.tippy-box[data-theme~=translucent]>.tippy-arrow{width:14px;height:14px}.tippy-box[data-theme~=translucent][data-placement^=top]>.tippy-arrow:before{border-width:7px 7px 0;border-top-color:rgba(0,0,0,.7)}.tippy-box[data-theme~=translucent][data-placement^=bottom]>.tippy-arrow:before{border-width:0 7px 7px;border-bottom-color:rgba(0,0,0,.7)}.tippy-box[data-theme~=translucent][data-placement^=left]>.tippy-arrow:before{border-width:7px 0 7px 7px;border-left-color:rgba(0,0,0,.7)}.tippy-box[data-theme~=translucent][data-placement^=right]>.tippy-arrow:before{border-width:7px 7px 7px 0;border-right-color:rgba(0,0,0,.7)}.tippy-box[data-theme~=translucent]>.tippy-backdrop{background-color:rgba(0,0,0,.7)}.tippy-box[data-theme~=translucent]>.tippy-svg-arrow{fill:rgba(0,0,0,.7)}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,662 @@
|
||||
/*!
|
||||
Waypoints - 4.0.1
|
||||
Copyright © 2011-2016 Caleb Troughton
|
||||
Licensed under the MIT license.
|
||||
https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
|
||||
*/
|
||||
(function() {
|
||||
'use strict'
|
||||
|
||||
var keyCounter = 0
|
||||
var allWaypoints = {}
|
||||
|
||||
/* http://imakewebthings.com/waypoints/api/waypoint */
|
||||
function Waypoint(options) {
|
||||
if (!options) {
|
||||
throw new Error('No options passed to Waypoint constructor')
|
||||
}
|
||||
if (!options.element) {
|
||||
throw new Error('No element option passed to Waypoint constructor')
|
||||
}
|
||||
if (!options.handler) {
|
||||
throw new Error('No handler option passed to Waypoint constructor')
|
||||
}
|
||||
|
||||
this.key = 'waypoint-' + keyCounter
|
||||
this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options)
|
||||
this.element = this.options.element
|
||||
this.adapter = new Waypoint.Adapter(this.element)
|
||||
this.callback = options.handler
|
||||
this.axis = this.options.horizontal ? 'horizontal' : 'vertical'
|
||||
this.enabled = this.options.enabled
|
||||
this.triggerPoint = null
|
||||
this.group = Waypoint.Group.findOrCreate({
|
||||
name: this.options.group,
|
||||
axis: this.axis
|
||||
})
|
||||
this.context = Waypoint.Context.findOrCreateByElement(this.options.context)
|
||||
|
||||
if (Waypoint.offsetAliases[this.options.offset]) {
|
||||
this.options.offset = Waypoint.offsetAliases[this.options.offset]
|
||||
}
|
||||
this.group.add(this)
|
||||
this.context.add(this)
|
||||
allWaypoints[this.key] = this
|
||||
keyCounter += 1
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Waypoint.prototype.queueTrigger = function(direction) {
|
||||
this.group.queueTrigger(this, direction)
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Waypoint.prototype.trigger = function(args) {
|
||||
if (!this.enabled) {
|
||||
return
|
||||
}
|
||||
if (this.callback) {
|
||||
this.callback.apply(this, args)
|
||||
}
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/destroy */
|
||||
Waypoint.prototype.destroy = function() {
|
||||
this.context.remove(this)
|
||||
this.group.remove(this)
|
||||
delete allWaypoints[this.key]
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/disable */
|
||||
Waypoint.prototype.disable = function() {
|
||||
this.enabled = false
|
||||
return this
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/enable */
|
||||
Waypoint.prototype.enable = function() {
|
||||
this.context.refresh()
|
||||
this.enabled = true
|
||||
return this
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/next */
|
||||
Waypoint.prototype.next = function() {
|
||||
return this.group.next(this)
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/previous */
|
||||
Waypoint.prototype.previous = function() {
|
||||
return this.group.previous(this)
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Waypoint.invokeAll = function(method) {
|
||||
var allWaypointsArray = []
|
||||
for (var waypointKey in allWaypoints) {
|
||||
allWaypointsArray.push(allWaypoints[waypointKey])
|
||||
}
|
||||
for (var i = 0, end = allWaypointsArray.length; i < end; i++) {
|
||||
allWaypointsArray[i][method]()
|
||||
}
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/destroy-all */
|
||||
Waypoint.destroyAll = function() {
|
||||
Waypoint.invokeAll('destroy')
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/disable-all */
|
||||
Waypoint.disableAll = function() {
|
||||
Waypoint.invokeAll('disable')
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/enable-all */
|
||||
Waypoint.enableAll = function() {
|
||||
Waypoint.Context.refreshAll()
|
||||
for (var waypointKey in allWaypoints) {
|
||||
allWaypoints[waypointKey].enabled = true
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/refresh-all */
|
||||
Waypoint.refreshAll = function() {
|
||||
Waypoint.Context.refreshAll()
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/viewport-height */
|
||||
Waypoint.viewportHeight = function() {
|
||||
return window.innerHeight || document.documentElement.clientHeight
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/viewport-width */
|
||||
Waypoint.viewportWidth = function() {
|
||||
return document.documentElement.clientWidth
|
||||
}
|
||||
|
||||
Waypoint.adapters = []
|
||||
|
||||
Waypoint.defaults = {
|
||||
context: window,
|
||||
continuous: true,
|
||||
enabled: true,
|
||||
group: 'default',
|
||||
horizontal: false,
|
||||
offset: 0
|
||||
}
|
||||
|
||||
Waypoint.offsetAliases = {
|
||||
'bottom-in-view': function() {
|
||||
return this.context.innerHeight() - this.adapter.outerHeight()
|
||||
},
|
||||
'right-in-view': function() {
|
||||
return this.context.innerWidth() - this.adapter.outerWidth()
|
||||
}
|
||||
}
|
||||
|
||||
window.Waypoint = Waypoint
|
||||
}())
|
||||
;(function() {
|
||||
'use strict'
|
||||
|
||||
function requestAnimationFrameShim(callback) {
|
||||
window.setTimeout(callback, 1000 / 60)
|
||||
}
|
||||
|
||||
var keyCounter = 0
|
||||
var contexts = {}
|
||||
var Waypoint = window.Waypoint
|
||||
var oldWindowLoad = window.onload
|
||||
|
||||
/* http://imakewebthings.com/waypoints/api/context */
|
||||
function Context(element) {
|
||||
this.element = element
|
||||
this.Adapter = Waypoint.Adapter
|
||||
this.adapter = new this.Adapter(element)
|
||||
this.key = 'waypoint-context-' + keyCounter
|
||||
this.didScroll = false
|
||||
this.didResize = false
|
||||
this.oldScroll = {
|
||||
x: this.adapter.scrollLeft(),
|
||||
y: this.adapter.scrollTop()
|
||||
}
|
||||
this.waypoints = {
|
||||
vertical: {},
|
||||
horizontal: {}
|
||||
}
|
||||
|
||||
element.waypointContextKey = this.key
|
||||
contexts[element.waypointContextKey] = this
|
||||
keyCounter += 1
|
||||
if (!Waypoint.windowContext) {
|
||||
Waypoint.windowContext = true
|
||||
Waypoint.windowContext = new Context(window)
|
||||
}
|
||||
|
||||
this.createThrottledScrollHandler()
|
||||
this.createThrottledResizeHandler()
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Context.prototype.add = function(waypoint) {
|
||||
var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical'
|
||||
this.waypoints[axis][waypoint.key] = waypoint
|
||||
this.refresh()
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Context.prototype.checkEmpty = function() {
|
||||
var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal)
|
||||
var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical)
|
||||
var isWindow = this.element == this.element.window
|
||||
if (horizontalEmpty && verticalEmpty && !isWindow) {
|
||||
this.adapter.off('.waypoints')
|
||||
delete contexts[this.key]
|
||||
}
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Context.prototype.createThrottledResizeHandler = function() {
|
||||
var self = this
|
||||
|
||||
function resizeHandler() {
|
||||
self.handleResize()
|
||||
self.didResize = false
|
||||
}
|
||||
|
||||
this.adapter.on('resize.waypoints', function() {
|
||||
if (!self.didResize) {
|
||||
self.didResize = true
|
||||
Waypoint.requestAnimationFrame(resizeHandler)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Context.prototype.createThrottledScrollHandler = function() {
|
||||
var self = this
|
||||
function scrollHandler() {
|
||||
self.handleScroll()
|
||||
self.didScroll = false
|
||||
}
|
||||
|
||||
this.adapter.on('scroll.waypoints', function() {
|
||||
if (!self.didScroll || Waypoint.isTouch) {
|
||||
self.didScroll = true
|
||||
Waypoint.requestAnimationFrame(scrollHandler)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Context.prototype.handleResize = function() {
|
||||
Waypoint.Context.refreshAll()
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Context.prototype.handleScroll = function() {
|
||||
var triggeredGroups = {}
|
||||
var axes = {
|
||||
horizontal: {
|
||||
newScroll: this.adapter.scrollLeft(),
|
||||
oldScroll: this.oldScroll.x,
|
||||
forward: 'right',
|
||||
backward: 'left'
|
||||
},
|
||||
vertical: {
|
||||
newScroll: this.adapter.scrollTop(),
|
||||
oldScroll: this.oldScroll.y,
|
||||
forward: 'down',
|
||||
backward: 'up'
|
||||
}
|
||||
}
|
||||
|
||||
for (var axisKey in axes) {
|
||||
var axis = axes[axisKey]
|
||||
var isForward = axis.newScroll > axis.oldScroll
|
||||
var direction = isForward ? axis.forward : axis.backward
|
||||
|
||||
for (var waypointKey in this.waypoints[axisKey]) {
|
||||
var waypoint = this.waypoints[axisKey][waypointKey]
|
||||
if (waypoint.triggerPoint === null) {
|
||||
continue
|
||||
}
|
||||
var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint
|
||||
var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint
|
||||
var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint
|
||||
var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint
|
||||
if (crossedForward || crossedBackward) {
|
||||
waypoint.queueTrigger(direction)
|
||||
triggeredGroups[waypoint.group.id] = waypoint.group
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var groupKey in triggeredGroups) {
|
||||
triggeredGroups[groupKey].flushTriggers()
|
||||
}
|
||||
|
||||
this.oldScroll = {
|
||||
x: axes.horizontal.newScroll,
|
||||
y: axes.vertical.newScroll
|
||||
}
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Context.prototype.innerHeight = function() {
|
||||
/*eslint-disable eqeqeq */
|
||||
if (this.element == this.element.window) {
|
||||
return Waypoint.viewportHeight()
|
||||
}
|
||||
/*eslint-enable eqeqeq */
|
||||
return this.adapter.innerHeight()
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Context.prototype.remove = function(waypoint) {
|
||||
delete this.waypoints[waypoint.axis][waypoint.key]
|
||||
this.checkEmpty()
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Context.prototype.innerWidth = function() {
|
||||
/*eslint-disable eqeqeq */
|
||||
if (this.element == this.element.window) {
|
||||
return Waypoint.viewportWidth()
|
||||
}
|
||||
/*eslint-enable eqeqeq */
|
||||
return this.adapter.innerWidth()
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/context-destroy */
|
||||
Context.prototype.destroy = function() {
|
||||
var allWaypoints = []
|
||||
for (var axis in this.waypoints) {
|
||||
for (var waypointKey in this.waypoints[axis]) {
|
||||
allWaypoints.push(this.waypoints[axis][waypointKey])
|
||||
}
|
||||
}
|
||||
for (var i = 0, end = allWaypoints.length; i < end; i++) {
|
||||
allWaypoints[i].destroy()
|
||||
}
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/context-refresh */
|
||||
Context.prototype.refresh = function() {
|
||||
/*eslint-disable eqeqeq */
|
||||
var isWindow = this.element == this.element.window
|
||||
/*eslint-enable eqeqeq */
|
||||
var contextOffset = isWindow ? undefined : this.adapter.offset()
|
||||
var triggeredGroups = {}
|
||||
var axes
|
||||
|
||||
this.handleScroll()
|
||||
axes = {
|
||||
horizontal: {
|
||||
contextOffset: isWindow ? 0 : contextOffset.left,
|
||||
contextScroll: isWindow ? 0 : this.oldScroll.x,
|
||||
contextDimension: this.innerWidth(),
|
||||
oldScroll: this.oldScroll.x,
|
||||
forward: 'right',
|
||||
backward: 'left',
|
||||
offsetProp: 'left'
|
||||
},
|
||||
vertical: {
|
||||
contextOffset: isWindow ? 0 : contextOffset.top,
|
||||
contextScroll: isWindow ? 0 : this.oldScroll.y,
|
||||
contextDimension: this.innerHeight(),
|
||||
oldScroll: this.oldScroll.y,
|
||||
forward: 'down',
|
||||
backward: 'up',
|
||||
offsetProp: 'top'
|
||||
}
|
||||
}
|
||||
|
||||
for (var axisKey in axes) {
|
||||
var axis = axes[axisKey]
|
||||
for (var waypointKey in this.waypoints[axisKey]) {
|
||||
var waypoint = this.waypoints[axisKey][waypointKey]
|
||||
var adjustment = waypoint.options.offset
|
||||
var oldTriggerPoint = waypoint.triggerPoint
|
||||
var elementOffset = 0
|
||||
var freshWaypoint = oldTriggerPoint == null
|
||||
var contextModifier, wasBeforeScroll, nowAfterScroll
|
||||
var triggeredBackward, triggeredForward
|
||||
|
||||
if (waypoint.element !== waypoint.element.window) {
|
||||
elementOffset = waypoint.adapter.offset()[axis.offsetProp]
|
||||
}
|
||||
|
||||
if (typeof adjustment === 'function') {
|
||||
adjustment = adjustment.apply(waypoint)
|
||||
}
|
||||
else if (typeof adjustment === 'string') {
|
||||
adjustment = parseFloat(adjustment)
|
||||
if (waypoint.options.offset.indexOf('%') > - 1) {
|
||||
adjustment = Math.ceil(axis.contextDimension * adjustment / 100)
|
||||
}
|
||||
}
|
||||
|
||||
contextModifier = axis.contextScroll - axis.contextOffset
|
||||
waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment)
|
||||
wasBeforeScroll = oldTriggerPoint < axis.oldScroll
|
||||
nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll
|
||||
triggeredBackward = wasBeforeScroll && nowAfterScroll
|
||||
triggeredForward = !wasBeforeScroll && !nowAfterScroll
|
||||
|
||||
if (!freshWaypoint && triggeredBackward) {
|
||||
waypoint.queueTrigger(axis.backward)
|
||||
triggeredGroups[waypoint.group.id] = waypoint.group
|
||||
}
|
||||
else if (!freshWaypoint && triggeredForward) {
|
||||
waypoint.queueTrigger(axis.forward)
|
||||
triggeredGroups[waypoint.group.id] = waypoint.group
|
||||
}
|
||||
else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) {
|
||||
waypoint.queueTrigger(axis.forward)
|
||||
triggeredGroups[waypoint.group.id] = waypoint.group
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Waypoint.requestAnimationFrame(function() {
|
||||
for (var groupKey in triggeredGroups) {
|
||||
triggeredGroups[groupKey].flushTriggers()
|
||||
}
|
||||
})
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Context.findOrCreateByElement = function(element) {
|
||||
return Context.findByElement(element) || new Context(element)
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Context.refreshAll = function() {
|
||||
for (var contextId in contexts) {
|
||||
contexts[contextId].refresh()
|
||||
}
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/context-find-by-element */
|
||||
Context.findByElement = function(element) {
|
||||
return contexts[element.waypointContextKey]
|
||||
}
|
||||
|
||||
window.onload = function() {
|
||||
if (oldWindowLoad) {
|
||||
oldWindowLoad()
|
||||
}
|
||||
Context.refreshAll()
|
||||
}
|
||||
|
||||
|
||||
Waypoint.requestAnimationFrame = function(callback) {
|
||||
var requestFn = window.requestAnimationFrame ||
|
||||
window.mozRequestAnimationFrame ||
|
||||
window.webkitRequestAnimationFrame ||
|
||||
requestAnimationFrameShim
|
||||
requestFn.call(window, callback)
|
||||
}
|
||||
Waypoint.Context = Context
|
||||
}())
|
||||
;(function() {
|
||||
'use strict'
|
||||
|
||||
function byTriggerPoint(a, b) {
|
||||
return a.triggerPoint - b.triggerPoint
|
||||
}
|
||||
|
||||
function byReverseTriggerPoint(a, b) {
|
||||
return b.triggerPoint - a.triggerPoint
|
||||
}
|
||||
|
||||
var groups = {
|
||||
vertical: {},
|
||||
horizontal: {}
|
||||
}
|
||||
var Waypoint = window.Waypoint
|
||||
|
||||
/* http://imakewebthings.com/waypoints/api/group */
|
||||
function Group(options) {
|
||||
this.name = options.name
|
||||
this.axis = options.axis
|
||||
this.id = this.name + '-' + this.axis
|
||||
this.waypoints = []
|
||||
this.clearTriggerQueues()
|
||||
groups[this.axis][this.name] = this
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Group.prototype.add = function(waypoint) {
|
||||
this.waypoints.push(waypoint)
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Group.prototype.clearTriggerQueues = function() {
|
||||
this.triggerQueues = {
|
||||
up: [],
|
||||
down: [],
|
||||
left: [],
|
||||
right: []
|
||||
}
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Group.prototype.flushTriggers = function() {
|
||||
for (var direction in this.triggerQueues) {
|
||||
var waypoints = this.triggerQueues[direction]
|
||||
var reverse = direction === 'up' || direction === 'left'
|
||||
waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint)
|
||||
for (var i = 0, end = waypoints.length; i < end; i += 1) {
|
||||
var waypoint = waypoints[i]
|
||||
if (waypoint.options.continuous || i === waypoints.length - 1) {
|
||||
waypoint.trigger([direction])
|
||||
}
|
||||
}
|
||||
}
|
||||
this.clearTriggerQueues()
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Group.prototype.next = function(waypoint) {
|
||||
this.waypoints.sort(byTriggerPoint)
|
||||
var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
|
||||
var isLast = index === this.waypoints.length - 1
|
||||
return isLast ? null : this.waypoints[index + 1]
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Group.prototype.previous = function(waypoint) {
|
||||
this.waypoints.sort(byTriggerPoint)
|
||||
var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
|
||||
return index ? this.waypoints[index - 1] : null
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Group.prototype.queueTrigger = function(waypoint, direction) {
|
||||
this.triggerQueues[direction].push(waypoint)
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Group.prototype.remove = function(waypoint) {
|
||||
var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
|
||||
if (index > -1) {
|
||||
this.waypoints.splice(index, 1)
|
||||
}
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/first */
|
||||
Group.prototype.first = function() {
|
||||
return this.waypoints[0]
|
||||
}
|
||||
|
||||
/* Public */
|
||||
/* http://imakewebthings.com/waypoints/api/last */
|
||||
Group.prototype.last = function() {
|
||||
return this.waypoints[this.waypoints.length - 1]
|
||||
}
|
||||
|
||||
/* Private */
|
||||
Group.findOrCreate = function(options) {
|
||||
return groups[options.axis][options.name] || new Group(options)
|
||||
}
|
||||
|
||||
Waypoint.Group = Group
|
||||
}())
|
||||
;(function() {
|
||||
'use strict'
|
||||
|
||||
var $ = window.jQuery
|
||||
var Waypoint = window.Waypoint
|
||||
|
||||
function JQueryAdapter(element) {
|
||||
this.$element = $(element)
|
||||
}
|
||||
|
||||
$.each([
|
||||
'innerHeight',
|
||||
'innerWidth',
|
||||
'off',
|
||||
'offset',
|
||||
'on',
|
||||
'outerHeight',
|
||||
'outerWidth',
|
||||
'scrollLeft',
|
||||
'scrollTop'
|
||||
], function(i, method) {
|
||||
JQueryAdapter.prototype[method] = function() {
|
||||
var args = Array.prototype.slice.call(arguments)
|
||||
return this.$element[method].apply(this.$element, args)
|
||||
}
|
||||
})
|
||||
|
||||
$.each([
|
||||
'extend',
|
||||
'inArray',
|
||||
'isEmptyObject'
|
||||
], function(i, method) {
|
||||
JQueryAdapter[method] = $[method]
|
||||
})
|
||||
|
||||
Waypoint.adapters.push({
|
||||
name: 'jquery',
|
||||
Adapter: JQueryAdapter
|
||||
})
|
||||
Waypoint.Adapter = JQueryAdapter
|
||||
}())
|
||||
;(function() {
|
||||
'use strict'
|
||||
|
||||
var Waypoint = window.Waypoint
|
||||
|
||||
function createExtension(framework) {
|
||||
return function() {
|
||||
var waypoints = []
|
||||
var overrides = arguments[0]
|
||||
|
||||
if (framework.isFunction(arguments[0])) {
|
||||
overrides = framework.extend({}, arguments[1])
|
||||
overrides.handler = arguments[0]
|
||||
}
|
||||
|
||||
this.each(function() {
|
||||
var options = framework.extend({}, overrides, {
|
||||
element: this
|
||||
})
|
||||
if (typeof options.context === 'string') {
|
||||
options.context = framework(this).closest(options.context)[0]
|
||||
}
|
||||
waypoints.push(new Waypoint(options))
|
||||
})
|
||||
|
||||
return waypoints
|
||||
}
|
||||
}
|
||||
|
||||
if (window.jQuery) {
|
||||
window.jQuery.fn.waypoint = createExtension(window.jQuery)
|
||||
}
|
||||
if (window.Zepto) {
|
||||
window.Zepto.fn.waypoint = createExtension(window.Zepto)
|
||||
}
|
||||
}())
|
||||
;
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user