2183 lines
96 KiB
JavaScript
2183 lines
96 KiB
JavaScript
/*!
|
|
* Webflow: Front-end site library
|
|
* @license MIT
|
|
* Inline scripts may access the api using an async handler:
|
|
* var Webflow = Webflow || [];
|
|
* Webflow.push(readyFunction);
|
|
*/
|
|
|
|
(() => {
|
|
var defineModule = function(body, module) {
|
|
return function() {
|
|
if (!module) {
|
|
module = {
|
|
exports: {}
|
|
};
|
|
body(module.exports, module);
|
|
}
|
|
return module.exports;
|
|
};
|
|
}
|
|
var requireTramJS = defineModule(() => {
|
|
"use strict";
|
|
window.tram = function(t) {
|
|
function f(e, r) {
|
|
var o = new v.Bare;
|
|
return o.init(e, r)
|
|
}
|
|
|
|
function l(e) {
|
|
return e.replace(/[A-Z]/g, function(r) {
|
|
return "-" + r.toLowerCase()
|
|
})
|
|
}
|
|
|
|
function T(e) {
|
|
var r = parseInt(e.slice(1), 16),
|
|
o = r >> 16 & 255,
|
|
a = r >> 8 & 255,
|
|
i = 255 & r;
|
|
return [o, a, i]
|
|
}
|
|
|
|
function B(e, r, o) {
|
|
return "#" + (1 << 24 | e << 16 | r << 8 | o).toString(16).slice(1)
|
|
}
|
|
|
|
function _() {}
|
|
|
|
function D(e, r) {
|
|
G("Type warning: Expected: [" + e + "] Got: [" + typeof r + "] " + r)
|
|
}
|
|
|
|
function C(e, r, o) {
|
|
G("Units do not match [" + e + "]: " + r + ", " + o)
|
|
}
|
|
|
|
function P(e, r, o) {
|
|
if (r !== void 0 && (o = r), e === void 0) return o;
|
|
var a = o;
|
|
return Ie.test(e) || !Ce.test(e) ? a = parseInt(e, 10) : Ce.test(e) && (a = 1e3 * parseFloat(e)), 0 > a && (a = 0), a === a ? a : o
|
|
}
|
|
|
|
function G(e) {
|
|
ne.debug && window && window.console.warn(e)
|
|
}
|
|
|
|
function te(e) {
|
|
for (var r = -1, o = e ? e.length : 0, a = []; ++r < o;) {
|
|
var i = e[r];
|
|
i && a.push(i)
|
|
}
|
|
return a
|
|
}
|
|
var X = function(e, r, o) {
|
|
function a(z) {
|
|
return typeof z == "object"
|
|
}
|
|
|
|
function i(z) {
|
|
return typeof z == "function"
|
|
}
|
|
|
|
function s() {}
|
|
|
|
function A(z, ae) {
|
|
function m() {
|
|
var me = new V;
|
|
return i(me.init) && me.init.apply(me, arguments), me
|
|
}
|
|
|
|
function V() {}
|
|
ae === o && (ae = z, z = Object), m.Bare = V;
|
|
var J, fe = s[e] = z[e],
|
|
ke = V[e] = m[e] = new s;
|
|
return ke.constructor = m, m.mixin = function(me) {
|
|
return V[e] = m[e] = A(m, me)[e], m
|
|
}, m.open = function(me) {
|
|
if (J = {}, i(me) ? J = me.call(m, ke, fe, m, z) : a(me) && (J = me), a(J))
|
|
for (var qe in J) r.call(J, qe) && (ke[qe] = J[qe]);
|
|
return i(ke.init) || (ke.init = z), m
|
|
}, m.open(ae)
|
|
}
|
|
return A
|
|
}("prototype", {}.hasOwnProperty),
|
|
Q = {
|
|
ease: ["ease", function(e, r, o, a) {
|
|
var i = (e /= a) * e,
|
|
s = i * e;
|
|
return r + o * (-2.75 * s * i + 11 * i * i + -15.5 * s + 8 * i + .25 * e)
|
|
}],
|
|
"ease-in": ["ease-in", function(e, r, o, a) {
|
|
var i = (e /= a) * e,
|
|
s = i * e;
|
|
return r + o * (-1 * s * i + 3 * i * i + -3 * s + 2 * i)
|
|
}],
|
|
"ease-out": ["ease-out", function(e, r, o, a) {
|
|
var i = (e /= a) * e,
|
|
s = i * e;
|
|
return r + o * (.3 * s * i + -1.6 * i * i + 2.2 * s + -1.8 * i + 1.9 * e)
|
|
}],
|
|
"ease-in-out": ["ease-in-out", function(e, r, o, a) {
|
|
var i = (e /= a) * e,
|
|
s = i * e;
|
|
return r + o * (2 * s * i + -5 * i * i + 2 * s + 2 * i)
|
|
}],
|
|
linear: ["linear", function(e, r, o, a) {
|
|
return o * e / a + r
|
|
}],
|
|
"ease-in-quad": ["cubic-bezier(0.550, 0.085, 0.680, 0.530)", function(e, r, o, a) {
|
|
return o * (e /= a) * e + r
|
|
}],
|
|
"ease-out-quad": ["cubic-bezier(0.250, 0.460, 0.450, 0.940)", function(e, r, o, a) {
|
|
return -o * (e /= a) * (e - 2) + r
|
|
}],
|
|
"ease-in-out-quad": ["cubic-bezier(0.455, 0.030, 0.515, 0.955)", function(e, r, o, a) {
|
|
return (e /= a / 2) < 1 ? o / 2 * e * e + r : -o / 2 * (--e * (e - 2) - 1) + r
|
|
}],
|
|
"ease-in-cubic": ["cubic-bezier(0.550, 0.055, 0.675, 0.190)", function(e, r, o, a) {
|
|
return o * (e /= a) * e * e + r
|
|
}],
|
|
"ease-out-cubic": ["cubic-bezier(0.215, 0.610, 0.355, 1)", function(e, r, o, a) {
|
|
return o * ((e = e / a - 1) * e * e + 1) + r
|
|
}],
|
|
"ease-in-out-cubic": ["cubic-bezier(0.645, 0.045, 0.355, 1)", function(e, r, o, a) {
|
|
return (e /= a / 2) < 1 ? o / 2 * e * e * e + r : o / 2 * ((e -= 2) * e * e + 2) + r
|
|
}],
|
|
"ease-in-quart": ["cubic-bezier(0.895, 0.030, 0.685, 0.220)", function(e, r, o, a) {
|
|
return o * (e /= a) * e * e * e + r
|
|
}],
|
|
"ease-out-quart": ["cubic-bezier(0.165, 0.840, 0.440, 1)", function(e, r, o, a) {
|
|
return -o * ((e = e / a - 1) * e * e * e - 1) + r
|
|
}],
|
|
"ease-in-out-quart": ["cubic-bezier(0.770, 0, 0.175, 1)", function(e, r, o, a) {
|
|
return (e /= a / 2) < 1 ? o / 2 * e * e * e * e + r : -o / 2 * ((e -= 2) * e * e * e - 2) + r
|
|
}],
|
|
"ease-in-quint": ["cubic-bezier(0.755, 0.050, 0.855, 0.060)", function(e, r, o, a) {
|
|
return o * (e /= a) * e * e * e * e + r
|
|
}],
|
|
"ease-out-quint": ["cubic-bezier(0.230, 1, 0.320, 1)", function(e, r, o, a) {
|
|
return o * ((e = e / a - 1) * e * e * e * e + 1) + r
|
|
}],
|
|
"ease-in-out-quint": ["cubic-bezier(0.860, 0, 0.070, 1)", function(e, r, o, a) {
|
|
return (e /= a / 2) < 1 ? o / 2 * e * e * e * e * e + r : o / 2 * ((e -= 2) * e * e * e * e + 2) + r
|
|
}],
|
|
"ease-in-sine": ["cubic-bezier(0.470, 0, 0.745, 0.715)", function(e, r, o, a) {
|
|
return -o * Math.cos(e / a * (Math.PI / 2)) + o + r
|
|
}],
|
|
"ease-out-sine": ["cubic-bezier(0.390, 0.575, 0.565, 1)", function(e, r, o, a) {
|
|
return o * Math.sin(e / a * (Math.PI / 2)) + r
|
|
}],
|
|
"ease-in-out-sine": ["cubic-bezier(0.445, 0.050, 0.550, 0.950)", function(e, r, o, a) {
|
|
return -o / 2 * (Math.cos(Math.PI * e / a) - 1) + r
|
|
}],
|
|
"ease-in-expo": ["cubic-bezier(0.950, 0.050, 0.795, 0.035)", function(e, r, o, a) {
|
|
return e === 0 ? r : o * Math.pow(2, 10 * (e / a - 1)) + r
|
|
}],
|
|
"ease-out-expo": ["cubic-bezier(0.190, 1, 0.220, 1)", function(e, r, o, a) {
|
|
return e === a ? r + o : o * (-Math.pow(2, -10 * e / a) + 1) + r
|
|
}],
|
|
"ease-in-out-expo": ["cubic-bezier(1, 0, 0, 1)", function(e, r, o, a) {
|
|
return e === 0 ? r : e === a ? r + o : (e /= a / 2) < 1 ? o / 2 * Math.pow(2, 10 * (e - 1)) + r : o / 2 * (-Math.pow(2, -10 * --e) + 2) + r
|
|
}],
|
|
"ease-in-circ": ["cubic-bezier(0.600, 0.040, 0.980, 0.335)", function(e, r, o, a) {
|
|
return -o * (Math.sqrt(1 - (e /= a) * e) - 1) + r
|
|
}],
|
|
"ease-out-circ": ["cubic-bezier(0.075, 0.820, 0.165, 1)", function(e, r, o, a) {
|
|
return o * Math.sqrt(1 - (e = e / a - 1) * e) + r
|
|
}],
|
|
"ease-in-out-circ": ["cubic-bezier(0.785, 0.135, 0.150, 0.860)", function(e, r, o, a) {
|
|
return (e /= a / 2) < 1 ? -o / 2 * (Math.sqrt(1 - e * e) - 1) + r : o / 2 * (Math.sqrt(1 - (e -= 2) * e) + 1) + r
|
|
}],
|
|
"ease-in-back": ["cubic-bezier(0.600, -0.280, 0.735, 0.045)", function(e, r, o, a, i) {
|
|
return i === void 0 && (i = 1.70158), o * (e /= a) * e * ((i + 1) * e - i) + r
|
|
}],
|
|
"ease-out-back": ["cubic-bezier(0.175, 0.885, 0.320, 1.275)", function(e, r, o, a, i) {
|
|
return i === void 0 && (i = 1.70158), o * ((e = e / a - 1) * e * ((i + 1) * e + i) + 1) + r
|
|
}],
|
|
"ease-in-out-back": ["cubic-bezier(0.680, -0.550, 0.265, 1.550)", function(e, r, o, a, i) {
|
|
return i === void 0 && (i = 1.70158), (e /= a / 2) < 1 ? o / 2 * e * e * (((i *= 1.525) + 1) * e - i) + r : o / 2 * ((e -= 2) * e * (((i *= 1.525) + 1) * e + i) + 2) + r
|
|
}]
|
|
},
|
|
k = {
|
|
"ease-in-back": "cubic-bezier(0.600, 0, 0.735, 0.045)",
|
|
"ease-out-back": "cubic-bezier(0.175, 0.885, 0.320, 1)",
|
|
"ease-in-out-back": "cubic-bezier(0.680, 0, 0.265, 1)"
|
|
},
|
|
q = document,
|
|
Y = window,
|
|
K = "bkwld-tram",
|
|
H = /[\-\.0-9]/g,
|
|
F = /[A-Z]/,
|
|
g = "number",
|
|
M = /^(rgb|#)/,
|
|
E = /(em|cm|mm|in|pt|pc|px)$/,
|
|
$ = /(em|cm|mm|in|pt|pc|px|%)$/,
|
|
ue = /(deg|rad|turn)$/,
|
|
de = "unitless",
|
|
pe = /(all|none) 0s ease 0s/,
|
|
Ae = /^(width|height)$/,
|
|
we = " ",
|
|
O = q.createElement("a"),
|
|
u = ["Webkit", "Moz", "O", "ms"],
|
|
d = ["-webkit-", "-moz-", "-o-", "-ms-"],
|
|
x = function(e) {
|
|
if (e in O.style) return {
|
|
dom: e,
|
|
css: e
|
|
};
|
|
var r, o, a = "",
|
|
i = e.split("-");
|
|
for (r = 0; r < i.length; r++) a += i[r].charAt(0).toUpperCase() + i[r].slice(1);
|
|
for (r = 0; r < u.length; r++)
|
|
if (o = u[r] + a, o in O.style) return {
|
|
dom: o,
|
|
css: d[r] + e
|
|
}
|
|
},
|
|
b = f.support = {
|
|
bind: Function.prototype.bind,
|
|
transform: x("transform"),
|
|
transition: x("transition"),
|
|
backface: x("backface-visibility"),
|
|
timing: x("transition-timing-function")
|
|
};
|
|
if (b.transition) {
|
|
var U = b.timing.dom;
|
|
if (O.style[U] = Q["ease-in-back"][0], !O.style[U])
|
|
for (var N in k) Q[N][0] = k[N]
|
|
}
|
|
var c = f.frame = function() {
|
|
var e = Y.requestAnimationFrame || Y.webkitRequestAnimationFrame || Y.mozRequestAnimationFrame || Y.oRequestAnimationFrame || Y.msRequestAnimationFrame;
|
|
return e && b.bind ? e.bind(Y) : function(r) {
|
|
Y.setTimeout(r, 16)
|
|
}
|
|
}(),
|
|
y = f.now = function() {
|
|
var e = Y.performance,
|
|
r = e && (e.now || e.webkitNow || e.msNow || e.mozNow);
|
|
return r && b.bind ? r.bind(e) : Date.now || function() {
|
|
return +new Date
|
|
}
|
|
}(),
|
|
L = X(function(e) {
|
|
function r(R, ee) {
|
|
var ce = te(("" + R).split(we)),
|
|
re = ce[0];
|
|
ee = ee || {};
|
|
var ge = w[re];
|
|
if (!ge) return G("Unsupported property: " + re);
|
|
if (!ee.weak || !this.props[re]) {
|
|
var Ee = ge[0],
|
|
be = this.props[re];
|
|
return be || (be = this.props[re] = new Ee.Bare), be.init(this.$el, ce, ge, ee), be
|
|
}
|
|
}
|
|
|
|
function o(R, ee, ce) {
|
|
if (R) {
|
|
var re = typeof R;
|
|
if (ee || (this.timer && this.timer.destroy(), this.queue = [], this.active = false), re == "number" && ee) return this.timer = new oe({
|
|
duration: R,
|
|
context: this,
|
|
complete: s
|
|
}), void(this.active = true);
|
|
if (re == "string" && ee) {
|
|
switch (R) {
|
|
case "hide":
|
|
m.call(this);
|
|
break;
|
|
case "stop":
|
|
A.call(this);
|
|
break;
|
|
case "redraw":
|
|
V.call(this);
|
|
break;
|
|
default:
|
|
r.call(this, R, ce && ce[1])
|
|
}
|
|
return s.call(this)
|
|
}
|
|
if (re == "function") return void R.call(this, this);
|
|
if (re == "object") {
|
|
var ge = 0;
|
|
ke.call(this, R, function(le, Ut) {
|
|
le.span > ge && (ge = le.span), le.stop(), le.animate(Ut)
|
|
}, function(le) {
|
|
"wait" in le && (ge = P(le.wait, 0))
|
|
}), fe.call(this), ge > 0 && (this.timer = new oe({
|
|
duration: ge,
|
|
context: this
|
|
}), this.active = true, ee && (this.timer.complete = s));
|
|
var Ee = this,
|
|
be = false,
|
|
Ne = {};
|
|
c(function() {
|
|
ke.call(Ee, R, function(le) {
|
|
le.active && (be = true, Ne[le.name] = le.nextStyle)
|
|
}), be && Ee.$el.css(Ne)
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
function a(R) {
|
|
R = P(R, 0), this.active ? this.queue.push({
|
|
options: R
|
|
}) : (this.timer = new oe({
|
|
duration: R,
|
|
context: this,
|
|
complete: s
|
|
}), this.active = true)
|
|
}
|
|
|
|
function i(R) {
|
|
return this.active ? (this.queue.push({
|
|
options: R,
|
|
args: arguments
|
|
}), void(this.timer.complete = s)) : G("No active transition timer. Use start() or wait() before then().")
|
|
}
|
|
|
|
function s() {
|
|
if (this.timer && this.timer.destroy(), this.active = false, this.queue.length) {
|
|
var R = this.queue.shift();
|
|
o.call(this, R.options, true, R.args)
|
|
}
|
|
}
|
|
|
|
function A(R) {
|
|
this.timer && this.timer.destroy(), this.queue = [], this.active = false;
|
|
var ee;
|
|
typeof R == "string" ? (ee = {}, ee[R] = 1) : ee = typeof R == "object" && R != null ? R : this.props, ke.call(this, ee, me), fe.call(this)
|
|
}
|
|
|
|
function z(R) {
|
|
A.call(this, R), ke.call(this, R, qe, zt)
|
|
}
|
|
|
|
function ae(R) {
|
|
typeof R != "string" && (R = "block"), this.el.style.display = R
|
|
}
|
|
|
|
function m() {
|
|
A.call(this), this.el.style.display = "none"
|
|
}
|
|
|
|
function V() {
|
|
this.el.offsetHeight
|
|
}
|
|
|
|
function J() {
|
|
A.call(this), t.removeData(this.el, K), this.$el = this.el = null
|
|
}
|
|
|
|
function fe() {
|
|
var R, ee, ce = [];
|
|
this.upstream && ce.push(this.upstream);
|
|
for (R in this.props) ee = this.props[R], ee.active && ce.push(ee.string);
|
|
ce = ce.join(","), this.style !== ce && (this.style = ce, this.el.style[b.transition.dom] = ce)
|
|
}
|
|
|
|
function ke(R, ee, ce) {
|
|
var re, ge, Ee, be, Ne = ee !== me,
|
|
le = {};
|
|
for (re in R) Ee = R[re], re in se ? (le.transform || (le.transform = {}), le.transform[re] = Ee) : (F.test(re) && (re = l(re)), re in w ? le[re] = Ee : (be || (be = {}), be[re] = Ee));
|
|
for (re in le) {
|
|
if (Ee = le[re], ge = this.props[re], !ge) {
|
|
if (!Ne) continue;
|
|
ge = r.call(this, re)
|
|
}
|
|
ee.call(this, ge, Ee)
|
|
}
|
|
ce && be && ce.call(this, be)
|
|
}
|
|
|
|
function me(R) {
|
|
R.stop()
|
|
}
|
|
|
|
function qe(R, ee) {
|
|
R.set(ee)
|
|
}
|
|
|
|
function zt(R) {
|
|
this.$el.css(R)
|
|
}
|
|
|
|
function ye(R, ee) {
|
|
e[R] = function() {
|
|
return this.children ? Ht.call(this, ee, arguments) : (this.el && ee.apply(this, arguments), this)
|
|
}
|
|
}
|
|
|
|
function Ht(R, ee) {
|
|
var ce, re = this.children.length;
|
|
for (ce = 0; re > ce; ce++) R.apply(this.children[ce], ee);
|
|
return this
|
|
}
|
|
e.init = function(R) {
|
|
if (this.$el = t(R), this.el = this.$el[0], this.props = {}, this.queue = [], this.style = "", this.active = false, ne.keepInherited && !ne.fallback) {
|
|
var ee = p(this.el, "transition");
|
|
ee && !pe.test(ee) && (this.upstream = ee)
|
|
}
|
|
b.backface && ne.hideBackface && n(this.el, b.backface.css, "hidden")
|
|
}, ye("add", r), ye("start", o), ye("wait", a), ye("then", i), ye("next", s), ye("stop", A), ye("set", z), ye("show", ae), ye("hide", m), ye("redraw", V), ye("destroy", J)
|
|
}),
|
|
v = X(L, function(e) {
|
|
function r(o, a) {
|
|
var i = t.data(o, K) || t.data(o, K, new L.Bare);
|
|
return i.el || i.init(o), a ? i.start(a) : i
|
|
}
|
|
e.init = function(o, a) {
|
|
var i = t(o);
|
|
if (!i.length) return this;
|
|
if (i.length === 1) return r(i[0], a);
|
|
var s = [];
|
|
return i.each(function(A, z) {
|
|
s.push(r(z, a))
|
|
}), this.children = s, this
|
|
}
|
|
}),
|
|
h = X(function(e) {
|
|
function r() {
|
|
var s = this.get();
|
|
this.update("auto");
|
|
var A = this.get();
|
|
return this.update(s), A
|
|
}
|
|
|
|
function o(s, A, z) {
|
|
return A !== void 0 && (z = A), s in Q ? s : z
|
|
}
|
|
|
|
function a(s) {
|
|
var A = /rgba?\((\d+),\s*(\d+),\s*(\d+)/.exec(s);
|
|
return (A ? B(A[1], A[2], A[3]) : s).replace(/#(\w)(\w)(\w)$/, "#$1$1$2$2$3$3")
|
|
}
|
|
var i = {
|
|
duration: 500,
|
|
ease: "ease",
|
|
delay: 0
|
|
};
|
|
e.init = function(s, A, z, ae) {
|
|
this.$el = s, this.el = s[0];
|
|
var m = A[0];
|
|
z[2] && (m = z[2]), S[m] && (m = S[m]), this.name = m, this.type = z[1], this.duration = P(A[1], this.duration, i.duration), this.ease = o(A[2], this.ease, i.ease), this.delay = P(A[3], this.delay, i.delay), this.span = this.duration + this.delay, this.active = false, this.nextStyle = null, this.auto = Ae.test(this.name), this.unit = ae.unit || this.unit || ne.defaultUnit, this.angle = ae.angle || this.angle || ne.defaultAngle, ne.fallback || ae.fallback ? this.animate = this.fallback : (this.animate = this.transition, this.string = this.name + we + this.duration + "ms" + (this.ease != "ease" ? we + Q[this.ease][0] : "") + (this.delay ? we + this.delay + "ms" : ""))
|
|
}, e.set = function(s) {
|
|
s = this.convert(s, this.type), this.update(s), this.redraw()
|
|
}, e.transition = function(s) {
|
|
this.active = true, s = this.convert(s, this.type), this.auto && (this.el.style[this.name] == "auto" && (this.update(this.get()), this.redraw()), s == "auto" && (s = r.call(this))), this.nextStyle = s
|
|
}, e.fallback = function(s) {
|
|
var A = this.el.style[this.name] || this.convert(this.get(), this.type);
|
|
s = this.convert(s, this.type), this.auto && (A == "auto" && (A = this.convert(this.get(), this.type)), s == "auto" && (s = r.call(this))), this.tween = new W({
|
|
from: A,
|
|
to: s,
|
|
duration: this.duration,
|
|
delay: this.delay,
|
|
ease: this.ease,
|
|
update: this.update,
|
|
context: this
|
|
})
|
|
}, e.get = function() {
|
|
return p(this.el, this.name)
|
|
}, e.update = function(s) {
|
|
n(this.el, this.name, s)
|
|
}, e.stop = function() {
|
|
(this.active || this.nextStyle) && (this.active = false, this.nextStyle = null, n(this.el, this.name, this.get()));
|
|
var s = this.tween;
|
|
s && s.context && s.destroy()
|
|
}, e.convert = function(s, A) {
|
|
if (s == "auto" && this.auto) return s;
|
|
var z, ae = typeof s == "number",
|
|
m = typeof s == "string";
|
|
switch (A) {
|
|
case g:
|
|
if (ae) return s;
|
|
if (m && s.replace(H, "") === "") return +s;
|
|
z = "number(unitless)";
|
|
break;
|
|
case M:
|
|
if (m) {
|
|
if (s === "" && this.original) return this.original;
|
|
if (A.test(s)) return s.charAt(0) == "#" && s.length == 7 ? s : a(s)
|
|
}
|
|
z = "hex or rgb string";
|
|
break;
|
|
case E:
|
|
if (ae) return s + this.unit;
|
|
if (m && A.test(s)) return s;
|
|
z = "number(px) or string(unit)";
|
|
break;
|
|
case $:
|
|
if (ae) return s + this.unit;
|
|
if (m && A.test(s)) return s;
|
|
z = "number(px) or string(unit or %)";
|
|
break;
|
|
case ue:
|
|
if (ae) return s + this.angle;
|
|
if (m && A.test(s)) return s;
|
|
z = "number(deg) or string(angle)";
|
|
break;
|
|
case de:
|
|
if (ae || m && $.test(s)) return s;
|
|
z = "number(unitless) or string(unit or %)"
|
|
}
|
|
return D(z, s), s
|
|
}, e.redraw = function() {
|
|
this.el.offsetHeight
|
|
}
|
|
}),
|
|
I = X(h, function(e, r) {
|
|
e.init = function() {
|
|
r.init.apply(this, arguments), this.original || (this.original = this.convert(this.get(), M))
|
|
}
|
|
}),
|
|
j = X(h, function(e, r) {
|
|
e.init = function() {
|
|
r.init.apply(this, arguments), this.animate = this.fallback
|
|
}, e.get = function() {
|
|
return this.$el[this.name]()
|
|
}, e.update = function(o) {
|
|
this.$el[this.name](o)
|
|
}
|
|
}),
|
|
Z = X(h, function(e, r) {
|
|
function o(a, i) {
|
|
var s, A, z, ae, m;
|
|
for (s in a) ae = se[s], z = ae[0], A = ae[1] || s, m = this.convert(a[s], z), i.call(this, A, m, z)
|
|
}
|
|
e.init = function() {
|
|
r.init.apply(this, arguments), this.current || (this.current = {}, se.perspective && ne.perspective && (this.current.perspective = ne.perspective, n(this.el, this.name, this.style(this.current)), this.redraw()))
|
|
}, e.set = function(a) {
|
|
o.call(this, a, function(i, s) {
|
|
this.current[i] = s
|
|
}), n(this.el, this.name, this.style(this.current)), this.redraw()
|
|
}, e.transition = function(a) {
|
|
var i = this.values(a);
|
|
this.tween = new Te({
|
|
current: this.current,
|
|
values: i,
|
|
duration: this.duration,
|
|
delay: this.delay,
|
|
ease: this.ease
|
|
});
|
|
var s, A = {};
|
|
for (s in this.current) A[s] = s in i ? i[s] : this.current[s];
|
|
this.active = true, this.nextStyle = this.style(A)
|
|
}, e.fallback = function(a) {
|
|
var i = this.values(a);
|
|
this.tween = new Te({
|
|
current: this.current,
|
|
values: i,
|
|
duration: this.duration,
|
|
delay: this.delay,
|
|
ease: this.ease,
|
|
update: this.update,
|
|
context: this
|
|
})
|
|
}, e.update = function() {
|
|
n(this.el, this.name, this.style(this.current))
|
|
}, e.style = function(a) {
|
|
var i, s = "";
|
|
for (i in a) s += i + "(" + a[i] + ") ";
|
|
return s
|
|
}, e.values = function(a) {
|
|
var i, s = {};
|
|
return o.call(this, a, function(A, z, ae) {
|
|
s[A] = z, this.current[A] === void 0 && (i = 0, ~A.indexOf("scale") && (i = 1), this.current[A] = this.convert(i, ae))
|
|
}), s
|
|
}
|
|
}),
|
|
W = X(function(e) {
|
|
function r(m) {
|
|
z.push(m) === 1 && c(o)
|
|
}
|
|
|
|
function o() {
|
|
var m, V, J, fe = z.length;
|
|
if (fe)
|
|
for (c(o), V = y(), m = fe; m--;) J = z[m], J && J.render(V)
|
|
}
|
|
|
|
function a(m) {
|
|
var V, J = t.inArray(m, z);
|
|
J >= 0 && (V = z.slice(J + 1), z.length = J, V.length && (z = z.concat(V)))
|
|
}
|
|
|
|
function i(m) {
|
|
return Math.round(m * ae) / ae
|
|
}
|
|
|
|
function s(m, V, J) {
|
|
return B(m[0] + J * (V[0] - m[0]), m[1] + J * (V[1] - m[1]), m[2] + J * (V[2] - m[2]))
|
|
}
|
|
var A = {
|
|
ease: Q.ease[1],
|
|
from: 0,
|
|
to: 1
|
|
};
|
|
e.init = function(m) {
|
|
this.duration = m.duration || 0, this.delay = m.delay || 0;
|
|
var V = m.ease || A.ease;
|
|
Q[V] && (V = Q[V][1]), typeof V != "function" && (V = A.ease), this.ease = V, this.update = m.update || _, this.complete = m.complete || _, this.context = m.context || this, this.name = m.name;
|
|
var J = m.from,
|
|
fe = m.to;
|
|
J === void 0 && (J = A.from), fe === void 0 && (fe = A.to), this.unit = m.unit || "", typeof J == "number" && typeof fe == "number" ? (this.begin = J, this.change = fe - J) : this.format(fe, J), this.value = this.begin + this.unit, this.start = y(), m.autoplay !== false && this.play()
|
|
}, e.play = function() {
|
|
this.active || (this.start || (this.start = y()), this.active = true, r(this))
|
|
}, e.stop = function() {
|
|
this.active && (this.active = false, a(this))
|
|
}, e.render = function(m) {
|
|
var V, J = m - this.start;
|
|
if (this.delay) {
|
|
if (J <= this.delay) return;
|
|
J -= this.delay
|
|
}
|
|
if (J < this.duration) {
|
|
var fe = this.ease(J, 0, 1, this.duration);
|
|
return V = this.startRGB ? s(this.startRGB, this.endRGB, fe) : i(this.begin + fe * this.change), this.value = V + this.unit, void this.update.call(this.context, this.value)
|
|
}
|
|
V = this.endHex || this.begin + this.change, this.value = V + this.unit, this.update.call(this.context, this.value), this.complete.call(this.context), this.destroy()
|
|
}, e.format = function(m, V) {
|
|
if (V += "", m += "", m.charAt(0) == "#") return this.startRGB = T(V), this.endRGB = T(m), this.endHex = m, this.begin = 0, void(this.change = 1);
|
|
if (!this.unit) {
|
|
var J = V.replace(H, ""),
|
|
fe = m.replace(H, "");
|
|
J !== fe && C("tween", V, m), this.unit = J
|
|
}
|
|
V = parseFloat(V), m = parseFloat(m), this.begin = this.value = V, this.change = m - V
|
|
}, e.destroy = function() {
|
|
this.stop(), this.context = null, this.ease = this.update = this.complete = _
|
|
};
|
|
var z = [],
|
|
ae = 1e3
|
|
}),
|
|
oe = X(W, function(e) {
|
|
e.init = function(r) {
|
|
this.duration = r.duration || 0, this.complete = r.complete || _, this.context = r.context, this.play()
|
|
}, e.render = function(r) {
|
|
var o = r - this.start;
|
|
o < this.duration || (this.complete.call(this.context), this.destroy())
|
|
}
|
|
}),
|
|
Te = X(W, function(e, r) {
|
|
e.init = function(o) {
|
|
this.context = o.context, this.update = o.update, this.tweens = [], this.current = o.current;
|
|
var a, i;
|
|
for (a in o.values) i = o.values[a], this.current[a] !== i && this.tweens.push(new W({
|
|
name: a,
|
|
from: this.current[a],
|
|
to: i,
|
|
duration: o.duration,
|
|
delay: o.delay,
|
|
ease: o.ease,
|
|
autoplay: false
|
|
}));
|
|
this.play()
|
|
}, e.render = function(o) {
|
|
var a, i, s = this.tweens.length,
|
|
A = false;
|
|
for (a = s; a--;) i = this.tweens[a], i.context && (i.render(o), this.current[i.name] = i.value, A = true);
|
|
return A ? void(this.update && this.update.call(this.context)) : this.destroy()
|
|
}, e.destroy = function() {
|
|
if (r.destroy.call(this), this.tweens) {
|
|
var o, a = this.tweens.length;
|
|
for (o = a; o--;) this.tweens[o].destroy();
|
|
this.tweens = null, this.current = null
|
|
}
|
|
}
|
|
}),
|
|
ne = f.config = {
|
|
debug: false,
|
|
defaultUnit: "px",
|
|
defaultAngle: "deg",
|
|
keepInherited: false,
|
|
hideBackface: false,
|
|
perspective: "",
|
|
fallback: !b.transition,
|
|
agentTests: []
|
|
};
|
|
f.fallback = function(e) {
|
|
if (!b.transition) return ne.fallback = true;
|
|
ne.agentTests.push("(" + e + ")");
|
|
var r = new RegExp(ne.agentTests.join("|"), "i");
|
|
ne.fallback = r.test(navigator.userAgent)
|
|
}, f.fallback("6.0.[2-5] Safari"), f.tween = function(e) {
|
|
return new W(e)
|
|
}, f.delay = function(e, r, o) {
|
|
return new oe({
|
|
complete: r,
|
|
duration: e,
|
|
context: o
|
|
})
|
|
}, t.fn.tram = function(e) {
|
|
return f.call(null, this, e)
|
|
};
|
|
var n = t.style,
|
|
p = t.css,
|
|
S = {
|
|
transform: b.transform && b.transform.css
|
|
},
|
|
w = {
|
|
color: [I, M],
|
|
background: [I, M, "background-color"],
|
|
"outline-color": [I, M],
|
|
"border-color": [I, M],
|
|
"border-top-color": [I, M],
|
|
"border-right-color": [I, M],
|
|
"border-bottom-color": [I, M],
|
|
"border-left-color": [I, M],
|
|
"border-width": [h, E],
|
|
"border-top-width": [h, E],
|
|
"border-right-width": [h, E],
|
|
"border-bottom-width": [h, E],
|
|
"border-left-width": [h, E],
|
|
"border-spacing": [h, E],
|
|
"letter-spacing": [h, E],
|
|
margin: [h, E],
|
|
"margin-top": [h, E],
|
|
"margin-right": [h, E],
|
|
"margin-bottom": [h, E],
|
|
"margin-left": [h, E],
|
|
padding: [h, E],
|
|
"padding-top": [h, E],
|
|
"padding-right": [h, E],
|
|
"padding-bottom": [h, E],
|
|
"padding-left": [h, E],
|
|
"outline-width": [h, E],
|
|
opacity: [h, g],
|
|
top: [h, $],
|
|
right: [h, $],
|
|
bottom: [h, $],
|
|
left: [h, $],
|
|
"font-size": [h, $],
|
|
"text-indent": [h, $],
|
|
"word-spacing": [h, $],
|
|
width: [h, $],
|
|
"min-width": [h, $],
|
|
"max-width": [h, $],
|
|
height: [h, $],
|
|
"min-height": [h, $],
|
|
"max-height": [h, $],
|
|
"line-height": [h, de],
|
|
"scroll-top": [j, g, "scrollTop"],
|
|
"scroll-left": [j, g, "scrollLeft"]
|
|
},
|
|
se = {};
|
|
b.transform && (w.transform = [Z], se = {
|
|
x: [$, "translateX"],
|
|
y: [$, "translateY"],
|
|
rotate: [ue],
|
|
rotateX: [ue],
|
|
rotateY: [ue],
|
|
scale: [g],
|
|
scaleX: [g],
|
|
scaleY: [g],
|
|
skew: [ue],
|
|
skewX: [ue],
|
|
skewY: [ue]
|
|
}), b.transform && b.backface && (se.z = [$, "translateZ"], se.rotateZ = [ue], se.scaleZ = [g], se.perspective = [E]);
|
|
var Ie = /ms/,
|
|
Ce = /s|\./;
|
|
return t.tram = f
|
|
}(window.jQuery)
|
|
});
|
|
var requireWebflowUnderscore = defineModule((exports, module) => {
|
|
"use strict";
|
|
var jQuery = window.$,
|
|
tram = requireTramJS() && jQuery.tram;
|
|
module.exports = function() {
|
|
var t = {};
|
|
t.VERSION = "1.6.0-Webflow";
|
|
var f = {},
|
|
l = Array.prototype,
|
|
T = Object.prototype,
|
|
B = Function.prototype,
|
|
_ = l.push,
|
|
D = l.slice,
|
|
C = l.concat,
|
|
P = T.toString,
|
|
G = T.hasOwnProperty,
|
|
te = l.forEach,
|
|
X = l.map,
|
|
Q = l.reduce,
|
|
k = l.reduceRight,
|
|
q = l.filter,
|
|
Y = l.every,
|
|
K = l.some,
|
|
H = l.indexOf,
|
|
F = l.lastIndexOf,
|
|
g = Array.isArray,
|
|
M = Object.keys,
|
|
E = B.bind,
|
|
$ = t.each = t.forEach = function(u, d, x) {
|
|
if (u == null) return u;
|
|
if (te && u.forEach === te) u.forEach(d, x);
|
|
else if (u.length === +u.length) {
|
|
for (var b = 0, U = u.length; b < U; b++)
|
|
if (d.call(x, u[b], b, u) === f) return
|
|
} else
|
|
for (var N = t.keys(u), b = 0, U = N.length; b < U; b++)
|
|
if (d.call(x, u[N[b]], N[b], u) === f) return;
|
|
return u
|
|
};
|
|
t.map = t.collect = function(u, d, x) {
|
|
var b = [];
|
|
return u == null ? b : X && u.map === X ? u.map(d, x) : ($(u, function(U, N, c) {
|
|
b.push(d.call(x, U, N, c))
|
|
}), b)
|
|
}, t.find = t.detect = function(u, d, x) {
|
|
var b;
|
|
return ue(u, function(U, N, c) {
|
|
if (d.call(x, U, N, c)) return b = U, true
|
|
}), b
|
|
}, t.filter = t.select = function(u, d, x) {
|
|
var b = [];
|
|
return u == null ? b : q && u.filter === q ? u.filter(d, x) : ($(u, function(U, N, c) {
|
|
d.call(x, U, N, c) && b.push(U)
|
|
}), b)
|
|
};
|
|
var ue = t.some = t.any = function(u, d, x) {
|
|
d || (d = t.identity);
|
|
var b = false;
|
|
return u == null ? b : K && u.some === K ? u.some(d, x) : ($(u, function(U, N, c) {
|
|
if (b || (b = d.call(x, U, N, c))) return f
|
|
}), !!b)
|
|
};
|
|
t.contains = t.include = function(u, d) {
|
|
return u == null ? false : H && u.indexOf === H ? u.indexOf(d) != -1 : ue(u, function(x) {
|
|
return x === d
|
|
})
|
|
}, t.delay = function(u, d) {
|
|
var x = D.call(arguments, 2);
|
|
return setTimeout(function() {
|
|
return u.apply(null, x)
|
|
}, d)
|
|
}, t.defer = function(u) {
|
|
return t.delay.apply(t, [u, 1].concat(D.call(arguments, 1)))
|
|
}, t.throttle = function(u) {
|
|
var d, x, b;
|
|
return function() {
|
|
d || (d = true, x = arguments, b = this, tram.frame(function() {
|
|
d = false, u.apply(b, x)
|
|
}))
|
|
}
|
|
}, t.debounce = function(u, d, x) {
|
|
var b, U, N, c, y, L = function() {
|
|
var v = t.now() - c;
|
|
v < d ? b = setTimeout(L, d - v) : (b = null, x || (y = u.apply(N, U), N = U = null))
|
|
};
|
|
return function() {
|
|
N = this, U = arguments, c = t.now();
|
|
var v = x && !b;
|
|
return b || (b = setTimeout(L, d)), v && (y = u.apply(N, U), N = U = null), y
|
|
}
|
|
}, t.defaults = function(u) {
|
|
if (!t.isObject(u)) return u;
|
|
for (var d = 1, x = arguments.length; d < x; d++) {
|
|
var b = arguments[d];
|
|
for (var U in b) u[U] === void 0 && (u[U] = b[U])
|
|
}
|
|
return u
|
|
}, t.keys = function(u) {
|
|
if (!t.isObject(u)) return [];
|
|
if (M) return M(u);
|
|
var d = [];
|
|
for (var x in u) t.has(u, x) && d.push(x);
|
|
return d
|
|
}, t.has = function(u, d) {
|
|
return G.call(u, d)
|
|
}, t.isObject = function(u) {
|
|
return u === Object(u)
|
|
}, t.now = Date.now || function() {
|
|
return new Date().getTime()
|
|
}, t.templateSettings = {
|
|
evaluate: /<%([\s\S]+?)%>/g,
|
|
interpolate: /<%=([\s\S]+?)%>/g,
|
|
escape: /<%-([\s\S]+?)%>/g
|
|
};
|
|
var de = /(.)^/,
|
|
pe = {
|
|
"'": "'",
|
|
"\\": "\\",
|
|
"\r": "r",
|
|
"\n": "n",
|
|
"\u2028": "u2028",
|
|
"\u2029": "u2029"
|
|
},
|
|
Ae = /\\|'|\r|\n|\u2028|\u2029/g,
|
|
we = function(u) {
|
|
return "\\" + pe[u]
|
|
},
|
|
O = /^\s*(\w|\$)+\s*$/;
|
|
return t.template = function(u, d, x) {
|
|
!d && x && (d = x), d = t.defaults({}, d, t.templateSettings);
|
|
var b = RegExp([(d.escape || de).source, (d.interpolate || de).source, (d.evaluate || de).source].join("|") + "|$", "g"),
|
|
U = 0,
|
|
N = "__p+='";
|
|
u.replace(b, function(v, h, I, j, Z) {
|
|
return N += u.slice(U, Z).replace(Ae, we), U = Z + v.length, h ? N += `'+
|
|
((__t=(` + h + `))==null?'':_.escape(__t))+
|
|
'` : I ? N += `'+
|
|
((__t=(` + I + `))==null?'':__t)+
|
|
'` : j && (N += `';
|
|
` + j + `
|
|
__p+='`), v
|
|
}), N += `';
|
|
`;
|
|
var c = d.variable;
|
|
if (c) {
|
|
if (!O.test(c)) throw new Error("variable is not a bare identifier: " + c)
|
|
} else N = `with(obj||{}){
|
|
` + N + `}
|
|
`, c = "obj";
|
|
N = `var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};
|
|
` + N + `return __p;
|
|
`;
|
|
var y;
|
|
try {
|
|
y = new Function(d.variable || "obj", "_", N)
|
|
} catch (v) {
|
|
throw v.source = N, v
|
|
}
|
|
var L = function(v) {
|
|
return y.call(this, v, t)
|
|
};
|
|
return L.source = "function(" + c + `){
|
|
` + N + "}", L
|
|
}, t
|
|
}()
|
|
});
|
|
var requireWebflow = defineModule((exports, module) => {
|
|
"use strict";
|
|
var Webflow = {},
|
|
webflowModules = {},
|
|
De = [],
|
|
Ye = window.Webflow || [],
|
|
jQuery = window.jQuery,
|
|
underscore = Webflow._ = requireWebflowUnderscore(),
|
|
tram = Webflow.tram = requireTramJS() && jQuery.tram,
|
|
He = false,
|
|
je = false;
|
|
tram.config.hideBackface = false;
|
|
tram.config.keepInherited = true;
|
|
Webflow.define = function(t, f, l) {
|
|
webflowModules[t] && deactivate(webflowModules[t]);
|
|
var T = webflowModules[t] = f(jQuery, underscore, l) || {};
|
|
return activate(T), T
|
|
};
|
|
Webflow.require = function(t) {
|
|
return webflowModules[t]
|
|
};
|
|
|
|
function activate(t) {
|
|
Webflow.env() && (jQuery.isFunction(t.design) && jQuery(window).on("__wf_design", t.design), jQuery.isFunction(t.preview) && jQuery(window).on("__wf_preview", t.preview)), jQuery.isFunction(t.destroy) && jQuery(window).on("__wf_destroy", t.destroy), t.ready && jQuery.isFunction(t.ready) && Kt(t)
|
|
}
|
|
|
|
function Kt(t) {
|
|
if (He) {
|
|
t.ready();
|
|
return
|
|
}
|
|
underscore.contains(De, t.ready) || De.push(t.ready)
|
|
}
|
|
|
|
function deactivate(t) {
|
|
jQuery.isFunction(t.design) && jQuery(window).off("__wf_design", t.design), jQuery.isFunction(t.preview) && jQuery(window).off("__wf_preview", t.preview), jQuery.isFunction(t.destroy) && jQuery(window).off("__wf_destroy", t.destroy), t.ready && jQuery.isFunction(t.ready) && Vt(t)
|
|
}
|
|
|
|
function Vt(t) {
|
|
De = underscore.filter(De, function(f) {
|
|
return f !== t.ready
|
|
})
|
|
}
|
|
Webflow.push = function(t) {
|
|
if (He) {
|
|
jQuery.isFunction(t) && t();
|
|
return
|
|
}
|
|
Ye.push(t)
|
|
};
|
|
Webflow.env = function(t) {
|
|
var f = window.__wf_design,
|
|
l = typeof f < "u";
|
|
if (!t) return l;
|
|
if (t === "design") return l && f;
|
|
if (t === "preview") return l && !f;
|
|
if (t === "slug") return l && window.__wf_slug;
|
|
if (t === "editor") return window.WebflowEditor;
|
|
if (t === "test") return window.__wf_test;
|
|
if (t === "frame") return window !== window.top
|
|
};
|
|
var ze = navigator.userAgent.toLowerCase(),
|
|
ut = Webflow.env.touch = "ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch,
|
|
Gt = Webflow.env.chrome = /chrome/.test(ze) && /Google/.test(navigator.vendor) && parseInt(ze.match(/chrome\/(\d+)\./)[1], 10),
|
|
Yt = Webflow.env.ios = /(ipod|iphone|ipad)/.test(ze);
|
|
Webflow.env.safari = /safari/.test(ze) && !Gt && !Yt;
|
|
var Ge;
|
|
ut && jQuery(document).on("touchstart mousedown", function(t) {
|
|
Ge = t.target
|
|
});
|
|
Webflow.validClick = ut ? function(t) {
|
|
return t === Ge || jQuery.contains(t, Ge)
|
|
} : function() {
|
|
returntrue
|
|
};
|
|
var ct = "resize.webflow orientationchange.webflow load.webflow",
|
|
jt = "scroll.webflow " + ct;
|
|
Webflow.resize = Ze(jQuery(window), ct);
|
|
Webflow.scroll = Ze(jQuery(window), jt);
|
|
Webflow.redraw = Ze();
|
|
|
|
function Ze(t, f) {
|
|
var l = [],
|
|
T = {};
|
|
return T.up = underscore.throttle(function(B) {
|
|
underscore.each(l, function(_) {
|
|
_(B)
|
|
})
|
|
}), t && f && t.on(f, T.up), T.on = function(B) {
|
|
typeof B == "function" && (underscore.contains(l, B) || l.push(B))
|
|
}, T.off = function(B) {
|
|
if (!arguments.length) {
|
|
l = [];
|
|
return
|
|
}
|
|
l = underscore.filter(l, function(_) {
|
|
return _ !== B
|
|
})
|
|
}, T
|
|
}
|
|
Webflow.location = function(t) {
|
|
window.location = t
|
|
};
|
|
Webflow.env() && (Webflow.location = function() {});
|
|
Webflow.ready = function() {
|
|
He = true, je ? Zt() : underscore.each(De, it), underscore.each(Ye, it), Webflow.resize.up()
|
|
};
|
|
|
|
function it(t) {
|
|
jQuery.isFunction(t) && t()
|
|
}
|
|
|
|
function Zt() {
|
|
je = false, underscore.each(webflowModules, activate)
|
|
}
|
|
var Re;
|
|
Webflow.load = function(t) {
|
|
Re.then(t)
|
|
};
|
|
|
|
function ft() {
|
|
Re && (Re.reject(), jQuery(window).off("load", Re.resolve)), Re = new jQuery.Deferred, jQuery(window).on("load", Re.resolve)
|
|
}
|
|
Webflow.destroy = function(t) {
|
|
t = t || {}, je = true, jQuery(window).triggerHandler("__wf_destroy"), t.domready != null && (He = t.domready), underscore.each(webflowModules, deactivate), Webflow.resize.off(), Webflow.scroll.off(), Webflow.redraw.off(), De = [], Ye = [], Re.state() === "pending" && ft()
|
|
};
|
|
jQuery(Webflow.ready);
|
|
ft();
|
|
module.exports = window.Webflow = Webflow
|
|
});
|
|
var requireWebflowFocusVisible = defineModule((exports, module) => {
|
|
"use strict";
|
|
var Webflow = requireWebflow();
|
|
Webflow.define("focus-visible", module.exports = function() {
|
|
function t(l) {
|
|
var T = true,
|
|
B = false,
|
|
_ = null,
|
|
D = {
|
|
text: true,
|
|
search: true,
|
|
url: true,
|
|
tel: true,
|
|
email: true,
|
|
password: true,
|
|
number: true,
|
|
date: true,
|
|
month: true,
|
|
week: true,
|
|
time: true,
|
|
datetime: true,
|
|
"datetime-local": true
|
|
};
|
|
|
|
function C(g) {
|
|
return !!(g && g !== document && g.nodeName !== "HTML" && g.nodeName !== "BODY" && "classList" in g && "contains" in g.classList)
|
|
}
|
|
|
|
function P(g) {
|
|
var M = g.type,
|
|
E = g.tagName;
|
|
return !!(E === "INPUT" && D[M] && !g.readOnly || E === "TEXTAREA" && !g.readOnly || g.isContentEditable)
|
|
}
|
|
|
|
function G(g) {
|
|
g.getAttribute("data-wf-focus-visible") || g.setAttribute("data-wf-focus-visible", "true")
|
|
}
|
|
|
|
function te(g) {
|
|
g.getAttribute("data-wf-focus-visible") && g.removeAttribute("data-wf-focus-visible")
|
|
}
|
|
|
|
function X(g) {
|
|
g.metaKey || g.altKey || g.ctrlKey || (C(l.activeElement) && G(l.activeElement), T = true)
|
|
}
|
|
|
|
function Q() {
|
|
T = false
|
|
}
|
|
|
|
function k(g) {
|
|
C(g.target) && (T || P(g.target)) && G(g.target)
|
|
}
|
|
|
|
function q(g) {
|
|
C(g.target) && g.target.hasAttribute("data-wf-focus-visible") && (B = true, window.clearTimeout(_), _ = window.setTimeout(function() {
|
|
B = false
|
|
}, 100), te(g.target))
|
|
}
|
|
|
|
function Y() {
|
|
document.visibilityState === "hidden" && (B && (T = true), K())
|
|
}
|
|
|
|
function K() {
|
|
document.addEventListener("mousemove", F), document.addEventListener("mousedown", F), document.addEventListener("mouseup", F), document.addEventListener("pointermove", F), document.addEventListener("pointerdown", F), document.addEventListener("pointerup", F), document.addEventListener("touchmove", F), document.addEventListener("touchstart", F), document.addEventListener("touchend", F)
|
|
}
|
|
|
|
function H() {
|
|
document.removeEventListener("mousemove", F), document.removeEventListener("mousedown", F), document.removeEventListener("mouseup", F), document.removeEventListener("pointermove", F), document.removeEventListener("pointerdown", F), document.removeEventListener("pointerup", F), document.removeEventListener("touchmove", F), document.removeEventListener("touchstart", F), document.removeEventListener("touchend", F)
|
|
}
|
|
|
|
function F(g) {
|
|
g.target.nodeName && g.target.nodeName.toLowerCase() === "html" || (T = false, H())
|
|
}
|
|
document.addEventListener("keydown", X, true), document.addEventListener("mousedown", Q, true), document.addEventListener("pointerdown", Q, true), document.addEventListener("touchstart", Q, true), document.addEventListener("visibilitychange", Y, true), K(), l.addEventListener("focus", k, true), l.addEventListener("blur", q, true)
|
|
}
|
|
|
|
function f() {
|
|
if (typeof document < "u") try {
|
|
document.querySelector(":focus-visible")
|
|
} catch {
|
|
t(document)
|
|
}
|
|
}
|
|
return {
|
|
ready: f
|
|
}
|
|
})
|
|
});
|
|
var requireWebflowFocus = defineModule((exports, module) => {
|
|
"use strict";
|
|
var Webflow = requireWebflow();
|
|
Webflow.define("focus", module.exports = function() {
|
|
var t = [],
|
|
f = false;
|
|
|
|
function l(D) {
|
|
f && (D.preventDefault(), D.stopPropagation(), D.stopImmediatePropagation(), t.unshift(D))
|
|
}
|
|
|
|
function T(D) {
|
|
var C = D.target,
|
|
P = C.tagName;
|
|
return /^a$/i.test(P) && C.href != null || /^(button|textarea)$/i.test(P) && C.disabled !== true || /^input$/i.test(P) && /^(button|reset|submit|radio|checkbox)$/i.test(C.type) && !C.disabled || !/^(button|input|textarea|select|a)$/i.test(P) && !Number.isNaN(Number.parseFloat(C.tabIndex)) || /^audio$/i.test(P) || /^video$/i.test(P) && C.controls === true
|
|
}
|
|
|
|
function B(D) {
|
|
T(D) && (f = true, setTimeout(() => {
|
|
for (f = false, D.target.focus(); t.length > 0;) {
|
|
var C = t.pop();
|
|
C.target.dispatchEvent(new MouseEvent(C.type, C))
|
|
}
|
|
}, 0))
|
|
}
|
|
|
|
function _() {
|
|
typeof document < "u" && document.body.hasAttribute("data-wf-focus-within") && Webflow.env.safari && (document.addEventListener("mousedown", B, true), document.addEventListener("mouseup", l, true), document.addEventListener("click", l, true))
|
|
}
|
|
return {
|
|
ready: _
|
|
}
|
|
})
|
|
});
|
|
var requireWebflowLinks = defineModule((exports, module) => {
|
|
"use strict";
|
|
var Webflow = requireWebflow();
|
|
Webflow.define("links", module.exports = function(t, f) {
|
|
var l = {},
|
|
T = t(window),
|
|
B, _ = Webflow.env(),
|
|
D = window.location,
|
|
C = document.createElement("a"),
|
|
P = "w--current",
|
|
G = /index\.(html|php)$/,
|
|
te = /\/$/,
|
|
X, Q;
|
|
l.ready = l.design = l.preview = k;
|
|
|
|
function k() {
|
|
B = _ && Webflow.env("design"), Q = Webflow.env("slug") || D.pathname || "", Webflow.scroll.off(Y), X = [];
|
|
for (var H = document.links, F = 0; F < H.length; ++F) q(H[F]);
|
|
X.length && (Webflow.scroll.on(Y), Y())
|
|
}
|
|
|
|
function q(H) {
|
|
if (!H.getAttribute("hreflang")) {
|
|
var F = B && H.getAttribute("href-disabled") || H.getAttribute("href");
|
|
if (C.href = F, !(F.indexOf(":") >= 0)) {
|
|
var g = t(H);
|
|
if (C.hash.length > 1 && C.host + C.pathname === D.host + D.pathname) {
|
|
if (!/^#[a-zA-Z0-9\-\_]+$/.test(C.hash)) return;
|
|
var M = t(C.hash);
|
|
M.length && X.push({
|
|
link: g,
|
|
sec: M,
|
|
active: false
|
|
});
|
|
return
|
|
}
|
|
if (!(F === "#" || F === "")) {
|
|
var E = C.href === D.href || F === Q || G.test(F) && te.test(Q);
|
|
K(g, P, E)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function Y() {
|
|
var H = T.scrollTop(),
|
|
F = T.height();
|
|
f.each(X, function(g) {
|
|
if (!g.link.attr("hreflang")) {
|
|
var M = g.link,
|
|
E = g.sec,
|
|
$ = E.offset().top,
|
|
ue = E.outerHeight(),
|
|
de = F * .5,
|
|
pe = E.is(":visible") && $ + ue - de >= H && $ + de <= H + F;
|
|
g.active !== pe && (g.active = pe, K(M, P, pe))
|
|
}
|
|
})
|
|
}
|
|
|
|
function K(H, F, g) {
|
|
var M = H.hasClass(F);
|
|
g && M || !g && !M || (g ? H.addClass(F) : H.removeClass(F))
|
|
}
|
|
return l
|
|
})
|
|
});
|
|
var requireWebflowScroll = defineModule((exports, module) => {
|
|
"use strict";
|
|
var Webflow = requireWebflow();
|
|
Webflow.define("scroll", module.exports = function(t) {
|
|
var f = {
|
|
WF_CLICK_EMPTY: "click.wf-empty-link",
|
|
WF_CLICK_SCROLL: "click.wf-scroll"
|
|
},
|
|
l = window.location,
|
|
T = q() ? null : window.history,
|
|
B = t(window),
|
|
_ = t(document),
|
|
D = t(document.body),
|
|
C = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(O) {
|
|
window.setTimeout(O, 15)
|
|
},
|
|
P = Webflow.env("editor") ? ".w-editor-body" : "body",
|
|
G = "header, " + P + " > .header, " + P + " > .w-nav:not([data-no-scroll])",
|
|
te = 'a[href="#"]',
|
|
X = 'a[href*="#"]:not(.w-tab-link):not(' + te + ")",
|
|
Q = '.wf-force-outline-none[tabindex="-1"]:focus{outline:none;}',
|
|
k = document.createElement("style");
|
|
k.appendChild(document.createTextNode(Q));
|
|
|
|
function q() {
|
|
try {
|
|
return !!window.frameElement
|
|
} catch {
|
|
returntrue
|
|
}
|
|
}
|
|
var Y = /^#[a-zA-Z0-9][\w:.-]*$/;
|
|
|
|
function K(O) {
|
|
return Y.test(O.hash) && O.host + O.pathname === l.host + l.pathname
|
|
}
|
|
let H = typeof window.matchMedia == "function" && window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
|
|
function F() {
|
|
return document.body.getAttribute("data-wf-scroll-motion") === "none" || H.matches
|
|
}
|
|
|
|
function g(O, u) {
|
|
var d;
|
|
switch (u) {
|
|
case "add":
|
|
d = O.attr("tabindex"), d ? O.attr("data-wf-tabindex-swap", d) : O.attr("tabindex", "-1");
|
|
break;
|
|
case "remove":
|
|
d = O.attr("data-wf-tabindex-swap"), d ? (O.attr("tabindex", d), O.removeAttr("data-wf-tabindex-swap")) : O.removeAttr("tabindex");
|
|
break
|
|
}
|
|
O.toggleClass("wf-force-outline-none", u === "add")
|
|
}
|
|
|
|
function M(O) {
|
|
var u = O.currentTarget;
|
|
if (!(Webflow.env("design") || window.$.mobile && /(?:^|\s)ui-link(?:$|\s)/.test(u.className))) {
|
|
var d = K(u) ? u.hash : "";
|
|
if (d !== "") {
|
|
var x = t(d);
|
|
x.length && (O && (O.preventDefault(), O.stopPropagation()), E(d, O), window.setTimeout(function() {
|
|
$(x, function() {
|
|
g(x, "add"), x.get(0).focus({
|
|
preventScroll: true
|
|
}), g(x, "remove")
|
|
})
|
|
}, O ? 0 : 300))
|
|
}
|
|
}
|
|
}
|
|
|
|
function E(O) {
|
|
if (l.hash !== O && T && T.pushState && !(Webflow.env.chrome && l.protocol === "file:")) {
|
|
var u = T.state && T.state.hash;
|
|
u !== O && T.pushState({
|
|
hash: O
|
|
}, "", O)
|
|
}
|
|
}
|
|
|
|
function $(O, u) {
|
|
var d = B.scrollTop(),
|
|
x = ue(O);
|
|
if (d !== x) {
|
|
var b = de(O, d, x),
|
|
U = Date.now(),
|
|
N = function() {
|
|
var c = Date.now() - U;
|
|
window.scroll(0, pe(d, x, c, b)), c <= b ? C(N) : typeof u == "function" && u()
|
|
};
|
|
C(N)
|
|
}
|
|
}
|
|
|
|
function ue(O) {
|
|
var u = t(G),
|
|
d = u.css("position") === "fixed" ? u.outerHeight() : 0,
|
|
x = O.offset().top - d;
|
|
if (O.data("scroll") === "mid") {
|
|
var b = B.height() - d,
|
|
U = O.outerHeight();
|
|
U < b && (x -= Math.round((b - U) / 2))
|
|
}
|
|
return x
|
|
}
|
|
|
|
function de(O, u, d) {
|
|
if (F()) return 0;
|
|
var x = 1;
|
|
return D.add(O).each(function(b, U) {
|
|
var N = parseFloat(U.getAttribute("data-scroll-time"));
|
|
!isNaN(N) && N >= 0 && (x = N)
|
|
}), (472.143 * Math.log(Math.abs(u - d) + 125) - 2e3) * x
|
|
}
|
|
|
|
function pe(O, u, d, x) {
|
|
return d > x ? u : O + (u - O) * Ae(d / x)
|
|
}
|
|
|
|
function Ae(O) {
|
|
return O < .5 ? 4 * O * O * O : (O - 1) * (2 * O - 2) * (2 * O - 2) + 1
|
|
}
|
|
|
|
function we() {
|
|
var {
|
|
WF_CLICK_EMPTY: O,
|
|
WF_CLICK_SCROLL: u
|
|
} = f;
|
|
_.on(u, X, M), _.on(O, te, function(d) {
|
|
d.preventDefault()
|
|
}), document.head.insertBefore(k, document.head.firstChild)
|
|
}
|
|
return {
|
|
ready: we
|
|
}
|
|
})
|
|
});
|
|
var requireWebflowTouch = defineModule((exports, module) => {
|
|
"use strict";
|
|
var Webflow = requireWebflow();
|
|
Webflow.define("touch", module.exports = function(t) {
|
|
var f = {},
|
|
l = window.getSelection;
|
|
t.event.special.tap = {
|
|
bindType: "click",
|
|
delegateType: "click"
|
|
}, f.init = function(_) {
|
|
return _ = typeof _ == "string" ? t(_).get(0) : _, _ ? new T(_) : null
|
|
};
|
|
|
|
function T(_) {
|
|
var D = false,
|
|
C = false,
|
|
P = Math.min(Math.round(window.innerWidth * .04), 40),
|
|
G, te;
|
|
_.addEventListener("touchstart", X, false), _.addEventListener("touchmove", Q, false), _.addEventListener("touchend", k, false), _.addEventListener("touchcancel", q, false), _.addEventListener("mousedown", X, false), _.addEventListener("mousemove", Q, false), _.addEventListener("mouseup", k, false), _.addEventListener("mouseout", q, false);
|
|
|
|
function X(K) {
|
|
var H = K.touches;
|
|
H && H.length > 1 || (D = true, H ? (C = true, G = H[0].clientX) : G = K.clientX, te = G)
|
|
}
|
|
|
|
function Q(K) {
|
|
if (D) {
|
|
if (C && K.type === "mousemove") {
|
|
K.preventDefault(), K.stopPropagation();
|
|
return
|
|
}
|
|
var H = K.touches,
|
|
F = H ? H[0].clientX : K.clientX,
|
|
g = F - te;
|
|
te = F, Math.abs(g) > P && l && String(l()) === "" && (B("swipe", K, {
|
|
direction: g > 0 ? "right" : "left"
|
|
}), q())
|
|
}
|
|
}
|
|
|
|
function k(K) {
|
|
if (D && (D = false, C && K.type === "mouseup")) {
|
|
K.preventDefault(), K.stopPropagation(), C = false;
|
|
return
|
|
}
|
|
}
|
|
|
|
function q() {
|
|
D = false
|
|
}
|
|
|
|
function Y() {
|
|
_.removeEventListener("touchstart", X, false), _.removeEventListener("touchmove", Q, false), _.removeEventListener("touchend", k, false), _.removeEventListener("touchcancel", q, false), _.removeEventListener("mousedown", X, false), _.removeEventListener("mousemove", Q, false), _.removeEventListener("mouseup", k, false), _.removeEventListener("mouseout", q, false), _ = null
|
|
}
|
|
this.destroy = Y
|
|
}
|
|
|
|
function B(_, D, C) {
|
|
var P = t.Event(_, {
|
|
originalEvent: D
|
|
});
|
|
t(D.target).trigger(P, C)
|
|
}
|
|
return f.instance = f.init(document), f
|
|
})
|
|
});
|
|
var requireWebflowForms_helper = defineModule(exports => {
|
|
"use strict";
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = tn;
|
|
|
|
function tn(t, f, l, T, B, _, D, C, P, G, te, X, Q) {
|
|
return function(k) {
|
|
t(k);
|
|
var q = k.form,
|
|
Y = {
|
|
name: q.attr("data-name") || q.attr("name") || "Untitled Form",
|
|
pageId: q.attr("data-wf-page-id") || "",
|
|
elementId: q.attr("data-wf-element-id") || "",
|
|
source: f.href,
|
|
test: l.env(),
|
|
fields: {},
|
|
fileUploads: {},
|
|
dolphin: /pass[\s-_]?(word|code)|secret|login|credentials/i.test(q.html()),
|
|
trackingCookies: T()
|
|
};
|
|
let K = q.attr("data-wf-flow");
|
|
K && (Y.wfFlow = K), B(k);
|
|
var H = _(q, Y.fields);
|
|
if (H) return D(H);
|
|
if (Y.fileUploads = C(q), P(k), !G) {
|
|
te(k);
|
|
return
|
|
}
|
|
X.ajax({
|
|
url: Q,
|
|
type: "POST",
|
|
data: Y,
|
|
dataType: "json",
|
|
crossDomain: true
|
|
}).done(function(F) {
|
|
F && F.code === 200 && (k.success = true), te(k)
|
|
}).fail(function() {
|
|
te(k)
|
|
})
|
|
}
|
|
}
|
|
});
|
|
var requireWebflowForms = defineModule((exports, module) => {
|
|
"use strict";
|
|
var Webflow = requireWebflow();
|
|
Webflow.define("forms", module.exports = function(t, f) {
|
|
var l = {},
|
|
T = t(document),
|
|
B, _ = window.location,
|
|
D = window.XDomainRequest && !window.atob,
|
|
C = ".w-form",
|
|
P, G = /e(-)?mail/i,
|
|
te = /^\S+@\S+$/,
|
|
X = window.alert,
|
|
Q = Webflow.env(),
|
|
k, q, Y, K = /list-manage[1-9]?.com/i,
|
|
H = f.debounce(function() {
|
|
X("Oops! This page has improperly configured forms. Please contact your website administrator to fix this issue.")
|
|
}, 100);
|
|
l.ready = l.design = l.preview = function() {
|
|
F(), !Q && !k && M()
|
|
};
|
|
|
|
function F() {
|
|
P = t("html").attr("data-wf-site"), q = "https://webflow.com/api/v1/form/" + P, D && q.indexOf("https://webflow.com") >= 0 && (q = q.replace("https://webflow.com", "https://formdata.webflow.com")), Y = `${q}/signFile`, B = t(C + " form"), B.length && B.each(g)
|
|
}
|
|
|
|
function g(c, y) {
|
|
var L = t(y),
|
|
v = t.data(y, C);
|
|
v || (v = t.data(y, C, {
|
|
form: L
|
|
})), E(v);
|
|
var h = L.closest("div.w-form");
|
|
v.done = h.find("> .w-form-done"), v.fail = h.find("> .w-form-fail"), v.fileUploads = h.find(".w-file-upload"), v.fileUploads.each(function(Z) {
|
|
b(Z, v)
|
|
});
|
|
var I = v.form.attr("aria-label") || v.form.attr("data-name") || "Form";
|
|
v.done.attr("aria-label") || v.form.attr("aria-label", I), v.done.attr("tabindex", "-1"), v.done.attr("role", "region"), v.done.attr("aria-label") || v.done.attr("aria-label", I + " success"), v.fail.attr("tabindex", "-1"), v.fail.attr("role", "region"), v.fail.attr("aria-label") || v.fail.attr("aria-label", I + " failure");
|
|
var j = v.action = L.attr("action");
|
|
if (v.handler = null, v.redirect = L.attr("data-redirect"), K.test(j)) {
|
|
v.handler = u;
|
|
return
|
|
}
|
|
if (!j) {
|
|
if (P) {
|
|
v.handler = (() => {
|
|
let Z = requireWebflowForms_helper().default;
|
|
return Z(E, _, Webflow, Ae, x, ue, X, de, $, P, d, t, q)
|
|
})();
|
|
return
|
|
}
|
|
H()
|
|
}
|
|
}
|
|
|
|
function M() {
|
|
k = true, T.on("submit", C + " form", function(Z) {
|
|
var W = t.data(this, C);
|
|
W.handler && (W.evt = Z, W.handler(W))
|
|
});
|
|
let c = ".w-checkbox-input",
|
|
y = ".w-radio-input",
|
|
L = "w--redirected-checked",
|
|
v = "w--redirected-focus",
|
|
h = "w--redirected-focus-visible",
|
|
I = ":focus-visible, [data-wf-focus-visible]",
|
|
j = [
|
|
["checkbox", c],
|
|
["radio", y]
|
|
];
|
|
T.on("change", C + ' form input[type="checkbox"]:not(' + c + ")", Z => {
|
|
t(Z.target).siblings(c).toggleClass(L)
|
|
}), T.on("change", C + ' form input[type="radio"]', Z => {
|
|
t(`input[name="${Z.target.name}"]:not(${c})`).map((oe, Te) => t(Te).siblings(y).removeClass(L));
|
|
let W = t(Z.target);
|
|
W.hasClass("w-radio-input") || W.siblings(y).addClass(L)
|
|
}), j.forEach(([Z, W]) => {
|
|
T.on("focus", C + ` form input[type="${Z}"]:not(` + W + ")", oe => {
|
|
t(oe.target).siblings(W).addClass(v), t(oe.target).filter(I).siblings(W).addClass(h)
|
|
}), T.on("blur", C + ` form input[type="${Z}"]:not(` + W + ")", oe => {
|
|
t(oe.target).siblings(W).removeClass(`${v} ${h}`)
|
|
})
|
|
})
|
|
}
|
|
|
|
function E(c) {
|
|
var y = c.btn = c.form.find(':input[type="submit"]');
|
|
c.wait = c.btn.attr("data-wait") || null, c.success = false, y.prop("disabled", false), c.label && y.val(c.label)
|
|
}
|
|
|
|
function $(c) {
|
|
var y = c.btn,
|
|
L = c.wait;
|
|
y.prop("disabled", true), L && (c.label = y.val(), y.val(L))
|
|
}
|
|
|
|
function ue(c, y) {
|
|
var L = null;
|
|
return y = y || {}, c.find(':input:not([type="submit"]):not([type="file"])').each(function(v, h) {
|
|
var I = t(h),
|
|
j = I.attr("type"),
|
|
Z = I.attr("data-name") || I.attr("name") || "Field " + (v + 1),
|
|
W = I.val();
|
|
if (j === "checkbox") W = I.is(":checked");
|
|
else if (j === "radio") {
|
|
if (y[Z] === null || typeof y[Z] == "string") return;
|
|
W = c.find('input[name="' + I.attr("name") + '"]:checked').val() || null
|
|
}
|
|
typeof W == "string" && (W = t.trim(W)), y[Z] = W, L = L || we(I, j, Z, W)
|
|
}), L
|
|
}
|
|
|
|
function de(c) {
|
|
var y = {};
|
|
return c.find(':input[type="file"]').each(function(L, v) {
|
|
var h = t(v),
|
|
I = h.attr("data-name") || h.attr("name") || "File " + (L + 1),
|
|
j = h.attr("data-value");
|
|
typeof j == "string" && (j = t.trim(j)), y[I] = j
|
|
}), y
|
|
}
|
|
let pe = {
|
|
_mkto_trk: "marketo"
|
|
};
|
|
|
|
function Ae() {
|
|
return document.cookie.split("; ").reduce(function(y, L) {
|
|
let v = L.split("="),
|
|
h = v[0];
|
|
if (h in pe) {
|
|
let I = pe[h],
|
|
j = v.slice(1).join("=");
|
|
y[I] = j
|
|
}
|
|
return y
|
|
}, {})
|
|
}
|
|
|
|
function we(c, y, L, v) {
|
|
var h = null;
|
|
return y === "password" ? h = "Passwords cannot be submitted." : c.attr("required") ? v ? G.test(c.attr("type")) && (te.test(v) || (h = "Please enter a valid email address for: " + L)) : h = "Please fill out the required field: " + L : L === "g-recaptcha-response" && !v && (h = "Please confirm you\u2019re not a robot."), h
|
|
}
|
|
|
|
function O(c) {
|
|
x(c), d(c)
|
|
}
|
|
|
|
function u(c) {
|
|
E(c);
|
|
var y = c.form,
|
|
L = {};
|
|
if (/^https/.test(_.href) && !/^https/.test(c.action)) {
|
|
y.attr("method", "post");
|
|
return
|
|
}
|
|
x(c);
|
|
var v = ue(y, L);
|
|
if (v) return X(v);
|
|
$(c);
|
|
var h;
|
|
f.each(L, function(W, oe) {
|
|
G.test(oe) && (L.EMAIL = W), /^((full[ _-]?)?name)$/i.test(oe) && (h = W), /^(first[ _-]?name)$/i.test(oe) && (L.FNAME = W), /^(last[ _-]?name)$/i.test(oe) && (L.LNAME = W)
|
|
}), h && !L.FNAME && (h = h.split(" "), L.FNAME = h[0], L.LNAME = L.LNAME || h[1]);
|
|
var I = c.action.replace("/post?", "/post-json?") + "&c=?",
|
|
j = I.indexOf("u=") + 2;
|
|
j = I.substring(j, I.indexOf("&", j));
|
|
var Z = I.indexOf("id=") + 3;
|
|
Z = I.substring(Z, I.indexOf("&", Z)), L["b_" + j + "_" + Z] = "", t.ajax({
|
|
url: I,
|
|
data: L,
|
|
dataType: "jsonp"
|
|
}).done(function(W) {
|
|
c.success = W.result === "success" || /already/.test(W.msg), c.success || console.info("MailChimp error: " + W.msg), d(c)
|
|
}).fail(function() {
|
|
d(c)
|
|
})
|
|
}
|
|
|
|
function d(c) {
|
|
var y = c.form,
|
|
L = c.redirect,
|
|
v = c.success;
|
|
if (v && L) {
|
|
Webflow.location(L);
|
|
return
|
|
}
|
|
c.done.toggle(v), c.fail.toggle(!v), v ? c.done.focus() : c.fail.focus(), y.toggle(!v), E(c)
|
|
}
|
|
|
|
function x(c) {
|
|
c.evt && c.evt.preventDefault(), c.evt = null
|
|
}
|
|
|
|
function b(c, y) {
|
|
if (!y.fileUploads || !y.fileUploads[c]) return;
|
|
var L, v = t(y.fileUploads[c]),
|
|
h = v.find("> .w-file-upload-default"),
|
|
I = v.find("> .w-file-upload-uploading"),
|
|
j = v.find("> .w-file-upload-success"),
|
|
Z = v.find("> .w-file-upload-error"),
|
|
W = h.find(".w-file-upload-input"),
|
|
oe = h.find(".w-file-upload-label"),
|
|
Te = oe.children(),
|
|
ne = Z.find(".w-file-upload-error-msg"),
|
|
n = j.find(".w-file-upload-file"),
|
|
p = j.find(".w-file-remove-link"),
|
|
S = n.find(".w-file-upload-file-name"),
|
|
w = ne.attr("data-w-size-error"),
|
|
se = ne.attr("data-w-type-error"),
|
|
Ie = ne.attr("data-w-generic-error");
|
|
if (Q || oe.on("click keydown", function(i) {
|
|
i.type === "keydown" && i.which !== 13 && i.which !== 32 || (i.preventDefault(), W.click())
|
|
}), oe.find(".w-icon-file-upload-icon").attr("aria-hidden", "true"), p.find(".w-icon-file-upload-remove").attr("aria-hidden", "true"), Q) W.on("click", function(i) {
|
|
i.preventDefault()
|
|
}), oe.on("click", function(i) {
|
|
i.preventDefault()
|
|
}), Te.on("click", function(i) {
|
|
i.preventDefault()
|
|
});
|
|
else {
|
|
p.on("click keydown", function(i) {
|
|
if (i.type === "keydown") {
|
|
if (i.which !== 13 && i.which !== 32) return;
|
|
i.preventDefault()
|
|
}
|
|
W.removeAttr("data-value"), W.val(""), S.html(""), h.toggle(true), j.toggle(false), oe.focus()
|
|
}), W.on("change", function(i) {
|
|
L = i.target && i.target.files && i.target.files[0], L && (h.toggle(false), Z.toggle(false), I.toggle(true), I.focus(), S.text(L.name), a() || $(y), y.fileUploads[c].uploading = true, U(L, r))
|
|
});
|
|
var Ce = oe.outerHeight();
|
|
W.height(Ce), W.width(1)
|
|
}
|
|
|
|
function e(i) {
|
|
var s = i.responseJSON && i.responseJSON.msg,
|
|
A = Ie;
|
|
typeof s == "string" && s.indexOf("InvalidFileTypeError") === 0 ? A = se : typeof s == "string" && s.indexOf("MaxFileSizeError") === 0 && (A = w), ne.text(A), W.removeAttr("data-value"), W.val(""), I.toggle(false), h.toggle(true), Z.toggle(true), Z.focus(), y.fileUploads[c].uploading = false, a() || E(y)
|
|
}
|
|
|
|
function r(i, s) {
|
|
if (i) return e(i);
|
|
var A = s.fileName,
|
|
z = s.postData,
|
|
ae = s.fileId,
|
|
m = s.s3Url;
|
|
W.attr("data-value", ae), N(m, z, L, A, o)
|
|
}
|
|
|
|
function o(i) {
|
|
if (i) return e(i);
|
|
I.toggle(false), j.css("display", "inline-block"), j.focus(), y.fileUploads[c].uploading = false, a() || E(y)
|
|
}
|
|
|
|
function a() {
|
|
var i = y.fileUploads && y.fileUploads.toArray() || [];
|
|
return i.some(function(s) {
|
|
return s.uploading
|
|
})
|
|
}
|
|
}
|
|
|
|
function U(c, y) {
|
|
var L = new URLSearchParams({
|
|
name: c.name,
|
|
size: c.size
|
|
});
|
|
t.ajax({
|
|
type: "GET",
|
|
url: `${Y}?${L}`,
|
|
crossDomain: true
|
|
}).done(function(v) {
|
|
y(null, v)
|
|
}).fail(function(v) {
|
|
y(v)
|
|
})
|
|
}
|
|
|
|
function N(c, y, L, v, h) {
|
|
var I = new FormData;
|
|
for (var j in y) I.append(j, y[j]);
|
|
I.append("file", L, v), t.ajax({
|
|
type: "POST",
|
|
url: c,
|
|
data: I,
|
|
processData: false,
|
|
contentType: false
|
|
}).done(function() {
|
|
h(null)
|
|
}).fail(function(Z) {
|
|
h(Z)
|
|
})
|
|
}
|
|
return l
|
|
})
|
|
});
|
|
var requireWebflowNavbar_helper_helper = defineModule((exports, module) => {
|
|
"use strict";
|
|
var jQuery = window.jQuery,
|
|
exports = {},
|
|
$e = [],
|
|
Ft = ".w-ix",
|
|
Xe = {
|
|
reset: function(t, f) {
|
|
f.__wf_intro = null
|
|
},
|
|
intro: function(t, f) {
|
|
f.__wf_intro || (f.__wf_intro = true, jQuery(f).triggerHandler(exports.types.INTRO))
|
|
},
|
|
outro: function(t, f) {
|
|
f.__wf_intro && (f.__wf_intro = null, jQuery(f).triggerHandler(exports.types.OUTRO))
|
|
}
|
|
};
|
|
exports.triggers = {};
|
|
exports.types = {
|
|
INTRO: "w-ix-intro" + Ft,
|
|
OUTRO: "w-ix-outro" + Ft
|
|
};
|
|
exports.init = function() {
|
|
for (var t = $e.length, f = 0; f < t; f++) {
|
|
var l = $e[f];
|
|
l[0](0, l[1])
|
|
}
|
|
$e = [], jQuery.extend(exports.triggers, Xe)
|
|
};
|
|
exports.async = function() {
|
|
for (var t in Xe) {
|
|
var f = Xe[t];
|
|
Xe.hasOwnProperty(t) && (exports.triggers[t] = function(l, T) {
|
|
$e.push([f, T])
|
|
})
|
|
}
|
|
};
|
|
exports.async();
|
|
module.exports = exports
|
|
});
|
|
var requireWebflowNavbar_helper = defineModule((exports, module) => {
|
|
"use strict";
|
|
var tt = requireWebflowNavbar_helper_helper();
|
|
|
|
function Rt(t, f) {
|
|
var l = document.createEvent("CustomEvent");
|
|
l.initCustomEvent(f, true, true, null), t.dispatchEvent(l)
|
|
}
|
|
var jQuery = window.jQuery,
|
|
Ke = {},
|
|
Wt = ".w-ix",
|
|
rn = {
|
|
reset: function(t, f) {
|
|
tt.triggers.reset(t, f)
|
|
},
|
|
intro: function(t, f) {
|
|
tt.triggers.intro(t, f), Rt(f, "COMPONENT_ACTIVE")
|
|
},
|
|
outro: function(t, f) {
|
|
tt.triggers.outro(t, f), Rt(f, "COMPONENT_INACTIVE")
|
|
}
|
|
};
|
|
Ke.triggers = {};
|
|
Ke.types = {
|
|
INTRO: "w-ix-intro" + Wt,
|
|
OUTRO: "w-ix-outro" + Wt
|
|
};
|
|
jQuery.extend(Ke.triggers, rn);
|
|
module.exports = Ke
|
|
});
|
|
var requireWebflowNavbar = defineModule((exports, module) => {
|
|
"use strict";
|
|
var Webflow = requireWebflow(),
|
|
on = requireWebflowNavbar_helper(),
|
|
he = {
|
|
ARROW_LEFT: 37,
|
|
ARROW_UP: 38,
|
|
ARROW_RIGHT: 39,
|
|
ARROW_DOWN: 40,
|
|
ESCAPE: 27,
|
|
SPACE: 32,
|
|
ENTER: 13,
|
|
HOME: 36,
|
|
END: 35
|
|
};
|
|
Webflow.define("navbar", module.exports = function(t, f) {
|
|
var l = {},
|
|
T = t.tram,
|
|
B = t(window),
|
|
_ = t(document),
|
|
D = f.debounce,
|
|
C, P, G, te, X = Webflow.env(),
|
|
Q = '<div class="w-nav-overlay" data-wf-ignore />',
|
|
k = ".w-nav",
|
|
q = "w--open",
|
|
Y = "w--nav-dropdown-open",
|
|
K = "w--nav-dropdown-toggle-open",
|
|
H = "w--nav-dropdown-list-open",
|
|
F = "w--nav-link-open",
|
|
g = on.triggers,
|
|
M = t();
|
|
l.ready = l.design = l.preview = E, l.destroy = function() {
|
|
M = t(), $(), P && P.length && P.each(Ae)
|
|
};
|
|
|
|
function E() {
|
|
G = X && Webflow.env("design"), te = Webflow.env("editor"), C = t(document.body), P = _.find(k), P.length && (P.each(pe), $(), ue())
|
|
}
|
|
|
|
function $() {
|
|
Webflow.resize.off(de)
|
|
}
|
|
|
|
function ue() {
|
|
Webflow.resize.on(de)
|
|
}
|
|
|
|
function de() {
|
|
P.each(h)
|
|
}
|
|
|
|
function pe(n, p) {
|
|
var S = t(p),
|
|
w = t.data(p, k);
|
|
w || (w = t.data(p, k, {
|
|
open: false,
|
|
el: S,
|
|
config: {},
|
|
selectedIdx: -1
|
|
})), w.menu = S.find(".w-nav-menu"), w.links = w.menu.find(".w-nav-link"), w.dropdowns = w.menu.find(".w-dropdown"), w.dropdownToggle = w.menu.find(".w-dropdown-toggle"), w.dropdownList = w.menu.find(".w-dropdown-list"), w.button = S.find(".w-nav-button"), w.container = S.find(".w-container"), w.overlayContainerId = "w-nav-overlay-" + n, w.outside = L(w);
|
|
var se = S.find(".w-nav-brand");
|
|
se && se.attr("href") === "/" && se.attr("aria-label") == null && se.attr("aria-label", "home"), w.button.attr("style", "-webkit-user-select: text;"), w.button.attr("aria-label") == null && w.button.attr("aria-label", "menu"), w.button.attr("role", "button"), w.button.attr("tabindex", "0"), w.button.attr("aria-controls", w.overlayContainerId), w.button.attr("aria-haspopup", "menu"), w.button.attr("aria-expanded", "false"), w.el.off(k), w.button.off(k), w.menu.off(k), u(w), G ? (we(w), w.el.on("setting" + k, d(w))) : (O(w), w.button.on("click" + k, c(w)), w.menu.on("click" + k, "a", y(w)), w.button.on("keydown" + k, x(w)), w.el.on("keydown" + k, b(w))), h(n, p)
|
|
}
|
|
|
|
function Ae(n, p) {
|
|
var S = t.data(p, k);
|
|
S && (we(S), t.removeData(p, k))
|
|
}
|
|
|
|
function we(n) {
|
|
n.overlay && (ne(n, true), n.overlay.remove(), n.overlay = null)
|
|
}
|
|
|
|
function O(n) {
|
|
n.overlay || (n.overlay = t(Q).appendTo(n.el), n.overlay.attr("id", n.overlayContainerId), n.parent = n.menu.parent(), ne(n, true))
|
|
}
|
|
|
|
function u(n) {
|
|
var p = {},
|
|
S = n.config || {},
|
|
w = p.animation = n.el.attr("data-animation") || "default";
|
|
p.animOver = /^over/.test(w), p.animDirect = /left$/.test(w) ? -1 : 1, S.animation !== w && n.open && f.defer(N, n), p.easing = n.el.attr("data-easing") || "ease", p.easing2 = n.el.attr("data-easing2") || "ease";
|
|
var se = n.el.attr("data-duration");
|
|
p.duration = se != null ? Number(se) : 400, p.docHeight = n.el.attr("data-doc-height"), n.config = p
|
|
}
|
|
|
|
function d(n) {
|
|
return function(p, S) {
|
|
S = S || {};
|
|
var w = B.width();
|
|
u(n), S.open === true && oe(n, true), S.open === false && ne(n, true), n.open && f.defer(function() {
|
|
w !== B.width() && N(n)
|
|
})
|
|
}
|
|
}
|
|
|
|
function x(n) {
|
|
return function(p) {
|
|
switch (p.keyCode) {
|
|
case he.SPACE:
|
|
case he.ENTER:
|
|
return c(n)(), p.preventDefault(), p.stopPropagation();
|
|
case he.ESCAPE:
|
|
return ne(n), p.preventDefault(), p.stopPropagation();
|
|
case he.ARROW_RIGHT:
|
|
case he.ARROW_DOWN:
|
|
case he.HOME:
|
|
case he.END:
|
|
return n.open ? (p.keyCode === he.END ? n.selectedIdx = n.links.length - 1 : n.selectedIdx = 0, U(n), p.preventDefault(), p.stopPropagation()) : (p.preventDefault(), p.stopPropagation())
|
|
}
|
|
}
|
|
}
|
|
|
|
function b(n) {
|
|
return function(p) {
|
|
if (n.open) switch (n.selectedIdx = n.links.index(document.activeElement), p.keyCode) {
|
|
case he.HOME:
|
|
case he.END:
|
|
return p.keyCode === he.END ? n.selectedIdx = n.links.length - 1 : n.selectedIdx = 0, U(n), p.preventDefault(), p.stopPropagation();
|
|
case he.ESCAPE:
|
|
return ne(n), n.button.focus(), p.preventDefault(), p.stopPropagation();
|
|
case he.ARROW_LEFT:
|
|
case he.ARROW_UP:
|
|
return n.selectedIdx = Math.max(-1, n.selectedIdx - 1), U(n), p.preventDefault(), p.stopPropagation();
|
|
case he.ARROW_RIGHT:
|
|
case he.ARROW_DOWN:
|
|
return n.selectedIdx = Math.min(n.links.length - 1, n.selectedIdx + 1), U(n), p.preventDefault(), p.stopPropagation()
|
|
}
|
|
}
|
|
}
|
|
|
|
function U(n) {
|
|
if (n.links[n.selectedIdx]) {
|
|
var p = n.links[n.selectedIdx];
|
|
p.focus(), y(p)
|
|
}
|
|
}
|
|
|
|
function N(n) {
|
|
n.open && (ne(n, true), oe(n, true))
|
|
}
|
|
|
|
function c(n) {
|
|
return D(function() {
|
|
n.open ? ne(n) : oe(n)
|
|
})
|
|
}
|
|
|
|
function y(n) {
|
|
return function(p) {
|
|
var S = t(this),
|
|
w = S.attr("href");
|
|
if (!Webflow.validClick(p.currentTarget)) {
|
|
p.preventDefault();
|
|
return
|
|
}
|
|
w && w.indexOf("#") === 0 && n.open && ne(n)
|
|
}
|
|
}
|
|
|
|
function L(n) {
|
|
return n.outside && _.off("click" + k, n.outside),
|
|
function(p) {
|
|
var S = t(p.target);
|
|
te && S.closest(".w-editor-bem-EditorOverlay").length || v(n, S)
|
|
}
|
|
}
|
|
var v = D(function(n, p) {
|
|
if (n.open) {
|
|
var S = p.closest(".w-nav-menu");
|
|
n.menu.is(S) || ne(n)
|
|
}
|
|
});
|
|
|
|
function h(n, p) {
|
|
var S = t.data(p, k),
|
|
w = S.collapsed = S.button.css("display") !== "none";
|
|
if (S.open && !w && !G && ne(S, true), S.container.length) {
|
|
var se = j(S);
|
|
S.links.each(se), S.dropdowns.each(se)
|
|
}
|
|
S.open && Te(S)
|
|
}
|
|
var I = "max-width";
|
|
|
|
function j(n) {
|
|
var p = n.container.css(I);
|
|
return p === "none" && (p = ""),
|
|
function(S, w) {
|
|
w = t(w), w.css(I, ""), w.css(I) === "none" && w.css(I, p)
|
|
}
|
|
}
|
|
|
|
function Z(n, p) {
|
|
p.setAttribute("data-nav-menu-open", "")
|
|
}
|
|
|
|
function W(n, p) {
|
|
p.removeAttribute("data-nav-menu-open")
|
|
}
|
|
|
|
function oe(n, p) {
|
|
if (n.open) return;
|
|
n.open = true, n.menu.each(Z), n.links.addClass(F), n.dropdowns.addClass(Y), n.dropdownToggle.addClass(K), n.dropdownList.addClass(H), n.button.addClass(q);
|
|
var S = n.config,
|
|
w = S.animation;
|
|
(w === "none" || !T.support.transform || S.duration <= 0) && (p = true);
|
|
var se = Te(n),
|
|
Ie = n.menu.outerHeight(true),
|
|
Ce = n.menu.outerWidth(true),
|
|
e = n.el.height(),
|
|
r = n.el[0];
|
|
if (h(0, r), g.intro(0, r), Webflow.redraw.up(), G || _.on("click" + k, n.outside), p) {
|
|
i();
|
|
return
|
|
}
|
|
var o = "transform " + S.duration + "ms " + S.easing;
|
|
if (n.overlay && (M = n.menu.prev(), n.overlay.show().append(n.menu)), S.animOver) {
|
|
T(n.menu).add(o).set({
|
|
x: S.animDirect * Ce,
|
|
height: se
|
|
}).start({
|
|
x: 0
|
|
}).then(i), n.overlay && n.overlay.width(Ce);
|
|
return
|
|
}
|
|
var a = e + Ie;
|
|
T(n.menu).add(o).set({
|
|
y: -a
|
|
}).start({
|
|
y: 0
|
|
}).then(i);
|
|
|
|
function i() {
|
|
n.button.attr("aria-expanded", "true")
|
|
}
|
|
}
|
|
|
|
function Te(n) {
|
|
var p = n.config,
|
|
S = p.docHeight ? _.height() : C.height();
|
|
return p.animOver ? n.menu.height(S) : n.el.css("position") !== "fixed" && (S -= n.el.outerHeight(true)), n.overlay && n.overlay.height(S), S
|
|
}
|
|
|
|
function ne(n, p) {
|
|
if (!n.open) return;
|
|
n.open = false, n.button.removeClass(q);
|
|
var S = n.config;
|
|
if ((S.animation === "none" || !T.support.transform || S.duration <= 0) && (p = true), g.outro(0, n.el[0]), _.off("click" + k, n.outside), p) {
|
|
T(n.menu).stop(), r();
|
|
return
|
|
}
|
|
var w = "transform " + S.duration + "ms " + S.easing2,
|
|
se = n.menu.outerHeight(true),
|
|
Ie = n.menu.outerWidth(true),
|
|
Ce = n.el.height();
|
|
if (S.animOver) {
|
|
T(n.menu).add(w).start({
|
|
x: Ie * S.animDirect
|
|
}).then(r);
|
|
return
|
|
}
|
|
var e = Ce + se;
|
|
T(n.menu).add(w).start({
|
|
y: -e
|
|
}).then(r);
|
|
|
|
function r() {
|
|
n.menu.height(""), T(n.menu).set({
|
|
x: 0,
|
|
y: 0
|
|
}), n.menu.each(W), n.links.removeClass(F), n.dropdowns.removeClass(Y), n.dropdownToggle.removeClass(K), n.dropdownList.removeClass(H), n.overlay && n.overlay.children().length && (M.length ? n.menu.insertAfter(M) : n.menu.prependTo(n.parent), n.overlay.attr("style", "").hide()), n.el.triggerHandler("w-close"), n.button.attr("aria-expanded", "false")
|
|
}
|
|
}
|
|
return l
|
|
})
|
|
});
|
|
requireWebflowFocusVisible();
|
|
requireWebflowFocus();
|
|
requireWebflowLinks();
|
|
requireWebflowScroll();
|
|
requireWebflowTouch();
|
|
requireWebflowForms();
|
|
requireWebflowNavbar();
|
|
})();
|
|
/*!
|
|
* tram.js v0.8.2-global
|
|
* Cross-browser CSS3 transitions in JavaScript
|
|
* https://github.com/bkwld/tram
|
|
* MIT License
|
|
*/
|
|
/*!
|
|
* Webflow._ (aka) Underscore.js 1.6.0 (custom build)
|
|
*
|
|
* http://underscorejs.org
|
|
* (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
* Underscore may be freely distributed under the MIT license.
|
|
* @license MIT
|
|
*/
|