File: D:/HostingSpaces/SBogers10/rentman2019.komma.pro/wwwroot/js/site/core.js
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
/*! Hammer.JS - v2.0.8 - 2016-04-23
* http://hammerjs.github.io/
*
* Copyright (c) 2016 Jorik Tangelder;
* Licensed under the MIT license */
!function (a, b, c, d) {
"use strict";
function e(a, b, c) {
return setTimeout(j(a, c), b);
}
function f(a, b, c) {
return Array.isArray(a) ? (g(a, c[b], c), !0) : !1;
}
function g(a, b, c) {
var e;
if (a) if (a.forEach) a.forEach(b, c);else if (a.length !== d) for (e = 0; e < a.length;) b.call(c, a[e], e, a), e++;else for (e in a) a.hasOwnProperty(e) && b.call(c, a[e], e, a);
}
function h(b, c, d) {
var e = "DEPRECATED METHOD: " + c + "\n" + d + " AT \n";
return function () {
var c = new Error("get-stack-trace"),
d = c && c.stack ? c.stack.replace(/^[^\(]+?[\n$]/gm, "").replace(/^\s+at\s+/gm, "").replace(/^Object.<anonymous>\s*\(/gm, "{anonymous}()@") : "Unknown Stack Trace",
f = a.console && (a.console.warn || a.console.log);
return f && f.call(a.console, e, d), b.apply(this, arguments);
};
}
function i(a, b, c) {
var d,
e = b.prototype;
d = a.prototype = Object.create(e), d.constructor = a, d._super = e, c && la(d, c);
}
function j(a, b) {
return function () {
return a.apply(b, arguments);
};
}
function k(a, b) {
return _typeof(a) == oa ? a.apply(b ? b[0] || d : d, b) : a;
}
function l(a, b) {
return a === d ? b : a;
}
function m(a, b, c) {
g(q(b), function (b) {
a.addEventListener(b, c, !1);
});
}
function n(a, b, c) {
g(q(b), function (b) {
a.removeEventListener(b, c, !1);
});
}
function o(a, b) {
for (; a;) {
if (a == b) return !0;
a = a.parentNode;
}
return !1;
}
function p(a, b) {
return a.indexOf(b) > -1;
}
function q(a) {
return a.trim().split(/\s+/g);
}
function r(a, b, c) {
if (a.indexOf && !c) return a.indexOf(b);
for (var d = 0; d < a.length;) {
if (c && a[d][c] == b || !c && a[d] === b) return d;
d++;
}
return -1;
}
function s(a) {
return Array.prototype.slice.call(a, 0);
}
function t(a, b, c) {
for (var d = [], e = [], f = 0; f < a.length;) {
var g = b ? a[f][b] : a[f];
r(e, g) < 0 && d.push(a[f]), e[f] = g, f++;
}
return c && (d = b ? d.sort(function (a, c) {
return a[b] > c[b];
}) : d.sort()), d;
}
function u(a, b) {
for (var c, e, f = b[0].toUpperCase() + b.slice(1), g = 0; g < ma.length;) {
if (c = ma[g], e = c ? c + f : b, e in a) return e;
g++;
}
return d;
}
function v() {
return ua++;
}
function w(b) {
var c = b.ownerDocument || b;
return c.defaultView || c.parentWindow || a;
}
function x(a, b) {
var c = this;
this.manager = a, this.callback = b, this.element = a.element, this.target = a.options.inputTarget, this.domHandler = function (b) {
k(a.options.enable, [a]) && c.handler(b);
}, this.init();
}
function y(a) {
var b,
c = a.options.inputClass;
return new (b = c ? c : xa ? M : ya ? P : wa ? R : L)(a, z);
}
function z(a, b, c) {
var d = c.pointers.length,
e = c.changedPointers.length,
f = b & Ea && d - e === 0,
g = b & (Ga | Ha) && d - e === 0;
c.isFirst = !!f, c.isFinal = !!g, f && (a.session = {}), c.eventType = b, A(a, c), a.emit("hammer.input", c), a.recognize(c), a.session.prevInput = c;
}
function A(a, b) {
var c = a.session,
d = b.pointers,
e = d.length;
c.firstInput || (c.firstInput = D(b)), e > 1 && !c.firstMultiple ? c.firstMultiple = D(b) : 1 === e && (c.firstMultiple = !1);
var f = c.firstInput,
g = c.firstMultiple,
h = g ? g.center : f.center,
i = b.center = E(d);
b.timeStamp = ra(), b.deltaTime = b.timeStamp - f.timeStamp, b.angle = I(h, i), b.distance = H(h, i), B(c, b), b.offsetDirection = G(b.deltaX, b.deltaY);
var j = F(b.deltaTime, b.deltaX, b.deltaY);
b.overallVelocityX = j.x, b.overallVelocityY = j.y, b.overallVelocity = qa(j.x) > qa(j.y) ? j.x : j.y, b.scale = g ? K(g.pointers, d) : 1, b.rotation = g ? J(g.pointers, d) : 0, b.maxPointers = c.prevInput ? b.pointers.length > c.prevInput.maxPointers ? b.pointers.length : c.prevInput.maxPointers : b.pointers.length, C(c, b);
var k = a.element;
o(b.srcEvent.target, k) && (k = b.srcEvent.target), b.target = k;
}
function B(a, b) {
var c = b.center,
d = a.offsetDelta || {},
e = a.prevDelta || {},
f = a.prevInput || {};
b.eventType !== Ea && f.eventType !== Ga || (e = a.prevDelta = {
x: f.deltaX || 0,
y: f.deltaY || 0
}, d = a.offsetDelta = {
x: c.x,
y: c.y
}), b.deltaX = e.x + (c.x - d.x), b.deltaY = e.y + (c.y - d.y);
}
function C(a, b) {
var c,
e,
f,
g,
h = a.lastInterval || b,
i = b.timeStamp - h.timeStamp;
if (b.eventType != Ha && (i > Da || h.velocity === d)) {
var j = b.deltaX - h.deltaX,
k = b.deltaY - h.deltaY,
l = F(i, j, k);
e = l.x, f = l.y, c = qa(l.x) > qa(l.y) ? l.x : l.y, g = G(j, k), a.lastInterval = b;
} else c = h.velocity, e = h.velocityX, f = h.velocityY, g = h.direction;
b.velocity = c, b.velocityX = e, b.velocityY = f, b.direction = g;
}
function D(a) {
for (var b = [], c = 0; c < a.pointers.length;) b[c] = {
clientX: pa(a.pointers[c].clientX),
clientY: pa(a.pointers[c].clientY)
}, c++;
return {
timeStamp: ra(),
pointers: b,
center: E(b),
deltaX: a.deltaX,
deltaY: a.deltaY
};
}
function E(a) {
var b = a.length;
if (1 === b) return {
x: pa(a[0].clientX),
y: pa(a[0].clientY)
};
for (var c = 0, d = 0, e = 0; b > e;) c += a[e].clientX, d += a[e].clientY, e++;
return {
x: pa(c / b),
y: pa(d / b)
};
}
function F(a, b, c) {
return {
x: b / a || 0,
y: c / a || 0
};
}
function G(a, b) {
return a === b ? Ia : qa(a) >= qa(b) ? 0 > a ? Ja : Ka : 0 > b ? La : Ma;
}
function H(a, b, c) {
c || (c = Qa);
var d = b[c[0]] - a[c[0]],
e = b[c[1]] - a[c[1]];
return Math.sqrt(d * d + e * e);
}
function I(a, b, c) {
c || (c = Qa);
var d = b[c[0]] - a[c[0]],
e = b[c[1]] - a[c[1]];
return 180 * Math.atan2(e, d) / Math.PI;
}
function J(a, b) {
return I(b[1], b[0], Ra) + I(a[1], a[0], Ra);
}
function K(a, b) {
return H(b[0], b[1], Ra) / H(a[0], a[1], Ra);
}
function L() {
this.evEl = Ta, this.evWin = Ua, this.pressed = !1, x.apply(this, arguments);
}
function M() {
this.evEl = Xa, this.evWin = Ya, x.apply(this, arguments), this.store = this.manager.session.pointerEvents = [];
}
function N() {
this.evTarget = $a, this.evWin = _a, this.started = !1, x.apply(this, arguments);
}
function O(a, b) {
var c = s(a.touches),
d = s(a.changedTouches);
return b & (Ga | Ha) && (c = t(c.concat(d), "identifier", !0)), [c, d];
}
function P() {
this.evTarget = bb, this.targetIds = {}, x.apply(this, arguments);
}
function Q(a, b) {
var c = s(a.touches),
d = this.targetIds;
if (b & (Ea | Fa) && 1 === c.length) return d[c[0].identifier] = !0, [c, c];
var e,
f,
g = s(a.changedTouches),
h = [],
i = this.target;
if (f = c.filter(function (a) {
return o(a.target, i);
}), b === Ea) for (e = 0; e < f.length;) d[f[e].identifier] = !0, e++;
for (e = 0; e < g.length;) d[g[e].identifier] && h.push(g[e]), b & (Ga | Ha) && delete d[g[e].identifier], e++;
return h.length ? [t(f.concat(h), "identifier", !0), h] : void 0;
}
function R() {
x.apply(this, arguments);
var a = j(this.handler, this);
this.touch = new P(this.manager, a), this.mouse = new L(this.manager, a), this.primaryTouch = null, this.lastTouches = [];
}
function S(a, b) {
a & Ea ? (this.primaryTouch = b.changedPointers[0].identifier, T.call(this, b)) : a & (Ga | Ha) && T.call(this, b);
}
function T(a) {
var b = a.changedPointers[0];
if (b.identifier === this.primaryTouch) {
var c = {
x: b.clientX,
y: b.clientY
};
this.lastTouches.push(c);
var d = this.lastTouches,
e = function e() {
var a = d.indexOf(c);
a > -1 && d.splice(a, 1);
};
setTimeout(e, cb);
}
}
function U(a) {
for (var b = a.srcEvent.clientX, c = a.srcEvent.clientY, d = 0; d < this.lastTouches.length; d++) {
var e = this.lastTouches[d],
f = Math.abs(b - e.x),
g = Math.abs(c - e.y);
if (db >= f && db >= g) return !0;
}
return !1;
}
function V(a, b) {
this.manager = a, this.set(b);
}
function W(a) {
if (p(a, jb)) return jb;
var b = p(a, kb),
c = p(a, lb);
return b && c ? jb : b || c ? b ? kb : lb : p(a, ib) ? ib : hb;
}
function X() {
if (!fb) return !1;
var b = {},
c = a.CSS && a.CSS.supports;
return ["auto", "manipulation", "pan-y", "pan-x", "pan-x pan-y", "none"].forEach(function (d) {
b[d] = c ? a.CSS.supports("touch-action", d) : !0;
}), b;
}
function Y(a) {
this.options = la({}, this.defaults, a || {}), this.id = v(), this.manager = null, this.options.enable = l(this.options.enable, !0), this.state = nb, this.simultaneous = {}, this.requireFail = [];
}
function Z(a) {
return a & sb ? "cancel" : a & qb ? "end" : a & pb ? "move" : a & ob ? "start" : "";
}
function $(a) {
return a == Ma ? "down" : a == La ? "up" : a == Ja ? "left" : a == Ka ? "right" : "";
}
function _(a, b) {
var c = b.manager;
return c ? c.get(a) : a;
}
function aa() {
Y.apply(this, arguments);
}
function ba() {
aa.apply(this, arguments), this.pX = null, this.pY = null;
}
function ca() {
aa.apply(this, arguments);
}
function da() {
Y.apply(this, arguments), this._timer = null, this._input = null;
}
function ea() {
aa.apply(this, arguments);
}
function fa() {
aa.apply(this, arguments);
}
function ga() {
Y.apply(this, arguments), this.pTime = !1, this.pCenter = !1, this._timer = null, this._input = null, this.count = 0;
}
function ha(a, b) {
return b = b || {}, b.recognizers = l(b.recognizers, ha.defaults.preset), new ia(a, b);
}
function ia(a, b) {
this.options = la({}, ha.defaults, b || {}), this.options.inputTarget = this.options.inputTarget || a, this.handlers = {}, this.session = {}, this.recognizers = [], this.oldCssProps = {}, this.element = a, this.input = y(this), this.touchAction = new V(this, this.options.touchAction), ja(this, !0), g(this.options.recognizers, function (a) {
var b = this.add(new a[0](a[1]));
a[2] && b.recognizeWith(a[2]), a[3] && b.requireFailure(a[3]);
}, this);
}
function ja(a, b) {
var c = a.element;
if (c.style) {
var d;
g(a.options.cssProps, function (e, f) {
d = u(c.style, f), b ? (a.oldCssProps[d] = c.style[d], c.style[d] = e) : c.style[d] = a.oldCssProps[d] || "";
}), b || (a.oldCssProps = {});
}
}
function ka(a, c) {
var d = b.createEvent("Event");
d.initEvent(a, !0, !0), d.gesture = c, c.target.dispatchEvent(d);
}
var la,
ma = ["", "webkit", "Moz", "MS", "ms", "o"],
na = b.createElement("div"),
oa = "function",
pa = Math.round,
qa = Math.abs,
ra = Date.now;
la = "function" != typeof Object.assign ? function (a) {
if (a === d || null === a) throw new TypeError("Cannot convert undefined or null to object");
for (var b = Object(a), c = 1; c < arguments.length; c++) {
var e = arguments[c];
if (e !== d && null !== e) for (var f in e) e.hasOwnProperty(f) && (b[f] = e[f]);
}
return b;
} : Object.assign;
var sa = h(function (a, b, c) {
for (var e = Object.keys(b), f = 0; f < e.length;) (!c || c && a[e[f]] === d) && (a[e[f]] = b[e[f]]), f++;
return a;
}, "extend", "Use `assign`."),
ta = h(function (a, b) {
return sa(a, b, !0);
}, "merge", "Use `assign`."),
ua = 1,
va = /mobile|tablet|ip(ad|hone|od)|android/i,
wa = ("ontouchstart" in a),
xa = u(a, "PointerEvent") !== d,
ya = wa && va.test(navigator.userAgent),
za = "touch",
Aa = "pen",
Ba = "mouse",
Ca = "kinect",
Da = 25,
Ea = 1,
Fa = 2,
Ga = 4,
Ha = 8,
Ia = 1,
Ja = 2,
Ka = 4,
La = 8,
Ma = 16,
Na = Ja | Ka,
Oa = La | Ma,
Pa = Na | Oa,
Qa = ["x", "y"],
Ra = ["clientX", "clientY"];
x.prototype = {
handler: function handler() {},
init: function init() {
this.evEl && m(this.element, this.evEl, this.domHandler), this.evTarget && m(this.target, this.evTarget, this.domHandler), this.evWin && m(w(this.element), this.evWin, this.domHandler);
},
destroy: function destroy() {
this.evEl && n(this.element, this.evEl, this.domHandler), this.evTarget && n(this.target, this.evTarget, this.domHandler), this.evWin && n(w(this.element), this.evWin, this.domHandler);
}
};
var Sa = {
mousedown: Ea,
mousemove: Fa,
mouseup: Ga
},
Ta = "mousedown",
Ua = "mousemove mouseup";
i(L, x, {
handler: function handler(a) {
var b = Sa[a.type];
b & Ea && 0 === a.button && (this.pressed = !0), b & Fa && 1 !== a.which && (b = Ga), this.pressed && (b & Ga && (this.pressed = !1), this.callback(this.manager, b, {
pointers: [a],
changedPointers: [a],
pointerType: Ba,
srcEvent: a
}));
}
});
var Va = {
pointerdown: Ea,
pointermove: Fa,
pointerup: Ga,
pointercancel: Ha,
pointerout: Ha
},
Wa = {
2: za,
3: Aa,
4: Ba,
5: Ca
},
Xa = "pointerdown",
Ya = "pointermove pointerup pointercancel";
a.MSPointerEvent && !a.PointerEvent && (Xa = "MSPointerDown", Ya = "MSPointerMove MSPointerUp MSPointerCancel"), i(M, x, {
handler: function handler(a) {
var b = this.store,
c = !1,
d = a.type.toLowerCase().replace("ms", ""),
e = Va[d],
f = Wa[a.pointerType] || a.pointerType,
g = f == za,
h = r(b, a.pointerId, "pointerId");
e & Ea && (0 === a.button || g) ? 0 > h && (b.push(a), h = b.length - 1) : e & (Ga | Ha) && (c = !0), 0 > h || (b[h] = a, this.callback(this.manager, e, {
pointers: b,
changedPointers: [a],
pointerType: f,
srcEvent: a
}), c && b.splice(h, 1));
}
});
var Za = {
touchstart: Ea,
touchmove: Fa,
touchend: Ga,
touchcancel: Ha
},
$a = "touchstart",
_a = "touchstart touchmove touchend touchcancel";
i(N, x, {
handler: function handler(a) {
var b = Za[a.type];
if (b === Ea && (this.started = !0), this.started) {
var c = O.call(this, a, b);
b & (Ga | Ha) && c[0].length - c[1].length === 0 && (this.started = !1), this.callback(this.manager, b, {
pointers: c[0],
changedPointers: c[1],
pointerType: za,
srcEvent: a
});
}
}
});
var ab = {
touchstart: Ea,
touchmove: Fa,
touchend: Ga,
touchcancel: Ha
},
bb = "touchstart touchmove touchend touchcancel";
i(P, x, {
handler: function handler(a) {
var b = ab[a.type],
c = Q.call(this, a, b);
c && this.callback(this.manager, b, {
pointers: c[0],
changedPointers: c[1],
pointerType: za,
srcEvent: a
});
}
});
var cb = 2500,
db = 25;
i(R, x, {
handler: function handler(a, b, c) {
var d = c.pointerType == za,
e = c.pointerType == Ba;
if (!(e && c.sourceCapabilities && c.sourceCapabilities.firesTouchEvents)) {
if (d) S.call(this, b, c);else if (e && U.call(this, c)) return;
this.callback(a, b, c);
}
},
destroy: function destroy() {
this.touch.destroy(), this.mouse.destroy();
}
});
var eb = u(na.style, "touchAction"),
fb = eb !== d,
gb = "compute",
hb = "auto",
ib = "manipulation",
jb = "none",
kb = "pan-x",
lb = "pan-y",
mb = X();
V.prototype = {
set: function set(a) {
a == gb && (a = this.compute()), fb && this.manager.element.style && mb[a] && (this.manager.element.style[eb] = a), this.actions = a.toLowerCase().trim();
},
update: function update() {
this.set(this.manager.options.touchAction);
},
compute: function compute() {
var a = [];
return g(this.manager.recognizers, function (b) {
k(b.options.enable, [b]) && (a = a.concat(b.getTouchAction()));
}), W(a.join(" "));
},
preventDefaults: function preventDefaults(a) {
var b = a.srcEvent,
c = a.offsetDirection;
if (this.manager.session.prevented) return void b.preventDefault();
var d = this.actions,
e = p(d, jb) && !mb[jb],
f = p(d, lb) && !mb[lb],
g = p(d, kb) && !mb[kb];
if (e) {
var h = 1 === a.pointers.length,
i = a.distance < 2,
j = a.deltaTime < 250;
if (h && i && j) return;
}
return g && f ? void 0 : e || f && c & Na || g && c & Oa ? this.preventSrc(b) : void 0;
},
preventSrc: function preventSrc(a) {
this.manager.session.prevented = !0, a.preventDefault();
}
};
var nb = 1,
ob = 2,
pb = 4,
qb = 8,
rb = qb,
sb = 16,
tb = 32;
Y.prototype = {
defaults: {},
set: function set(a) {
return la(this.options, a), this.manager && this.manager.touchAction.update(), this;
},
recognizeWith: function recognizeWith(a) {
if (f(a, "recognizeWith", this)) return this;
var b = this.simultaneous;
return a = _(a, this), b[a.id] || (b[a.id] = a, a.recognizeWith(this)), this;
},
dropRecognizeWith: function dropRecognizeWith(a) {
return f(a, "dropRecognizeWith", this) ? this : (a = _(a, this), delete this.simultaneous[a.id], this);
},
requireFailure: function requireFailure(a) {
if (f(a, "requireFailure", this)) return this;
var b = this.requireFail;
return a = _(a, this), -1 === r(b, a) && (b.push(a), a.requireFailure(this)), this;
},
dropRequireFailure: function dropRequireFailure(a) {
if (f(a, "dropRequireFailure", this)) return this;
a = _(a, this);
var b = r(this.requireFail, a);
return b > -1 && this.requireFail.splice(b, 1), this;
},
hasRequireFailures: function hasRequireFailures() {
return this.requireFail.length > 0;
},
canRecognizeWith: function canRecognizeWith(a) {
return !!this.simultaneous[a.id];
},
emit: function emit(a) {
function b(b) {
c.manager.emit(b, a);
}
var c = this,
d = this.state;
qb > d && b(c.options.event + Z(d)), b(c.options.event), a.additionalEvent && b(a.additionalEvent), d >= qb && b(c.options.event + Z(d));
},
tryEmit: function tryEmit(a) {
return this.canEmit() ? this.emit(a) : void (this.state = tb);
},
canEmit: function canEmit() {
for (var a = 0; a < this.requireFail.length;) {
if (!(this.requireFail[a].state & (tb | nb))) return !1;
a++;
}
return !0;
},
recognize: function recognize(a) {
var b = la({}, a);
return k(this.options.enable, [this, b]) ? (this.state & (rb | sb | tb) && (this.state = nb), this.state = this.process(b), void (this.state & (ob | pb | qb | sb) && this.tryEmit(b))) : (this.reset(), void (this.state = tb));
},
process: function process(a) {},
getTouchAction: function getTouchAction() {},
reset: function reset() {}
}, i(aa, Y, {
defaults: {
pointers: 1
},
attrTest: function attrTest(a) {
var b = this.options.pointers;
return 0 === b || a.pointers.length === b;
},
process: function process(a) {
var b = this.state,
c = a.eventType,
d = b & (ob | pb),
e = this.attrTest(a);
return d && (c & Ha || !e) ? b | sb : d || e ? c & Ga ? b | qb : b & ob ? b | pb : ob : tb;
}
}), i(ba, aa, {
defaults: {
event: "pan",
threshold: 10,
pointers: 1,
direction: Pa
},
getTouchAction: function getTouchAction() {
var a = this.options.direction,
b = [];
return a & Na && b.push(lb), a & Oa && b.push(kb), b;
},
directionTest: function directionTest(a) {
var b = this.options,
c = !0,
d = a.distance,
e = a.direction,
f = a.deltaX,
g = a.deltaY;
return e & b.direction || (b.direction & Na ? (e = 0 === f ? Ia : 0 > f ? Ja : Ka, c = f != this.pX, d = Math.abs(a.deltaX)) : (e = 0 === g ? Ia : 0 > g ? La : Ma, c = g != this.pY, d = Math.abs(a.deltaY))), a.direction = e, c && d > b.threshold && e & b.direction;
},
attrTest: function attrTest(a) {
return aa.prototype.attrTest.call(this, a) && (this.state & ob || !(this.state & ob) && this.directionTest(a));
},
emit: function emit(a) {
this.pX = a.deltaX, this.pY = a.deltaY;
var b = $(a.direction);
b && (a.additionalEvent = this.options.event + b), this._super.emit.call(this, a);
}
}), i(ca, aa, {
defaults: {
event: "pinch",
threshold: 0,
pointers: 2
},
getTouchAction: function getTouchAction() {
return [jb];
},
attrTest: function attrTest(a) {
return this._super.attrTest.call(this, a) && (Math.abs(a.scale - 1) > this.options.threshold || this.state & ob);
},
emit: function emit(a) {
if (1 !== a.scale) {
var b = a.scale < 1 ? "in" : "out";
a.additionalEvent = this.options.event + b;
}
this._super.emit.call(this, a);
}
}), i(da, Y, {
defaults: {
event: "press",
pointers: 1,
time: 251,
threshold: 9
},
getTouchAction: function getTouchAction() {
return [hb];
},
process: function process(a) {
var b = this.options,
c = a.pointers.length === b.pointers,
d = a.distance < b.threshold,
f = a.deltaTime > b.time;
if (this._input = a, !d || !c || a.eventType & (Ga | Ha) && !f) this.reset();else if (a.eventType & Ea) this.reset(), this._timer = e(function () {
this.state = rb, this.tryEmit();
}, b.time, this);else if (a.eventType & Ga) return rb;
return tb;
},
reset: function reset() {
clearTimeout(this._timer);
},
emit: function emit(a) {
this.state === rb && (a && a.eventType & Ga ? this.manager.emit(this.options.event + "up", a) : (this._input.timeStamp = ra(), this.manager.emit(this.options.event, this._input)));
}
}), i(ea, aa, {
defaults: {
event: "rotate",
threshold: 0,
pointers: 2
},
getTouchAction: function getTouchAction() {
return [jb];
},
attrTest: function attrTest(a) {
return this._super.attrTest.call(this, a) && (Math.abs(a.rotation) > this.options.threshold || this.state & ob);
}
}), i(fa, aa, {
defaults: {
event: "swipe",
threshold: 10,
velocity: .3,
direction: Na | Oa,
pointers: 1
},
getTouchAction: function getTouchAction() {
return ba.prototype.getTouchAction.call(this);
},
attrTest: function attrTest(a) {
var b,
c = this.options.direction;
return c & (Na | Oa) ? b = a.overallVelocity : c & Na ? b = a.overallVelocityX : c & Oa && (b = a.overallVelocityY), this._super.attrTest.call(this, a) && c & a.offsetDirection && a.distance > this.options.threshold && a.maxPointers == this.options.pointers && qa(b) > this.options.velocity && a.eventType & Ga;
},
emit: function emit(a) {
var b = $(a.offsetDirection);
b && this.manager.emit(this.options.event + b, a), this.manager.emit(this.options.event, a);
}
}), i(ga, Y, {
defaults: {
event: "tap",
pointers: 1,
taps: 1,
interval: 300,
time: 250,
threshold: 9,
posThreshold: 10
},
getTouchAction: function getTouchAction() {
return [ib];
},
process: function process(a) {
var b = this.options,
c = a.pointers.length === b.pointers,
d = a.distance < b.threshold,
f = a.deltaTime < b.time;
if (this.reset(), a.eventType & Ea && 0 === this.count) return this.failTimeout();
if (d && f && c) {
if (a.eventType != Ga) return this.failTimeout();
var g = this.pTime ? a.timeStamp - this.pTime < b.interval : !0,
h = !this.pCenter || H(this.pCenter, a.center) < b.posThreshold;
this.pTime = a.timeStamp, this.pCenter = a.center, h && g ? this.count += 1 : this.count = 1, this._input = a;
var i = this.count % b.taps;
if (0 === i) return this.hasRequireFailures() ? (this._timer = e(function () {
this.state = rb, this.tryEmit();
}, b.interval, this), ob) : rb;
}
return tb;
},
failTimeout: function failTimeout() {
return this._timer = e(function () {
this.state = tb;
}, this.options.interval, this), tb;
},
reset: function reset() {
clearTimeout(this._timer);
},
emit: function emit() {
this.state == rb && (this._input.tapCount = this.count, this.manager.emit(this.options.event, this._input));
}
}), ha.VERSION = "2.0.8", ha.defaults = {
domEvents: !1,
touchAction: gb,
enable: !0,
inputTarget: null,
inputClass: null,
preset: [[ea, {
enable: !1
}], [ca, {
enable: !1
}, ["rotate"]], [fa, {
direction: Na
}], [ba, {
direction: Na
}, ["swipe"]], [ga], [ga, {
event: "doubletap",
taps: 2
}, ["tap"]], [da]],
cssProps: {
userSelect: "none",
touchSelect: "none",
touchCallout: "none",
contentZooming: "none",
userDrag: "none",
tapHighlightColor: "rgba(0,0,0,0)"
}
};
var ub = 1,
vb = 2;
ia.prototype = {
set: function set(a) {
return la(this.options, a), a.touchAction && this.touchAction.update(), a.inputTarget && (this.input.destroy(), this.input.target = a.inputTarget, this.input.init()), this;
},
stop: function stop(a) {
this.session.stopped = a ? vb : ub;
},
recognize: function recognize(a) {
var b = this.session;
if (!b.stopped) {
this.touchAction.preventDefaults(a);
var c,
d = this.recognizers,
e = b.curRecognizer;
(!e || e && e.state & rb) && (e = b.curRecognizer = null);
for (var f = 0; f < d.length;) c = d[f], b.stopped === vb || e && c != e && !c.canRecognizeWith(e) ? c.reset() : c.recognize(a), !e && c.state & (ob | pb | qb) && (e = b.curRecognizer = c), f++;
}
},
get: function get(a) {
if (a instanceof Y) return a;
for (var b = this.recognizers, c = 0; c < b.length; c++) if (b[c].options.event == a) return b[c];
return null;
},
add: function add(a) {
if (f(a, "add", this)) return this;
var b = this.get(a.options.event);
return b && this.remove(b), this.recognizers.push(a), a.manager = this, this.touchAction.update(), a;
},
remove: function remove(a) {
if (f(a, "remove", this)) return this;
if (a = this.get(a)) {
var b = this.recognizers,
c = r(b, a);
-1 !== c && (b.splice(c, 1), this.touchAction.update());
}
return this;
},
on: function on(a, b) {
if (a !== d && b !== d) {
var c = this.handlers;
return g(q(a), function (a) {
c[a] = c[a] || [], c[a].push(b);
}), this;
}
},
off: function off(a, b) {
if (a !== d) {
var c = this.handlers;
return g(q(a), function (a) {
b ? c[a] && c[a].splice(r(c[a], b), 1) : delete c[a];
}), this;
}
},
emit: function emit(a, b) {
this.options.domEvents && ka(a, b);
var c = this.handlers[a] && this.handlers[a].slice();
if (c && c.length) {
b.type = a, b.preventDefault = function () {
b.srcEvent.preventDefault();
};
for (var d = 0; d < c.length;) c[d](b), d++;
}
},
destroy: function destroy() {
this.element && ja(this, !1), this.handlers = {}, this.session = {}, this.input.destroy(), this.element = null;
}
}, la(ha, {
INPUT_START: Ea,
INPUT_MOVE: Fa,
INPUT_END: Ga,
INPUT_CANCEL: Ha,
STATE_POSSIBLE: nb,
STATE_BEGAN: ob,
STATE_CHANGED: pb,
STATE_ENDED: qb,
STATE_RECOGNIZED: rb,
STATE_CANCELLED: sb,
STATE_FAILED: tb,
DIRECTION_NONE: Ia,
DIRECTION_LEFT: Ja,
DIRECTION_RIGHT: Ka,
DIRECTION_UP: La,
DIRECTION_DOWN: Ma,
DIRECTION_HORIZONTAL: Na,
DIRECTION_VERTICAL: Oa,
DIRECTION_ALL: Pa,
Manager: ia,
Input: x,
TouchAction: V,
TouchInput: P,
MouseInput: L,
PointerEventInput: M,
TouchMouseInput: R,
SingleTouchInput: N,
Recognizer: Y,
AttrRecognizer: aa,
Tap: ga,
Pan: ba,
Swipe: fa,
Pinch: ca,
Rotate: ea,
Press: da,
on: m,
off: n,
each: g,
merge: ta,
extend: sa,
assign: la,
inherit: i,
bindFn: j,
prefixed: u
});
var wb = "undefined" != typeof a ? a : "undefined" != typeof self ? self : {};
wb.Hammer = ha, "function" == typeof define && define.amd ? define(function () {
return ha;
}) : "undefined" != typeof module && module.exports ? module.exports = ha : a[c] = ha;
}(window, document, "Hammer");
!function (e, t) {
if ("function" == typeof define && define.amd) define(["exports"], t);else if ("undefined" != typeof exports) t(exports);else {
var o = {};
t(o), e.bodyScrollLock = o;
}
}(this, function (exports) {
"use strict";
function r(e) {
if (Array.isArray(e)) {
for (var t = 0, o = Array(e.length); t < e.length; t++) o[t] = e[t];
return o;
}
return Array.from(e);
}
Object.defineProperty(exports, "__esModule", {
value: !0
});
var l = !1;
if ("undefined" != typeof window) {
var e = {
get passive() {
l = !0;
}
};
window.addEventListener("testPassive", null, e), window.removeEventListener("testPassive", null, e);
}
var d = "undefined" != typeof window && window.navigator && window.navigator.platform && /iP(ad|hone|od)/.test(window.navigator.platform),
c = [],
u = !1,
a = -1,
s = void 0,
v = void 0,
f = function f(t) {
return c.some(function (e) {
return !(!e.options.allowTouchMove || !e.options.allowTouchMove(t));
});
},
m = function m(e) {
var t = e || window.event;
return !!f(t.target) || 1 < t.touches.length || (t.preventDefault && t.preventDefault(), !1);
},
o = function o() {
setTimeout(function () {
void 0 !== v && (document.body.style.paddingRight = v, v = void 0), void 0 !== s && (document.body.style.overflow = s, s = void 0);
});
};
exports.disableBodyScroll = function (i, e) {
if (d) {
if (!i) return void console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.");
if (i && !c.some(function (e) {
return e.targetElement === i;
})) {
var t = {
targetElement: i,
options: e || {}
};
c = [].concat(r(c), [t]), i.ontouchstart = function (e) {
1 === e.targetTouches.length && (a = e.targetTouches[0].clientY);
}, i.ontouchmove = function (e) {
var t, o, n, r;
1 === e.targetTouches.length && (o = i, r = (t = e).targetTouches[0].clientY - a, !f(t.target) && (o && 0 === o.scrollTop && 0 < r ? m(t) : (n = o) && n.scrollHeight - n.scrollTop <= n.clientHeight && r < 0 ? m(t) : t.stopPropagation()));
}, u || (document.addEventListener("touchmove", m, l ? {
passive: !1
} : void 0), u = !0);
}
} else {
n = e, setTimeout(function () {
if (void 0 === v) {
var e = !!n && !0 === n.reserveScrollBarGap,
t = window.innerWidth - document.documentElement.clientWidth;
e && 0 < t && (v = document.body.style.paddingRight, document.body.style.paddingRight = t + "px");
}
void 0 === s && (s = document.body.style.overflow, document.body.style.overflow = "hidden");
});
var o = {
targetElement: i,
options: e || {}
};
c = [].concat(r(c), [o]);
}
var n;
}, exports.clearAllBodyScrollLocks = function () {
d ? (c.forEach(function (e) {
e.targetElement.ontouchstart = null, e.targetElement.ontouchmove = null;
}), u && (document.removeEventListener("touchmove", m, l ? {
passive: !1
} : void 0), u = !1), c = [], a = -1) : (o(), c = []);
}, exports.enableBodyScroll = function (t) {
if (d) {
if (!t) return void console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.");
t.ontouchstart = null, t.ontouchmove = null, c = c.filter(function (e) {
return e.targetElement !== t;
}), u && 0 === c.length && (document.removeEventListener("touchmove", m, l ? {
passive: !1
} : void 0), u = !1);
} else 1 === c.length && c[0].targetElement === t ? (o(), c = []) : c = c.filter(function (e) {
return e.targetElement !== t;
});
};
});
!function (t, n) {
"object" == (typeof exports === "undefined" ? "undefined" : _typeof(exports)) && "undefined" != typeof module ? module.exports = n() : "function" == typeof define && define.amd ? define(n) : (t = "undefined" != typeof globalThis ? globalThis : t || self).LazyLoad = n();
}(this, function () {
"use strict";
function t() {
return (t = Object.assign || function (t) {
for (var n = 1; n < arguments.length; n++) {
var e = arguments[n];
for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
}
return t;
}).apply(this, arguments);
}
var n = "undefined" != typeof window,
e = n && !("onscroll" in window) || "undefined" != typeof navigator && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),
i = n && "IntersectionObserver" in window,
o = n && "classList" in document.createElement("p"),
r = n && window.devicePixelRatio > 1,
a = {
elements_selector: ".lazy",
container: e || n ? document : null,
threshold: 300,
thresholds: null,
data_src: "src",
data_srcset: "srcset",
data_sizes: "sizes",
data_bg: "bg",
data_bg_hidpi: "bg-hidpi",
data_bg_multi: "bg-multi",
data_bg_multi_hidpi: "bg-multi-hidpi",
data_poster: "poster",
class_applied: "applied",
class_loading: "loading",
class_loaded: "loaded",
class_error: "error",
class_entered: "entered",
class_exited: "exited",
unobserve_completed: !0,
unobserve_entered: !1,
cancel_on_exit: !0,
callback_enter: null,
callback_exit: null,
callback_applied: null,
callback_loading: null,
callback_loaded: null,
callback_error: null,
callback_finish: null,
callback_cancel: null,
use_native: !1
},
c = function c(n) {
return t({}, a, n);
},
s = function s(t, n) {
var e,
i = "LazyLoad::Initialized",
o = new t(n);
try {
e = new CustomEvent(i, {
detail: {
instance: o
}
});
} catch (t) {
(e = document.createEvent("CustomEvent")).initCustomEvent(i, !1, !1, {
instance: o
});
}
window.dispatchEvent(e);
},
l = "loading",
u = "loaded",
d = "applied",
f = "error",
_ = "native",
g = "data-",
v = "ll-status",
b = function b(t, n) {
return t.getAttribute(g + n);
},
p = function p(t) {
return b(t, v);
},
h = function h(t, n) {
return function (t, n, e) {
var i = "data-ll-status";
null !== e ? t.setAttribute(i, e) : t.removeAttribute(i);
}(t, 0, n);
},
m = function m(t) {
return h(t, null);
},
E = function E(t) {
return null === p(t);
},
y = function y(t) {
return p(t) === _;
},
I = [l, u, d, f],
A = function A(t, n, e, i) {
t && (void 0 === i ? void 0 === e ? t(n) : t(n, e) : t(n, e, i));
},
L = function L(t, n) {
o ? t.classList.add(n) : t.className += (t.className ? " " : "") + n;
},
w = function w(t, n) {
o ? t.classList.remove(n) : t.className = t.className.replace(new RegExp("(^|\\s+)" + n + "(\\s+|$)"), " ").replace(/^\s+/, "").replace(/\s+$/, "");
},
k = function k(t) {
return t.llTempImage;
},
O = function O(t, n) {
if (n) {
var e = n._observer;
e && e.unobserve(t);
}
},
x = function x(t, n) {
t && (t.loadingCount += n);
},
z = function z(t, n) {
t && (t.toLoadCount = n);
},
C = function C(t) {
for (var n, e = [], i = 0; n = t.children[i]; i += 1) "SOURCE" === n.tagName && e.push(n);
return e;
},
N = function N(t, n, e) {
e && t.setAttribute(n, e);
},
M = function M(t, n) {
t.removeAttribute(n);
},
R = function R(t) {
return !!t.llOriginalAttrs;
},
T = function T(t) {
if (!R(t)) {
var n = {};
n.src = t.getAttribute("src"), n.srcset = t.getAttribute("srcset"), n.sizes = t.getAttribute("sizes"), t.llOriginalAttrs = n;
}
},
G = function G(t) {
if (R(t)) {
var n = t.llOriginalAttrs;
N(t, "src", n.src), N(t, "srcset", n.srcset), N(t, "sizes", n.sizes);
}
},
D = function D(t, n) {
N(t, "sizes", b(t, n.data_sizes)), N(t, "srcset", b(t, n.data_srcset)), N(t, "src", b(t, n.data_src));
},
V = function V(t) {
M(t, "src"), M(t, "srcset"), M(t, "sizes");
},
j = function j(t, n) {
var e = t.parentNode;
e && "PICTURE" === e.tagName && C(e).forEach(n);
},
F = {
IMG: function IMG(t, n) {
j(t, function (t) {
T(t), D(t, n);
}), T(t), D(t, n);
},
IFRAME: function IFRAME(t, n) {
N(t, "src", b(t, n.data_src));
},
VIDEO: function VIDEO(t, n) {
!function (t, e) {
C(t).forEach(function (t) {
N(t, "src", b(t, n.data_src));
});
}(t), N(t, "poster", b(t, n.data_poster)), N(t, "src", b(t, n.data_src)), t.load();
}
},
P = function P(t, n) {
var e = F[t.tagName];
e && e(t, n);
},
S = function S(t, n, e) {
x(e, 1), L(t, n.class_loading), h(t, l), A(n.callback_loading, t, e);
},
U = ["IMG", "IFRAME", "VIDEO"],
$ = function $(t, n) {
!n || function (t) {
return t.loadingCount > 0;
}(n) || function (t) {
return t.toLoadCount > 0;
}(n) || A(t.callback_finish, n);
},
q = function q(t, n, e) {
t.addEventListener(n, e), t.llEvLisnrs[n] = e;
},
H = function H(t, n, e) {
t.removeEventListener(n, e);
},
B = function B(t) {
return !!t.llEvLisnrs;
},
J = function J(t) {
if (B(t)) {
var n = t.llEvLisnrs;
for (var e in n) {
var i = n[e];
H(t, e, i);
}
delete t.llEvLisnrs;
}
},
K = function K(t, n, e) {
!function (t) {
delete t.llTempImage;
}(t), x(e, -1), function (t) {
t && (t.toLoadCount -= 1);
}(e), w(t, n.class_loading), n.unobserve_completed && O(t, e);
},
Q = function Q(t, n, e) {
var i = k(t) || t;
B(i) || function (t, n, e) {
B(t) || (t.llEvLisnrs = {});
var i = "VIDEO" === t.tagName ? "loadeddata" : "load";
q(t, i, n), q(t, "error", e);
}(i, function (o) {
!function (t, n, e, i) {
var o = y(n);
K(n, e, i), L(n, e.class_loaded), h(n, u), A(e.callback_loaded, n, i), o || $(e, i);
}(0, t, n, e), J(i);
}, function (o) {
!function (t, n, e, i) {
var o = y(n);
K(n, e, i), L(n, e.class_error), h(n, f), A(e.callback_error, n, i), o || $(e, i);
}(0, t, n, e), J(i);
});
},
W = function W(t, n, e) {
!function (t) {
t.llTempImage = document.createElement("IMG");
}(t), Q(t, n, e), function (t, n, e) {
var i = b(t, n.data_bg),
o = b(t, n.data_bg_hidpi),
a = r && o ? o : i;
a && (t.style.backgroundImage = 'url("'.concat(a, '")'), k(t).setAttribute("src", a), S(t, n, e));
}(t, n, e), function (t, n, e) {
var i = b(t, n.data_bg_multi),
o = b(t, n.data_bg_multi_hidpi),
a = r && o ? o : i;
a && (t.style.backgroundImage = a, function (t, n, e) {
L(t, n.class_applied), h(t, d), n.unobserve_completed && O(t, n), A(n.callback_applied, t, e);
}(t, n, e));
}(t, n, e);
},
X = function X(t, n, e) {
!function (t) {
return U.indexOf(t.tagName) > -1;
}(t) ? W(t, n, e) : function (t, n, e) {
Q(t, n, e), P(t, n), S(t, n, e);
}(t, n, e);
},
Y = ["IMG", "IFRAME", "VIDEO"],
Z = function Z(t) {
return t.use_native && "loading" in HTMLImageElement.prototype;
},
tt = function tt(t, n, e) {
t.forEach(function (t) {
return function (t) {
return t.isIntersecting || t.intersectionRatio > 0;
}(t) ? function (t, n, e, i) {
var o = function (t) {
return I.indexOf(p(t)) >= 0;
}(t);
h(t, "entered"), L(t, e.class_entered), w(t, e.class_exited), function (t, n, e) {
n.unobserve_entered && O(t, e);
}(t, e, i), A(e.callback_enter, t, n, i), o || X(t, e, i);
}(t.target, t, n, e) : function (t, n, e, i) {
E(t) || (L(t, e.class_exited), function (t, n, e, i) {
e.cancel_on_exit && function (t) {
return p(t) === l;
}(t) && "IMG" === t.tagName && (J(t), function (t) {
j(t, function (t) {
V(t);
}), V(t);
}(t), function (t) {
j(t, function (t) {
G(t);
}), G(t);
}(t), w(t, e.class_loading), x(i, -1), m(t), A(e.callback_cancel, t, n, i));
}(t, n, e, i), A(e.callback_exit, t, n, i));
}(t.target, t, n, e);
});
},
nt = function nt(t) {
return Array.prototype.slice.call(t);
},
et = function et(t) {
return t.container.querySelectorAll(t.elements_selector);
},
it = function it(t) {
return function (t) {
return p(t) === f;
}(t);
},
ot = function ot(t, n) {
return function (t) {
return nt(t).filter(E);
}(t || et(n));
},
rt = function rt(t, e) {
var o = c(t);
this._settings = o, this.loadingCount = 0, function (t, n) {
i && !Z(t) && (n._observer = new IntersectionObserver(function (e) {
tt(e, t, n);
}, function (t) {
return {
root: t.container === document ? null : t.container,
rootMargin: t.thresholds || t.threshold + "px"
};
}(t)));
}(o, this), function (t, e) {
n && window.addEventListener("online", function () {
!function (t, n) {
var e;
(e = et(t), nt(e).filter(it)).forEach(function (n) {
w(n, t.class_error), m(n);
}), n.update();
}(t, e);
});
}(o, this), this.update(e);
};
return rt.prototype = {
update: function update(t) {
var n,
o,
r = this._settings,
a = ot(t, r);
z(this, a.length), !e && i ? Z(r) ? function (t, n, e) {
t.forEach(function (t) {
-1 !== Y.indexOf(t.tagName) && function (t, n, e) {
t.setAttribute("loading", "lazy"), Q(t, n, e), P(t, n), h(t, _);
}(t, n, e);
}), z(e, 0);
}(a, r, this) : (o = a, function (t) {
t.disconnect();
}(n = this._observer), function (t, n) {
n.forEach(function (n) {
t.observe(n);
});
}(n, o)) : this.loadAll(a);
},
destroy: function destroy() {
this._observer && this._observer.disconnect(), et(this._settings).forEach(function (t) {
delete t.llOriginalAttrs;
}), delete this._observer, delete this._settings, delete this.loadingCount, delete this.toLoadCount;
},
loadAll: function loadAll(t) {
var n = this,
e = this._settings;
ot(t, e).forEach(function (t) {
O(t, n), X(t, e, n);
});
}
}, rt.load = function (t, n) {
var e = c(n);
X(t, e);
}, rt.resetStatus = function (t) {
m(t);
}, n && function (t, n) {
if (n) if (n.length) for (var e, i = 0; e = n[i]; i += 1) s(t, e);else s(t, n);
}(rt, window.lazyLoadOptions), rt;
});
/**
* Event semi polyfill. IE does not support new event. But does support document.createEvent.
* Same thing for dispatching events. But then with createEvent and fireEvent.
*/
function createNewEvent(eventName) {
var event;
if (typeof Event === 'function') {
//On ie it is typeOf object.
event = new Event(eventName); //Non-ie
} else {
event = document.createEvent('Event'); //ie
event.initEvent(eventName, true, true);
}
return event;
}
function dispatchEventForElement(element, event) {
if (document.createEvent) {
element.dispatchEvent(event);
} else {
element.fireEvent("on" + event.eventType, event);
}
}
Number.isInteger = Number.isInteger || function (value) {
return typeof value === "number" && isFinite(value) && Math.floor(value) === value;
};
(function (global, factory) {
(typeof exports === "undefined" ? "undefined" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory() : typeof define === 'function' && define.amd ? define(factory) : factory();
})(this, function () {
'use strict';
/**
* @this {Promise}
*/
function finallyConstructor(callback) {
var constructor = this.constructor;
return this.then(function (value) {
return constructor.resolve(callback()).then(function () {
return value;
});
}, function (reason) {
return constructor.resolve(callback()).then(function () {
return constructor.reject(reason);
});
});
}
// Store setTimeout reference so promise-polyfill will be unaffected by
// other code modifying setTimeout (like sinon.useFakeTimers())
var setTimeoutFunc = setTimeout;
function noop() {}
// Polyfill for Function.prototype.bind
function bind(fn, thisArg) {
return function () {
fn.apply(thisArg, arguments);
};
}
/**
* @constructor
* @param {Function} fn
*/
function Promise(fn) {
if (!(this instanceof Promise)) throw new TypeError('Promises must be constructed via new');
if (typeof fn !== 'function') throw new TypeError('not a function');
/** @type {!number} */
this._state = 0;
/** @type {!boolean} */
this._handled = false;
/** @type {Promise|undefined} */
this._value = undefined;
/** @type {!Array<!Function>} */
this._deferreds = [];
doResolve(fn, this);
}
function handle(self, deferred) {
while (self._state === 3) {
self = self._value;
}
if (self._state === 0) {
self._deferreds.push(deferred);
return;
}
self._handled = true;
Promise._immediateFn(function () {
var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
if (cb === null) {
(self._state === 1 ? resolve : reject)(deferred.promise, self._value);
return;
}
var ret;
try {
ret = cb(self._value);
} catch (e) {
reject(deferred.promise, e);
return;
}
resolve(deferred.promise, ret);
});
}
function resolve(self, newValue) {
try {
// Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');
if (newValue && (_typeof(newValue) === 'object' || typeof newValue === 'function')) {
var then = newValue.then;
if (newValue instanceof Promise) {
self._state = 3;
self._value = newValue;
finale(self);
return;
} else if (typeof then === 'function') {
doResolve(bind(then, newValue), self);
return;
}
}
self._state = 1;
self._value = newValue;
finale(self);
} catch (e) {
reject(self, e);
}
}
function reject(self, newValue) {
self._state = 2;
self._value = newValue;
finale(self);
}
function finale(self) {
if (self._state === 2 && self._deferreds.length === 0) {
Promise._immediateFn(function () {
if (!self._handled) {
Promise._unhandledRejectionFn(self._value);
}
});
}
for (var i = 0, len = self._deferreds.length; i < len; i++) {
handle(self, self._deferreds[i]);
}
self._deferreds = null;
}
/**
* @constructor
*/
function Handler(onFulfilled, onRejected, promise) {
this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
this.onRejected = typeof onRejected === 'function' ? onRejected : null;
this.promise = promise;
}
/**
* Take a potentially misbehaving resolver function and make sure
* onFulfilled and onRejected are only called once.
*
* Makes no guarantees about asynchrony.
*/
function doResolve(fn, self) {
var done = false;
try {
fn(function (value) {
if (done) return;
done = true;
resolve(self, value);
}, function (reason) {
if (done) return;
done = true;
reject(self, reason);
});
} catch (ex) {
if (done) return;
done = true;
reject(self, ex);
}
}
Promise.prototype['catch'] = function (onRejected) {
return this.then(null, onRejected);
};
Promise.prototype.then = function (onFulfilled, onRejected) {
// @ts-ignore
var prom = new this.constructor(noop);
handle(this, new Handler(onFulfilled, onRejected, prom));
return prom;
};
Promise.prototype['finally'] = finallyConstructor;
Promise.all = function (arr) {
return new Promise(function (resolve, reject) {
if (!arr || typeof arr.length === 'undefined') throw new TypeError('Promise.all accepts an array');
var args = Array.prototype.slice.call(arr);
if (args.length === 0) return resolve([]);
var remaining = args.length;
function res(i, val) {
try {
if (val && (_typeof(val) === 'object' || typeof val === 'function')) {
var then = val.then;
if (typeof then === 'function') {
then.call(val, function (val) {
res(i, val);
}, reject);
return;
}
}
args[i] = val;
if (--remaining === 0) {
resolve(args);
}
} catch (ex) {
reject(ex);
}
}
for (var i = 0; i < args.length; i++) {
res(i, args[i]);
}
});
};
Promise.resolve = function (value) {
if (value && _typeof(value) === 'object' && value.constructor === Promise) {
return value;
}
return new Promise(function (resolve) {
resolve(value);
});
};
Promise.reject = function (value) {
return new Promise(function (resolve, reject) {
reject(value);
});
};
Promise.race = function (values) {
return new Promise(function (resolve, reject) {
for (var i = 0, len = values.length; i < len; i++) {
values[i].then(resolve, reject);
}
});
};
// Use polyfill for setImmediate for performance gains
Promise._immediateFn = typeof setImmediate === 'function' && function (fn) {
setImmediate(fn);
} || function (fn) {
setTimeoutFunc(fn, 0);
};
Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {
if (typeof console !== 'undefined' && console) {
console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
}
};
/** @suppress {undefinedVars} */
var globalNS = function () {
// the only reliable means to get the global object is
// `Function('return this')()`
// However, this causes CSP violations in Chrome apps.
if (typeof self !== 'undefined') {
return self;
}
if (typeof window !== 'undefined') {
return window;
}
if (typeof global !== 'undefined') {
return global;
}
throw new Error('unable to locate global object');
}();
if (!('Promise' in globalNS)) {
globalNS['Promise'] = Promise;
} else if (!globalNS.Promise.prototype['finally']) {
globalNS.Promise.prototype['finally'] = finallyConstructor;
}
});
/* ==========================================================================
Helper functions
========================================================================== */
/*
* Simple isset method for this does not exist in javascript
*/
var isset = function isset(obj) {
return typeof obj !== 'undefined' && obj !== null;
};
/*
* Easing Functions - inspired from http://gizma.com/easing/
* only considering the t value for the range [0, 1] => [0, 1]
*/
var EasingFunctions = {
// no easing, no acceleration
linear: function linear(t) {
return t;
},
// accelerating from zero velocity
easeInQuad: function easeInQuad(t) {
return t * t;
},
// decelerating to zero velocity
easeOutQuad: function easeOutQuad(t) {
return t * (2 - t);
},
// acceleration until halfway, then deceleration
easeInOutQuad: function easeInOutQuad(t) {
return t < .5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
},
// accelerating from zero velocity
easeInCubic: function easeInCubic(t) {
return t * t * t;
},
// decelerating to zero velocity
easeOutCubic: function easeOutCubic(t) {
return --t * t * t + 1;
},
// acceleration until halfway, then deceleration
easeInOutCubic: function easeInOutCubic(t) {
return t < .5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
},
// accelerating from zero velocity
easeInQuart: function easeInQuart(t) {
return t * t * t * t;
},
// decelerating to zero velocity
easeOutQuart: function easeOutQuart(t) {
return 1 - --t * t * t * t;
},
// acceleration until halfway, then deceleration
easeInOutQuart: function easeInOutQuart(t) {
return t < .5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;
},
// accelerating from zero velocity
easeInQuint: function easeInQuint(t) {
return t * t * t * t * t;
},
// decelerating to zero velocity
easeOutQuint: function easeOutQuint(t) {
return 1 + --t * t * t * t * t;
},
// acceleration until halfway, then deceleration
easeInOutQuint: function easeInOutQuint(t) {
return t < .5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;
}
};
/*
* Vanilla version of the $.getScript
*/
var getScript = function getScript(source, callback) {
var script = document.createElement('script');
script.async = 1;
var scripts = document.getElementsByTagName('script');
var prior = scripts[scripts.length - 1];
script.onload = script.onreadystatechange = function (_, isAbort) {
if (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) {
script.onload = script.onreadystatechange = null;
script = undefined;
if (!isAbort) {
if (callback) callback();
}
}
};
script.src = source;
prior.parentNode.insertBefore(script, prior);
};
/**
* Returns a function, that, as long as it continues to be invoked, will not
* be triggered. The function will be called after it stops being called for
* N milliseconds. If `immediate` is passed, trigger the function on the
* leading edge, instead of the trailing.
* @param func
* @param wait
* @param immediate
* @returns {Function}
*/
var debounce = function debounce(func, wait, immediate) {
var timeout;
return function () {
var context = this,
args = arguments;
var later = function later() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
/*
* Cookie helper class
*/
var Cookie = {
set: function set(name, value, days) {
var domain, domainParts, date, expires, host;
if (days) {
date = new Date();
date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
expires = "; expires=" + date.toGMTString();
} else {
expires = "";
}
host = location.host;
if (host.split('.').length === 1) {
// no "." in a domain - it's localhost or something similar
document.cookie = name + "=" + value + expires + "; path=/";
} else {
// Remember the cookie on all sub domains.
//
// Start with trying to set cookie to the top domain.
// (example: if user is on foo.com, try to set
// cookie to domain ".com")
//
// If the cookie will not be set, it means ".com"
// is a top level domain and we need to
// set the cookie to ".foo.com"
domainParts = host.split('.');
domainParts.shift();
domain = '.' + domainParts.join('.');
// For development purpose if using domain and subdomain, remove this when moving to production
// domain = '.komma.pro';
document.cookie = name + "=" + value + expires + "; path=/; domain=" + domain;
// check if cookie was successfuly set to the given domain
// (otherwise it was a Top-Level Domain)
if (Cookie.get(name) == null || Cookie.get(name) != value) {
// append "." to current domain
domain = '.' + host;
document.cookie = name + "=" + value + expires + "; path=/; domain=" + domain;
}
}
},
get: function get(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) === ' ') {
c = c.substring(1, c.length);
}
if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);
}
return null;
},
erase: function erase(name) {
Cookie.set(name, '', -1);
}
};
/*
* Javascript version of the number_format method of PHP
*/
var number_format = function number_format(number, decimals, dec_point, thousands_sep) {
// Strip all characters but numerical ones.
number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
var n = !isFinite(+number) ? 0 : +number,
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
sep = typeof thousands_sep === 'undefined' ? ',' : thousands_sep,
dec = typeof dec_point === 'undefined' ? '.' : dec_point,
s = '',
toFixedFix = function toFixedFix(n, prec) {
var k = Math.pow(10, prec);
return '' + Math.round(n * k) / k;
};
// Fix for IE parseFloat(0.55).toFixed(0) = 0;
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
if (s[0].length > 3) {
s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
}
if ((s[1] || '').length < prec) {
s[1] = s[1] || '';
s[1] += new Array(prec - s[1].length + 1).join('0');
}
return s.join(dec);
};
/**
* Element.closest() polyfill
* https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill
*/
if (!Element.prototype.closest) {
if (!Element.prototype.matches) {
Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
}
Element.prototype.closest = function (s) {
var el = this;
var ancestor = this;
if (!document.documentElement.contains(el)) return null;
do {
if (ancestor.matches(s)) return ancestor;
ancestor = ancestor.parentElement;
} while (ancestor !== null);
return null;
};
}
var Ajax = {
// createRequest: () =>{
// let xhr = new XMLHttpRequest();
// let token = document.querySelector('meta[name="csrf-token"]').content;
// xhr.setRequestHeader('Content-Type', 'application/json');
// xhr.setRequestHeader('X-CSRF-TOKEN', token);
// xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
//
// return xhr;
// },
//
// get: function(url, callback) {
// let xhr = this.createRequest();
// xhr.open('get', url, true);
// xhr.onreadystatechange = function() {
// if (xhr.readyState === 4) {
// if(xhr.status === 200) {
// callback(xhr);
// } else {
// console.error('Helpers:Ajax Error on get request. '+xhr.statusText);
// }
// }
// };
// },
//
// post: function(url, data, callback) {
// let xhr = this.createRequest();
// xhr.open('post', url, true);
// xhr.onreadystatechange = function() {
// if (xhr.readyState === 4) {
// if(xhr.status === 200) {
// callback(xhr);
// } else {
// console.error('Helpers:Ajax Error on post request. '+xhr.statusText);
// }
// }
// };
// xhr.send( JSON.stringify(data));
// }
get: function get(url, callback) {
var xhr = new XMLHttpRequest();
var token = document.querySelector('meta[name="csrf-token"]').content;
xhr.open('get', url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('X-CSRF-TOKEN', token);
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
callback(xhr);
}
};
xhr.send();
},
// TODO: make it working like above with a global function for creating the request
post: function post(url, data, callback) {
var xhr = new XMLHttpRequest();
var token = document.querySelector('meta[name="csrf-token"]').content;
xhr.open('post', url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('X-CSRF-TOKEN', token);
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
callback(xhr);
}
};
xhr.send(JSON.stringify(data));
}
};
/**
* Capitalize the first letter of the string
* @param string
* @returns {string}
*/
var capitalizeFirstLetter = function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
};
/**
* Convert snake case into camelcase
*
* @param string
* @returns {*}
*/
function snakeToCamel(string) {
return string.replace(/(\-\w)/g, function (m) {
return m[1].toUpperCase();
});
}
/**
* Get the index of an element inside its parent
*/
function indexInParent(node) {
var children = node.parentNode.childNodes;
var num = 0;
for (var i = 0; i < children.length; i++) {
if (children[i] == node) return num;
if (children[i].nodeType == 1) num++;
}
return -1;
}
/**
* For security reasons iOS Safari only allows document.execCommand('copy') for text within a contentEditable container.
* The workaround is to detect iOS Safari and quickly toggle contentEditable before executing document.execCommand('copy').
* Wheb input or textarea is READONLY you can prevent the unwanted popup with copy/paste functions and the input keyboard
* Code from: https://stackoverflow.com/a/46981847
*/
function copyToClipboard(el) {
// resolve the element
el = typeof el === 'string' ? document.querySelector(el) : el;
// handle iOS as a special case
if (navigator.userAgent.match(/ipad|ipod|iphone/i)) {
// save current contentEditable/readOnly status
var editable = el.contentEditable;
var readOnly = el.readOnly;
// convert to editable with readonly to stop iOS keyboard opening
el.contentEditable = true;
el.readOnly = true;
// create a selectable range
var range = document.createRange();
range.selectNodeContents(el);
// select the range
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
el.setSelectionRange(0, 999999);
// restore contentEditable/readOnly to original state
el.contentEditable = editable;
el.readOnly = readOnly;
} else {
el.select();
}
// execute copy command
document.execCommand('copy');
}