first commit

This commit is contained in:
Ryan Ariana
2024-05-06 11:04:37 +07:00
commit aee061ddba
7322 changed files with 2918816 additions and 0 deletions

View File

@@ -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 );

View File

@@ -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%;
}
}

View File

@@ -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;
}());

View File

@@ -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}();

View File

@@ -0,0 +1,398 @@
/**
* donutty // Create SVG donut charts with Javascript
* @author simeydotme <simey.me@gmail.com>
* @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

View File

@@ -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

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
Arabic (عربي) initialisation for the jQuery countdown extension
Translated by Talal Al Asmari (talal@psdgroups.com), April 2009. */
(function($) {
'use strict';
$.countdown.regionalOptions.ar = {
labels: ['سنوات','أشهر','أسابيع','أيام','ساعات','دقائق','ثواني'],
labels1: ['سنة','شهر','أسبوع','يوم','ساعة','دقيقة','ثانية'],
compactLabels: ['س','ش','أ','ي'],
whichLabels: null,
digits: ['٠','١','٢','٣','٤','٥','٦','٧','٨','٩'],
timeSeparator: ':',
isRTL: true
};
$.countdown.setDefaults($.countdown.regionalOptions.ar);
})(jQuery);

View File

@@ -0,0 +1,17 @@
/* http://keith-wood.name/countdown.html
* Bulgarian initialisation for the jQuery countdown extension
* Written by Manol Trendafilov manol@rastermania.com (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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
* Bengali/Bangla initialisation for the jQuery countdown extension
* Written by Mohammed Tajuddin (tajuddin@chittagong-it.com) 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);

View File

@@ -0,0 +1,19 @@
/* http://keith-wood.name/countdown.html
* Bosnian Latin initialisation for the jQuery countdown extension
* Written by Miralem Mehic miralem@mehic.info (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);

View File

@@ -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);

View File

@@ -0,0 +1,19 @@
/* http://keith-wood.name/countdown.html
* Czech initialisation for the jQuery countdown extension
* Written by Roman Chlebec (creamd@c64.sk) (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);

View File

@@ -0,0 +1,2 @@
/* http://keith-wood.name/countdown.html
Welsh initialisation for the jQuery countdown extension

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
Danish initialisation for the jQuery countdown extension
Written by Buch (admin@buch90.dk). */
(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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
* Spanish initialisation for the jQuery countdown extension
* Written by Sergio Carracedo Martinez webmaster@neodisenoweb.com (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);

View File

@@ -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);

View File

@@ -0,0 +1,17 @@
/* http://keith-wood.name/countdown.html
Persian (فارسی) initialisation for the jQuery countdown extension
Written by Alireza Ziaie (ziai@magfa.com) 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);

View File

@@ -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 (juhis.suni@gmail.com). 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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
Faroese initialisation for the jQuery countdown extension
Written by Kasper Friis Christensen (kasper@friischristensen.com). */
(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);

View File

@@ -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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
* Galician initialisation for the jQuery countdown extension
* Written by Moncho Pena ramon.pena.rodriguez@gmail.com (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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
* Gujarati initialization for the jQuery countdown extension
* Written by Sahil Jariwala jariwala.sahil@gmail.com (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);

View File

@@ -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);

View File

@@ -0,0 +1,27 @@
/* http://keith-wood.name/countdown.html
* Croatian l10n for the jQuery countdown plugin
* Written by Dejan Broz info@hqfactory.com (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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
* Hungarian initialisation for the jQuery countdown extension
* Written by Edmond L. (webmond@gmail.com). */
(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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
* Italian initialisation for the jQuery countdown extension
* Written by Davide Bellettini (davide.bellettini@gmail.com) 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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
Japanese initialisation for the jQuery countdown extension
Written by Ken Ishimoto (ken@ksroom.com) 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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
* Kazakh initialisation for the jQuery countdown extension
* Written by Veaceslav Grimalschi grimalschi@yandex.ru (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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
* Kannada initialization for the jQuery countdown extension
* Written by Guru Chaturvedi guru@gangarasa.com (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);

View File

@@ -0,0 +1,17 @@
/* http://keith-wood.name/countdown.html
Korean initialisation for the jQuery countdown extension
Written by Ryan Yu (ryanyu79@gmail.com). */
(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);

View File

@@ -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);

View File

@@ -0,0 +1,17 @@
/* http://keith-wood.name/countdown.html
* Latvian initialisation for the jQuery countdown extension
* Written by Jānis Peisenieks janis.peisenieks@gmail.com (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);

View File

@@ -0,0 +1,17 @@
/* http://keith-wood.name/countdown.html
* Macedonian initialisation for the jQuery countdown extension
* Written by Gorast Cvetkovski cvetkovski@gorast.com (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);

View File

@@ -0,0 +1,18 @@
/* http://keith-wood.name/countdown.html
* Malayalam/(Indian>>Kerala) initialisation for the jQuery countdown extension
* Written by Harilal.B (harilal1234@gmail.com) 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);

View File

@@ -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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
Burmese initialisation for the jQuery countdown extension
Written by Win Lwin Moe (winnlwinmoe@gmail.com) 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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -0,0 +1,22 @@
/* http://keith-wood.name/countdown.html
* Polish initialisation for the jQuery countdown extension
* Written by Pawel Lewtak lewtak@gmail.com (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);

View File

@@ -0,0 +1,17 @@
/* http://keith-wood.name/countdown.html
Brazilian initialisation for the jQuery countdown extension
Translated by Marcelo Pellicano de Oliveira (pellicano@gmail.com) 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);

View File

@@ -0,0 +1,17 @@
/* http://keith-wood.name/countdown.html
Brazilian initialisation for the jQuery countdown extension
Translated by Marcelo Pellicano de Oliveira (pellicano@gmail.com) 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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
* Romanian initialisation for the jQuery countdown extension
* Written by Edmond L. (webmond@gmail.com). */
(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);

View File

@@ -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);

View File

@@ -0,0 +1,19 @@
/* http://keith-wood.name/countdown.html
* Slovak initialisation for the jQuery countdown extension
* Written by Roman Chlebec (creamd@c64.sk) (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);

View File

@@ -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 (jan@iuvo.si) (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);

View File

@@ -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);

View File

@@ -0,0 +1,19 @@
/* http://keith-wood.name/countdown.html
* Serbian Latin initialisation for the jQuery countdown extension
* Written by Predrag Leka lp@lemurcake.com (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);

View File

@@ -0,0 +1,19 @@
/* http://keith-wood.name/countdown.html
* Serbian Cyrillic initialisation for the jQuery countdown extension
* Written by Predrag Leka lp@lemurcake.com (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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
Swedish initialisation for the jQuery countdown extension
Written by Carl (carl@nordenfelt.com). */
(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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
Thai initialisation for the jQuery countdown extension
Written by Pornchai Sakulsrimontri (li_sin_th@yahoo.com). */
(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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
* Turkish initialisation for the jQuery countdown extension
* Written by Bekir Ahmetoğlu (bekir@cerek.com) 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);

View File

@@ -0,0 +1,19 @@
/* http://keith-wood.name/countdown.html
* Ukrainian initialisation for the jQuery countdown extension
* Written by Goloborodko M misha.gm@gmail.com (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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
Urdu (اردو) initialisation for the jQuery countdown extension
Translated by Azhar Rasheed (azhar.rasheed19@gmail.com), November 2013. */
(function($) {
'use strict';
$.countdown.regionalOptions.ur = {
labels: ['سال','مہينے','ہفتے','دن','گھنٹے','منٹس','سيکنڑز'],
labels1: ['سال','ماہ','ہفتہ','دن','گھنٹہ','منٹ','سیکنڈز'],
compactLabels: ['(ق)','سینٹ','ایک','J'],
whichLabels: null,
digits: ['٠','١','٢','٣','۴','۵','۶','۷','٨','٩'],
timeSeparator: ':',
isRTL: true
};
$.countdown.setDefaults($.countdown.regionalOptions.ur);
})(jQuery);

View File

@@ -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);

View File

@@ -0,0 +1,16 @@
/* http://keith-wood.name/countdown.html
* Vietnamese initialisation for the jQuery countdown extension
* Written by Pham Tien Hung phamtienhung@gmail.com (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);

View File

@@ -0,0 +1,17 @@
/* http://keith-wood.name/countdown.html
Simplified Chinese initialisation for the jQuery countdown extension
Written by Cloudream (cloudream@gmail.com). */
(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);

View File

@@ -0,0 +1,17 @@
/* http://keith-wood.name/countdown.html
Traditional Chinese initialisation for the jQuery countdown extension
Written by Cloudream (cloudream@gmail.com). */
(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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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