474 lines
15 KiB
JavaScript
474 lines
15 KiB
JavaScript
/*! WOW wow.js - v1.3.0 - 2016-10-04
|
|
* https://wowjs.uk
|
|
* Copyright (c) 2016 Thomas Grainger; Licensed MIT */ !(function (a, b) {
|
|
if ("function" == typeof define && define.amd)
|
|
define(["module", "exports"], b);
|
|
else if ("undefined" != typeof exports) b(module, exports);
|
|
else {
|
|
var c = { exports: {} };
|
|
b(c, c.exports), (a.WOW = c.exports);
|
|
}
|
|
})(this, function (a, b) {
|
|
"use strict";
|
|
function c(a, b) {
|
|
if (!(a instanceof b))
|
|
throw new TypeError("Cannot call a class as a function");
|
|
}
|
|
function d(a, b) {
|
|
return b.indexOf(a) >= 0;
|
|
}
|
|
function e(a, b) {
|
|
for (var c in b)
|
|
if (null == a[c]) {
|
|
var d = b[c];
|
|
a[c] = d;
|
|
}
|
|
return a;
|
|
}
|
|
function f(a) {
|
|
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
|
|
a
|
|
);
|
|
}
|
|
function g(a) {
|
|
var b =
|
|
arguments.length <= 1 || void 0 === arguments[1] ? !1 : arguments[1],
|
|
c = arguments.length <= 2 || void 0 === arguments[2] ? !1 : arguments[2],
|
|
d =
|
|
arguments.length <= 3 || void 0 === arguments[3] ? null : arguments[3],
|
|
e = void 0;
|
|
return (
|
|
null != document.createEvent
|
|
? ((e = document.createEvent("CustomEvent")),
|
|
e.initCustomEvent(a, b, c, d))
|
|
: null != document.createEventObject
|
|
? ((e = document.createEventObject()), (e.eventType = a))
|
|
: (e.eventName = a),
|
|
e
|
|
);
|
|
}
|
|
function h(a, b) {
|
|
null != a.dispatchEvent
|
|
? a.dispatchEvent(b)
|
|
: b in (null != a)
|
|
? a[b]()
|
|
: "on" + b in (null != a) && a["on" + b]();
|
|
}
|
|
function i(a, b, c) {
|
|
null != a.addEventListener
|
|
? a.addEventListener(b, c, !1)
|
|
: null != a.attachEvent
|
|
? a.attachEvent("on" + b, c)
|
|
: (a[b] = c);
|
|
}
|
|
function j(a, b, c) {
|
|
null != a.removeEventListener
|
|
? a.removeEventListener(b, c, !1)
|
|
: null != a.detachEvent
|
|
? a.detachEvent("on" + b, c)
|
|
: delete a[b];
|
|
}
|
|
function k() {
|
|
return "innerHeight" in window
|
|
? window.innerHeight
|
|
: document.documentElement.clientHeight;
|
|
}
|
|
Object.defineProperty(b, "__esModule", { value: !0 });
|
|
var l,
|
|
m,
|
|
n = (function () {
|
|
function a(a, b) {
|
|
for (var c = 0; c < b.length; c++) {
|
|
var d = b[c];
|
|
(d.enumerable = d.enumerable || !1),
|
|
(d.configurable = !0),
|
|
"value" in d && (d.writable = !0),
|
|
Object.defineProperty(a, d.key, d);
|
|
}
|
|
}
|
|
return function (b, c, d) {
|
|
return c && a(b.prototype, c), d && a(b, d), b;
|
|
};
|
|
})(),
|
|
o =
|
|
window.WeakMap ||
|
|
window.MozWeakMap ||
|
|
(function () {
|
|
function a() {
|
|
c(this, a), (this.keys = []), (this.values = []);
|
|
}
|
|
return (
|
|
n(a, [
|
|
{
|
|
key: "get",
|
|
value: function (a) {
|
|
for (var b = 0; b < this.keys.length; b++) {
|
|
var c = this.keys[b];
|
|
if (c === a) return this.values[b];
|
|
}
|
|
},
|
|
},
|
|
{
|
|
key: "set",
|
|
value: function (a, b) {
|
|
for (var c = 0; c < this.keys.length; c++) {
|
|
var d = this.keys[c];
|
|
if (d === a) return (this.values[c] = b), this;
|
|
}
|
|
return this.keys.push(a), this.values.push(b), this;
|
|
},
|
|
},
|
|
]),
|
|
a
|
|
);
|
|
})(),
|
|
p =
|
|
window.MutationObserver ||
|
|
window.WebkitMutationObserver ||
|
|
window.MozMutationObserver ||
|
|
((m = l =
|
|
(function () {
|
|
function a() {
|
|
c(this, a),
|
|
"undefined" != typeof console &&
|
|
null !== console &&
|
|
(console.warn(
|
|
"MutationObserver is not supported by your browser."
|
|
),
|
|
console.warn(
|
|
"WOW.js cannot detect dom mutations, please call .sync() after loading new content."
|
|
));
|
|
}
|
|
return n(a, [{ key: "observe", value: function () {} }]), a;
|
|
})()),
|
|
(l.notSupported = !0),
|
|
m),
|
|
q =
|
|
window.getComputedStyle ||
|
|
function (a) {
|
|
var b = /(\-([a-z]){1})/g;
|
|
return {
|
|
getPropertyValue: function (c) {
|
|
"float" === c && (c = "styleFloat"),
|
|
b.test(c) &&
|
|
c.replace(b, function (a, b) {
|
|
return b.toUpperCase();
|
|
});
|
|
var d = a.currentStyle;
|
|
return (null != d ? d[c] : void 0) || null;
|
|
},
|
|
};
|
|
},
|
|
r = (function () {
|
|
function a() {
|
|
var b =
|
|
arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0];
|
|
c(this, a),
|
|
(this.defaults = {
|
|
boxClass: "wow",
|
|
animateClass: "animated",
|
|
offset: 0,
|
|
mobile: !0,
|
|
live: !0,
|
|
callback: null,
|
|
scrollContainer: null,
|
|
resetAnimation: !0,
|
|
}),
|
|
(this.animate = (function () {
|
|
return "requestAnimationFrame" in window
|
|
? function (a) {
|
|
return window.requestAnimationFrame(a);
|
|
}
|
|
: function (a) {
|
|
return a();
|
|
};
|
|
})()),
|
|
(this.vendors = ["moz", "webkit"]),
|
|
(this.start = this.start.bind(this)),
|
|
(this.resetAnimation = this.resetAnimation.bind(this)),
|
|
(this.scrollHandler = this.scrollHandler.bind(this)),
|
|
(this.scrollCallback = this.scrollCallback.bind(this)),
|
|
(this.scrolled = !0),
|
|
(this.config = e(b, this.defaults)),
|
|
null != b.scrollContainer &&
|
|
(this.config.scrollContainer = document.querySelector(
|
|
b.scrollContainer
|
|
)),
|
|
(this.animationNameCache = new o()),
|
|
(this.wowEvent = g(this.config.boxClass));
|
|
}
|
|
return (
|
|
n(a, [
|
|
{
|
|
key: "init",
|
|
value: function () {
|
|
(this.element = window.document.documentElement),
|
|
d(document.readyState, ["interactive", "complete"])
|
|
? this.start()
|
|
: i(document, "DOMContentLoaded", this.start),
|
|
(this.finished = []);
|
|
},
|
|
},
|
|
{
|
|
key: "start",
|
|
value: function () {
|
|
var a = this;
|
|
if (
|
|
((this.stopped = !1),
|
|
(this.boxes = [].slice.call(
|
|
this.element.querySelectorAll("." + this.config.boxClass)
|
|
)),
|
|
(this.all = this.boxes.slice(0)),
|
|
this.boxes.length)
|
|
)
|
|
if (this.disabled()) this.resetStyle();
|
|
else
|
|
for (var b = 0; b < this.boxes.length; b++) {
|
|
var c = this.boxes[b];
|
|
this.applyStyle(c, !0);
|
|
}
|
|
if (
|
|
(this.disabled() ||
|
|
(i(
|
|
this.config.scrollContainer || window,
|
|
"scroll",
|
|
this.scrollHandler
|
|
),
|
|
i(window, "resize", this.scrollHandler),
|
|
(this.interval = setInterval(this.scrollCallback, 50))),
|
|
this.config.live)
|
|
) {
|
|
var d = new p(function (b) {
|
|
for (var c = 0; c < b.length; c++)
|
|
for (var d = b[c], e = 0; e < d.addedNodes.length; e++) {
|
|
var f = d.addedNodes[e];
|
|
a.doSync(f);
|
|
}
|
|
});
|
|
d.observe(document.body, { childList: !0, subtree: !0 });
|
|
}
|
|
},
|
|
},
|
|
{
|
|
key: "stop",
|
|
value: function () {
|
|
(this.stopped = !0),
|
|
j(
|
|
this.config.scrollContainer || window,
|
|
"scroll",
|
|
this.scrollHandler
|
|
),
|
|
j(window, "resize", this.scrollHandler),
|
|
null != this.interval && clearInterval(this.interval);
|
|
},
|
|
},
|
|
{
|
|
key: "sync",
|
|
value: function () {
|
|
p.notSupported && this.doSync(this.element);
|
|
},
|
|
},
|
|
{
|
|
key: "doSync",
|
|
value: function (a) {
|
|
if (
|
|
(("undefined" != typeof a && null !== a) || (a = this.element),
|
|
1 === a.nodeType)
|
|
) {
|
|
a = a.parentNode || a;
|
|
for (
|
|
var b = a.querySelectorAll("." + this.config.boxClass), c = 0;
|
|
c < b.length;
|
|
c++
|
|
) {
|
|
var e = b[c];
|
|
d(e, this.all) ||
|
|
(this.boxes.push(e),
|
|
this.all.push(e),
|
|
this.stopped || this.disabled()
|
|
? this.resetStyle()
|
|
: this.applyStyle(e, !0),
|
|
(this.scrolled = !0));
|
|
}
|
|
}
|
|
},
|
|
},
|
|
{
|
|
key: "show",
|
|
value: function (a) {
|
|
return (
|
|
this.applyStyle(a),
|
|
(a.className = a.className + " " + this.config.animateClass),
|
|
null != this.config.callback && this.config.callback(a),
|
|
h(a, this.wowEvent),
|
|
this.config.resetAnimation &&
|
|
(i(a, "animationend", this.resetAnimation),
|
|
i(a, "oanimationend", this.resetAnimation),
|
|
i(a, "webkitAnimationEnd", this.resetAnimation),
|
|
i(a, "MSAnimationEnd", this.resetAnimation)),
|
|
a
|
|
);
|
|
},
|
|
},
|
|
{
|
|
key: "applyStyle",
|
|
value: function (a, b) {
|
|
var c = this,
|
|
d = a.getAttribute("data-wow-duration"),
|
|
e = a.getAttribute("data-wow-delay"),
|
|
f = a.getAttribute("data-wow-iteration");
|
|
return this.animate(function () {
|
|
return c.customStyle(a, b, d, e, f);
|
|
});
|
|
},
|
|
},
|
|
{
|
|
key: "resetStyle",
|
|
value: function () {
|
|
for (var a = 0; a < this.boxes.length; a++) {
|
|
var b = this.boxes[a];
|
|
b.style.visibility = "visible";
|
|
}
|
|
},
|
|
},
|
|
{
|
|
key: "resetAnimation",
|
|
value: function (a) {
|
|
if (a.type.toLowerCase().indexOf("animationend") >= 0) {
|
|
var b = a.target || a.srcElement;
|
|
b.className = b.className
|
|
.replace(this.config.animateClass, "")
|
|
.trim();
|
|
}
|
|
},
|
|
},
|
|
{
|
|
key: "customStyle",
|
|
value: function (a, b, c, d, e) {
|
|
return (
|
|
b && this.cacheAnimationName(a),
|
|
(a.style.visibility = b ? "hidden" : "visible"),
|
|
c && this.vendorSet(a.style, { animationDuration: c }),
|
|
d && this.vendorSet(a.style, { animationDelay: d }),
|
|
e && this.vendorSet(a.style, { animationIterationCount: e }),
|
|
this.vendorSet(a.style, {
|
|
animationName: b ? "none" : this.cachedAnimationName(a),
|
|
}),
|
|
a
|
|
);
|
|
},
|
|
},
|
|
{
|
|
key: "vendorSet",
|
|
value: function (a, b) {
|
|
for (var c in b)
|
|
if (b.hasOwnProperty(c)) {
|
|
var d = b[c];
|
|
a["" + c] = d;
|
|
for (var e = 0; e < this.vendors.length; e++) {
|
|
var f = this.vendors[e];
|
|
a["" + f + c.charAt(0).toUpperCase() + c.substr(1)] = d;
|
|
}
|
|
}
|
|
},
|
|
},
|
|
{
|
|
key: "vendorCSS",
|
|
value: function (a, b) {
|
|
for (
|
|
var c = q(a), d = c.getPropertyCSSValue(b), e = 0;
|
|
e < this.vendors.length;
|
|
e++
|
|
) {
|
|
var f = this.vendors[e];
|
|
d = d || c.getPropertyCSSValue("-" + f + "-" + b);
|
|
}
|
|
return d;
|
|
},
|
|
},
|
|
{
|
|
key: "animationName",
|
|
value: function (a) {
|
|
var b = void 0;
|
|
try {
|
|
b = this.vendorCSS(a, "animation-name").cssText;
|
|
} catch (c) {
|
|
b = q(a).getPropertyValue("animation-name");
|
|
}
|
|
return "none" === b ? "" : b;
|
|
},
|
|
},
|
|
{
|
|
key: "cacheAnimationName",
|
|
value: function (a) {
|
|
return this.animationNameCache.set(a, this.animationName(a));
|
|
},
|
|
},
|
|
{
|
|
key: "cachedAnimationName",
|
|
value: function (a) {
|
|
return this.animationNameCache.get(a);
|
|
},
|
|
},
|
|
{
|
|
key: "scrollHandler",
|
|
value: function () {
|
|
this.scrolled = !0;
|
|
},
|
|
},
|
|
{
|
|
key: "scrollCallback",
|
|
value: function () {
|
|
if (this.scrolled) {
|
|
this.scrolled = !1;
|
|
for (var a = [], b = 0; b < this.boxes.length; b++) {
|
|
var c = this.boxes[b];
|
|
if (c) {
|
|
if (this.isVisible(c)) {
|
|
this.show(c);
|
|
continue;
|
|
}
|
|
a.push(c);
|
|
}
|
|
}
|
|
(this.boxes = a),
|
|
this.boxes.length || this.config.live || this.stop();
|
|
}
|
|
},
|
|
},
|
|
{
|
|
key: "offsetTop",
|
|
value: function (a) {
|
|
for (; void 0 === a.offsetTop; ) a = a.parentNode;
|
|
for (var b = a.offsetTop; a.offsetParent; )
|
|
(a = a.offsetParent), (b += a.offsetTop);
|
|
return b;
|
|
},
|
|
},
|
|
{
|
|
key: "isVisible",
|
|
value: function (a) {
|
|
var b = a.getAttribute("data-wow-offset") || this.config.offset,
|
|
c =
|
|
(this.config.scrollContainer &&
|
|
this.config.scrollContainer.scrollTop) ||
|
|
window.pageYOffset,
|
|
d = c + Math.min(this.element.clientHeight, k()) - b,
|
|
e = this.offsetTop(a),
|
|
f = e + a.clientHeight;
|
|
return d >= e && f >= c;
|
|
},
|
|
},
|
|
{
|
|
key: "disabled",
|
|
value: function () {
|
|
return !this.config.mobile && f(navigator.userAgent);
|
|
},
|
|
},
|
|
]),
|
|
a
|
|
);
|
|
})();
|
|
(b["default"] = r), (a.exports = b["default"]);
|
|
});
|