2993 lines
147 KiB
JavaScript
Vendored
2993 lines
147 KiB
JavaScript
Vendored
/* Template Name: Docuto - Documentation HTML Template
|
|
Author: Acavo
|
|
Version: 1.0.0
|
|
Created: Oct 2020
|
|
File Description: Plugins js file of the template
|
|
*/
|
|
|
|
|
|
/*============================================*/
|
|
//
|
|
// 01 -- Wow
|
|
// 02 -- Prism JS
|
|
// 03 -- Smooth scroll js
|
|
//
|
|
/*===========================================*/
|
|
/*===========================================
|
|
|
|
01 -- Wow
|
|
|
|
=============================================*/
|
|
|
|
/*! WOW - v1.1.3 - 2016-05-06
|
|
* Copyright (c) 2016 Matthieu Aussaguel;*/
|
|
(function () {
|
|
var a, b, c, d, e, f = function (a, b) {
|
|
return function () {
|
|
return a.apply(b, arguments)
|
|
}
|
|
},
|
|
g = [].indexOf || function (a) {
|
|
for (var b = 0, c = this.length; c > b; b++)
|
|
if (b in this && this[b] === a) return b;
|
|
return -1
|
|
};
|
|
b = function () {
|
|
function a() {}
|
|
return a.prototype.extend = function (a, b) {
|
|
var c, d;
|
|
for (c in b) d = b[c], null == a[c] && (a[c] = d);
|
|
return a
|
|
}, a.prototype.isMobile = function (a) {
|
|
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a)
|
|
}, a.prototype.createEvent = function (a, b, c, d) {
|
|
var e;
|
|
return null == b && (b = !1), null == c && (c = !1), null == d && (d = null), null != document.createEvent ? (e = document.createEvent("CustomEvent"), e.initCustomEvent(a, b, c, d)) : null != document.createEventObject ? (e = document.createEventObject(), e.eventType = a) : e.eventName = a, e
|
|
}, a.prototype.emitEvent = function (a, b) {
|
|
return null != a.dispatchEvent ? a.dispatchEvent(b) : b in (null != a) ? a[b]() : "on" + b in (null != a) ? a["on" + b]() : void 0
|
|
}, a.prototype.addEvent = function (a, b, c) {
|
|
return null != a.addEventListener ? a.addEventListener(b, c, !1) : null != a.attachEvent ? a.attachEvent("on" + b, c) : a[b] = c
|
|
}, a.prototype.removeEvent = function (a, b, c) {
|
|
return null != a.removeEventListener ? a.removeEventListener(b, c, !1) : null != a.detachEvent ? a.detachEvent("on" + b, c) : delete a[b]
|
|
}, a.prototype.innerHeight = function () {
|
|
return "innerHeight" in window ? window.innerHeight : document.documentElement.clientHeight
|
|
}, a
|
|
}(), c = this.WeakMap || this.MozWeakMap || (c = function () {
|
|
function a() {
|
|
this.keys = [], this.values = []
|
|
}
|
|
return a.prototype.get = function (a) {
|
|
var b, c, d, e, f;
|
|
for (f = this.keys, b = d = 0, e = f.length; e > d; b = ++d)
|
|
if (c = f[b], c === a) return this.values[b]
|
|
}, a.prototype.set = function (a, b) {
|
|
var c, d, e, f, g;
|
|
for (g = this.keys, c = e = 0, f = g.length; f > e; c = ++e)
|
|
if (d = g[c], d === a) return void(this.values[c] = b);
|
|
return this.keys.push(a), this.values.push(b)
|
|
}, a
|
|
}()), a = this.MutationObserver || this.WebkitMutationObserver || this.MozMutationObserver || (a = function () {
|
|
function a() {
|
|
"undefined" != typeof console && null !== console && console.warn("MutationObserver is not supported by your browser."), "undefined" != typeof console && null !== console && console.warn("WOW.js cannot detect dom mutations, please call .sync() after loading new content.")
|
|
}
|
|
return a.notSupported = !0, a.prototype.observe = function () {}, a
|
|
}()), d = this.getComputedStyle || function (a, b) {
|
|
return this.getPropertyValue = function (b) {
|
|
var c;
|
|
return "float" === b && (b = "styleFloat"), e.test(b) && b.replace(e, function (a, b) {
|
|
return b.toUpperCase()
|
|
}), (null != (c = a.currentStyle) ? c[b] : void 0) || null
|
|
}, this
|
|
}, e = /(\-([a-z]){1})/g, this.WOW = function () {
|
|
function e(a) {
|
|
null == a && (a = {}), this.scrollCallback = f(this.scrollCallback, this), this.scrollHandler = f(this.scrollHandler, this), this.resetAnimation = f(this.resetAnimation, this), this.start = f(this.start, this), this.scrolled = !0, this.config = this.util().extend(a, this.defaults), null != a.scrollContainer && (this.config.scrollContainer = document.querySelector(a.scrollContainer)), this.animationNameCache = new c, this.wowEvent = this.util().createEvent(this.config.boxClass)
|
|
}
|
|
return e.prototype.defaults = {
|
|
boxClass: "wow",
|
|
animateClass: "animated",
|
|
offset: 0,
|
|
mobile: !0,
|
|
live: !0,
|
|
callback: null,
|
|
scrollContainer: null
|
|
}, e.prototype.init = function () {
|
|
var a;
|
|
return this.element = window.document.documentElement, "interactive" === (a = document.readyState) || "complete" === a ? this.start() : this.util().addEvent(document, "DOMContentLoaded", this.start), this.finished = []
|
|
}, e.prototype.start = function () {
|
|
var b, c, d, e;
|
|
if (this.stopped = !1, this.boxes = function () {
|
|
var a, c, d, e;
|
|
for (d = this.element.querySelectorAll("." + this.config.boxClass), e = [], a = 0, c = d.length; c > a; a++) b = d[a], e.push(b);
|
|
return e
|
|
}.call(this), this.all = function () {
|
|
var a, c, d, e;
|
|
for (d = this.boxes, e = [], a = 0, c = d.length; c > a; a++) b = d[a], e.push(b);
|
|
return e
|
|
}.call(this), this.boxes.length)
|
|
if (this.disabled()) this.resetStyle();
|
|
else
|
|
for (e = this.boxes, c = 0, d = e.length; d > c; c++) b = e[c], this.applyStyle(b, !0);
|
|
return this.disabled() || (this.util().addEvent(this.config.scrollContainer || window, "scroll", this.scrollHandler), this.util().addEvent(window, "resize", this.scrollHandler), this.interval = setInterval(this.scrollCallback, 50)), this.config.live ? new a(function (a) {
|
|
return function (b) {
|
|
var c, d, e, f, g;
|
|
for (g = [], c = 0, d = b.length; d > c; c++) f = b[c], g.push(function () {
|
|
var a, b, c, d;
|
|
for (c = f.addedNodes || [], d = [], a = 0, b = c.length; b > a; a++) e = c[a], d.push(this.doSync(e));
|
|
return d
|
|
}.call(a));
|
|
return g
|
|
}
|
|
}(this)).observe(document.body, {
|
|
childList: !0,
|
|
subtree: !0
|
|
}) : void 0
|
|
}, e.prototype.stop = function () {
|
|
return this.stopped = !0, this.util().removeEvent(this.config.scrollContainer || window, "scroll", this.scrollHandler), this.util().removeEvent(window, "resize", this.scrollHandler), null != this.interval ? clearInterval(this.interval) : void 0
|
|
}, e.prototype.sync = function (b) {
|
|
return a.notSupported ? this.doSync(this.element) : void 0
|
|
}, e.prototype.doSync = function (a) {
|
|
var b, c, d, e, f;
|
|
if (null == a && (a = this.element), 1 === a.nodeType) {
|
|
for (a = a.parentNode || a, e = a.querySelectorAll("." + this.config.boxClass), f = [], c = 0, d = e.length; d > c; c++) b = e[c], g.call(this.all, b) < 0 ? (this.boxes.push(b), this.all.push(b), this.stopped || this.disabled() ? this.resetStyle() : this.applyStyle(b, !0), f.push(this.scrolled = !0)) : f.push(void 0);
|
|
return f
|
|
}
|
|
}, e.prototype.show = function (a) {
|
|
return this.applyStyle(a), a.className = a.className + " " + this.config.animateClass, null != this.config.callback && this.config.callback(a), this.util().emitEvent(a, this.wowEvent), this.util().addEvent(a, "animationend", this.resetAnimation), this.util().addEvent(a, "oanimationend", this.resetAnimation), this.util().addEvent(a, "webkitAnimationEnd", this.resetAnimation), this.util().addEvent(a, "MSAnimationEnd", this.resetAnimation), a
|
|
}, e.prototype.applyStyle = function (a, b) {
|
|
var c, d, e;
|
|
return d = a.getAttribute("data-wow-duration"), c = a.getAttribute("data-wow-delay"), e = a.getAttribute("data-wow-iteration"), this.animate(function (f) {
|
|
return function () {
|
|
return f.customStyle(a, b, d, c, e)
|
|
}
|
|
}(this))
|
|
}, e.prototype.animate = function () {
|
|
return "requestAnimationFrame" in window ? function (a) {
|
|
return window.requestAnimationFrame(a)
|
|
} : function (a) {
|
|
return a()
|
|
}
|
|
}(), e.prototype.resetStyle = function () {
|
|
var a, b, c, d, e;
|
|
for (d = this.boxes, e = [], b = 0, c = d.length; c > b; b++) a = d[b], e.push(a.style.visibility = "visible");
|
|
return e
|
|
}, e.prototype.resetAnimation = function (a) {
|
|
var b;
|
|
return a.type.toLowerCase().indexOf("animationend") >= 0 ? (b = a.target || a.srcElement, b.className = b.className.replace(this.config.animateClass, "").trim()) : void 0
|
|
}, e.prototype.customStyle = function (a, b, c, d, e) {
|
|
return b && this.cacheAnimationName(a), a.style.visibility = b ? "hidden" : "visible", c && this.vendorSet(a.style, {
|
|
animationDuration: c
|
|
}), d && this.vendorSet(a.style, {
|
|
animationDelay: d
|
|
}), e && this.vendorSet(a.style, {
|
|
animationIterationCount: e
|
|
}), this.vendorSet(a.style, {
|
|
animationName: b ? "none" : this.cachedAnimationName(a)
|
|
}), a
|
|
}, e.prototype.vendors = ["moz", "webkit"], e.prototype.vendorSet = function (a, b) {
|
|
var c, d, e, f;
|
|
d = [];
|
|
for (c in b) e = b[c], a["" + c] = e, d.push(function () {
|
|
var b, d, g, h;
|
|
for (g = this.vendors, h = [], b = 0, d = g.length; d > b; b++) f = g[b], h.push(a["" + f + c.charAt(0).toUpperCase() + c.substr(1)] = e);
|
|
return h
|
|
}.call(this));
|
|
return d
|
|
}, e.prototype.vendorCSS = function (a, b) {
|
|
var c, e, f, g, h, i;
|
|
for (h = d(a), g = h.getPropertyCSSValue(b), f = this.vendors, c = 0, e = f.length; e > c; c++) i = f[c], g = g || h.getPropertyCSSValue("-" + i + "-" + b);
|
|
return g
|
|
}, e.prototype.animationName = function (a) {
|
|
var b;
|
|
try {
|
|
b = this.vendorCSS(a, "animation-name").cssText
|
|
} catch (c) {
|
|
b = d(a).getPropertyValue("animation-name")
|
|
}
|
|
return "none" === b ? "" : b
|
|
}, e.prototype.cacheAnimationName = function (a) {
|
|
return this.animationNameCache.set(a, this.animationName(a))
|
|
}, e.prototype.cachedAnimationName = function (a) {
|
|
return this.animationNameCache.get(a)
|
|
}, e.prototype.scrollHandler = function () {
|
|
return this.scrolled = !0
|
|
}, e.prototype.scrollCallback = function () {
|
|
var a;
|
|
return !this.scrolled || (this.scrolled = !1, this.boxes = function () {
|
|
var b, c, d, e;
|
|
for (d = this.boxes, e = [], b = 0, c = d.length; c > b; b++) a = d[b], a && (this.isVisible(a) ? this.show(a) : e.push(a));
|
|
return e
|
|
}.call(this), this.boxes.length || this.config.live) ? void 0 : this.stop()
|
|
}, e.prototype.offsetTop = function (a) {
|
|
for (var b; void 0 === a.offsetTop;) a = a.parentNode;
|
|
for (b = a.offsetTop; a = a.offsetParent;) b += a.offsetTop;
|
|
return b
|
|
}, e.prototype.isVisible = function (a) {
|
|
var b, c, d, e, f;
|
|
return c = a.getAttribute("data-wow-offset") || this.config.offset, f = this.config.scrollContainer && this.config.scrollContainer.scrollTop || window.pageYOffset, e = f + Math.min(this.element.clientHeight, this.util().innerHeight()) - c, d = this.offsetTop(a), b = d + a.clientHeight, e >= d && b >= f
|
|
}, e.prototype.util = function () {
|
|
return null != this._util ? this._util : this._util = new b
|
|
}, e.prototype.disabled = function () {
|
|
return !this.config.mobile && this.util().isMobile(navigator.userAgent)
|
|
}, e
|
|
}()
|
|
}).call(this);
|
|
/*===========================================
|
|
|
|
02 -- Prism JS
|
|
|
|
=============================================*/
|
|
|
|
/* PrismJS 1.15.0
|
|
https://prismjs.com/download.html#themes=prism-coy&languages=markup+css+clike+javascript&plugins=line-numbers */
|
|
var _self = "undefined" != typeof window ? window : "undefined" != typeof WorkerGlobalScope && self instanceof WorkerGlobalScope ? self : {},
|
|
Prism = function () {
|
|
var e = /\blang(?:uage)?-([\w-]+)\b/i,
|
|
t = 0,
|
|
n = _self.Prism = {
|
|
manual: _self.Prism && _self.Prism.manual,
|
|
disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,
|
|
util: {
|
|
encode: function (e) {
|
|
return e instanceof r ? new r(e.type, n.util.encode(e.content), e.alias) : "Array" === n.util.type(e) ? e.map(n.util.encode) : e.replace(/&/g, "&").replace(/</g, "<").replace(/\u00a0/g, " ")
|
|
},
|
|
type: function (e) {
|
|
return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]
|
|
},
|
|
objId: function (e) {
|
|
return e.__id || Object.defineProperty(e, "__id", {
|
|
value: ++t
|
|
}), e.__id
|
|
},
|
|
clone: function (e, t) {
|
|
var r = n.util.type(e);
|
|
switch (t = t || {}, r) {
|
|
case "Object":
|
|
if (t[n.util.objId(e)]) return t[n.util.objId(e)];
|
|
var a = {};
|
|
t[n.util.objId(e)] = a;
|
|
for (var l in e) e.hasOwnProperty(l) && (a[l] = n.util.clone(e[l], t));
|
|
return a;
|
|
case "Array":
|
|
if (t[n.util.objId(e)]) return t[n.util.objId(e)];
|
|
var a = [];
|
|
return t[n.util.objId(e)] = a, e.forEach(function (e, r) {
|
|
a[r] = n.util.clone(e, t)
|
|
}), a
|
|
}
|
|
return e
|
|
}
|
|
},
|
|
languages: {
|
|
extend: function (e, t) {
|
|
var r = n.util.clone(n.languages[e]);
|
|
for (var a in t) r[a] = t[a];
|
|
return r
|
|
},
|
|
insertBefore: function (e, t, r, a) {
|
|
a = a || n.languages;
|
|
var l = a[e];
|
|
if (2 == arguments.length) {
|
|
r = arguments[1];
|
|
for (var i in r) r.hasOwnProperty(i) && (l[i] = r[i]);
|
|
return l
|
|
}
|
|
var o = {};
|
|
for (var s in l)
|
|
if (l.hasOwnProperty(s)) {
|
|
if (s == t)
|
|
for (var i in r) r.hasOwnProperty(i) && (o[i] = r[i]);
|
|
o[s] = l[s]
|
|
} var u = a[e];
|
|
return a[e] = o, n.languages.DFS(n.languages, function (t, n) {
|
|
n === u && t != e && (this[t] = o)
|
|
}), o
|
|
},
|
|
DFS: function (e, t, r, a) {
|
|
a = a || {};
|
|
for (var l in e) e.hasOwnProperty(l) && (t.call(e, l, e[l], r || l), "Object" !== n.util.type(e[l]) || a[n.util.objId(e[l])] ? "Array" !== n.util.type(e[l]) || a[n.util.objId(e[l])] || (a[n.util.objId(e[l])] = !0, n.languages.DFS(e[l], t, l, a)) : (a[n.util.objId(e[l])] = !0, n.languages.DFS(e[l], t, null, a)))
|
|
}
|
|
},
|
|
plugins: {},
|
|
highlightAll: function (e, t) {
|
|
n.highlightAllUnder(document, e, t)
|
|
},
|
|
highlightAllUnder: function (e, t, r) {
|
|
var a = {
|
|
callback: r,
|
|
selector: 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'
|
|
};
|
|
n.hooks.run("before-highlightall", a);
|
|
for (var l, i = a.elements || e.querySelectorAll(a.selector), o = 0; l = i[o++];) n.highlightElement(l, t === !0, a.callback)
|
|
},
|
|
highlightElement: function (t, r, a) {
|
|
for (var l, i, o = t; o && !e.test(o.className);) o = o.parentNode;
|
|
o && (l = (o.className.match(e) || [, ""])[1].toLowerCase(), i = n.languages[l]), t.className = t.className.replace(e, "").replace(/\s+/g, " ") + " language-" + l, t.parentNode && (o = t.parentNode, /pre/i.test(o.nodeName) && (o.className = o.className.replace(e, "").replace(/\s+/g, " ") + " language-" + l));
|
|
var s = t.textContent,
|
|
u = {
|
|
element: t,
|
|
language: l,
|
|
grammar: i,
|
|
code: s
|
|
};
|
|
if (n.hooks.run("before-sanity-check", u), !u.code || !u.grammar) return u.code && (n.hooks.run("before-highlight", u), u.element.textContent = u.code, n.hooks.run("after-highlight", u)), n.hooks.run("complete", u), void 0;
|
|
if (n.hooks.run("before-highlight", u), r && _self.Worker) {
|
|
var g = new Worker(n.filename);
|
|
g.onmessage = function (e) {
|
|
u.highlightedCode = e.data, n.hooks.run("before-insert", u), u.element.innerHTML = u.highlightedCode, n.hooks.run("after-highlight", u), n.hooks.run("complete", u), a && a.call(u.element)
|
|
}, g.postMessage(JSON.stringify({
|
|
language: u.language,
|
|
code: u.code,
|
|
immediateClose: !0
|
|
}))
|
|
} else u.highlightedCode = n.highlight(u.code, u.grammar, u.language), n.hooks.run("before-insert", u), u.element.innerHTML = u.highlightedCode, n.hooks.run("after-highlight", u), n.hooks.run("complete", u), a && a.call(t)
|
|
},
|
|
highlight: function (e, t, a) {
|
|
var l = {
|
|
code: e,
|
|
grammar: t,
|
|
language: a
|
|
};
|
|
return n.hooks.run("before-tokenize", l), l.tokens = n.tokenize(l.code, l.grammar), n.hooks.run("after-tokenize", l), r.stringify(n.util.encode(l.tokens), l.language)
|
|
},
|
|
matchGrammar: function (e, t, r, a, l, i, o) {
|
|
var s = n.Token;
|
|
for (var u in r)
|
|
if (r.hasOwnProperty(u) && r[u]) {
|
|
if (u == o) return;
|
|
var g = r[u];
|
|
g = "Array" === n.util.type(g) ? g : [g];
|
|
for (var c = 0; c < g.length; ++c) {
|
|
var h = g[c],
|
|
f = h.inside,
|
|
d = !!h.lookbehind,
|
|
m = !!h.greedy,
|
|
p = 0,
|
|
y = h.alias;
|
|
if (m && !h.pattern.global) {
|
|
var v = h.pattern.toString().match(/[imuy]*$/)[0];
|
|
h.pattern = RegExp(h.pattern.source, v + "g")
|
|
}
|
|
h = h.pattern || h;
|
|
for (var b = a, k = l; b < t.length; k += t[b].length, ++b) {
|
|
var w = t[b];
|
|
if (t.length > e.length) return;
|
|
if (!(w instanceof s)) {
|
|
if (m && b != t.length - 1) {
|
|
h.lastIndex = k;
|
|
var _ = h.exec(e);
|
|
if (!_) break;
|
|
for (var j = _.index + (d ? _[1].length : 0), P = _.index + _[0].length, A = b, x = k, O = t.length; O > A && (P > x || !t[A].type && !t[A - 1].greedy); ++A) x += t[A].length, j >= x && (++b, k = x);
|
|
if (t[b] instanceof s) continue;
|
|
I = A - b, w = e.slice(k, x), _.index -= k
|
|
} else {
|
|
h.lastIndex = 0;
|
|
var _ = h.exec(w),
|
|
I = 1
|
|
}
|
|
if (_) {
|
|
d && (p = _[1] ? _[1].length : 0);
|
|
var j = _.index + p,
|
|
_ = _[0].slice(p),
|
|
P = j + _.length,
|
|
N = w.slice(0, j),
|
|
S = w.slice(P),
|
|
C = [b, I];
|
|
N && (++b, k += N.length, C.push(N));
|
|
var E = new s(u, f ? n.tokenize(_, f) : _, y, _, m);
|
|
if (C.push(E), S && C.push(S), Array.prototype.splice.apply(t, C), 1 != I && n.matchGrammar(e, t, r, b, k, !0, u), i) break
|
|
} else if (i) break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
tokenize: function (e, t) {
|
|
var r = [e],
|
|
a = t.rest;
|
|
if (a) {
|
|
for (var l in a) t[l] = a[l];
|
|
delete t.rest
|
|
}
|
|
return n.matchGrammar(e, r, t, 0, 0, !1), r
|
|
},
|
|
hooks: {
|
|
all: {},
|
|
add: function (e, t) {
|
|
var r = n.hooks.all;
|
|
r[e] = r[e] || [], r[e].push(t)
|
|
},
|
|
run: function (e, t) {
|
|
var r = n.hooks.all[e];
|
|
if (r && r.length)
|
|
for (var a, l = 0; a = r[l++];) a(t)
|
|
}
|
|
}
|
|
},
|
|
r = n.Token = function (e, t, n, r, a) {
|
|
this.type = e, this.content = t, this.alias = n, this.length = 0 | (r || "").length, this.greedy = !!a
|
|
};
|
|
if (r.stringify = function (e, t, a) {
|
|
if ("string" == typeof e) return e;
|
|
if ("Array" === n.util.type(e)) return e.map(function (n) {
|
|
return r.stringify(n, t, e)
|
|
}).join("");
|
|
var l = {
|
|
type: e.type,
|
|
content: r.stringify(e.content, t, a),
|
|
tag: "span",
|
|
classes: ["token", e.type],
|
|
attributes: {},
|
|
language: t,
|
|
parent: a
|
|
};
|
|
if (e.alias) {
|
|
var i = "Array" === n.util.type(e.alias) ? e.alias : [e.alias];
|
|
Array.prototype.push.apply(l.classes, i)
|
|
}
|
|
n.hooks.run("wrap", l);
|
|
var o = Object.keys(l.attributes).map(function (e) {
|
|
return e + '="' + (l.attributes[e] || "").replace(/"/g, """) + '"'
|
|
}).join(" ");
|
|
return "<" + l.tag + ' class="' + l.classes.join(" ") + '"' + (o ? " " + o : "") + ">" + l.content + "</" + l.tag + ">"
|
|
}, !_self.document) return _self.addEventListener ? (n.disableWorkerMessageHandler || _self.addEventListener("message", function (e) {
|
|
var t = JSON.parse(e.data),
|
|
r = t.language,
|
|
a = t.code,
|
|
l = t.immediateClose;
|
|
_self.postMessage(n.highlight(a, n.languages[r], r)), l && _self.close()
|
|
}, !1), _self.Prism) : _self.Prism;
|
|
var a = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop();
|
|
return a && (n.filename = a.src, n.manual || a.hasAttribute("data-manual") || ("loading" !== document.readyState ? window.requestAnimationFrame ? window.requestAnimationFrame(n.highlightAll) : window.setTimeout(n.highlightAll, 16) : document.addEventListener("DOMContentLoaded", n.highlightAll))), _self.Prism
|
|
}();
|
|
"undefined" != typeof module && module.exports && (module.exports = Prism), "undefined" != typeof global && (global.Prism = Prism);
|
|
Prism.languages.markup = {
|
|
comment: /<!--[\s\S]*?-->/,
|
|
prolog: /<\?[\s\S]+?\?>/,
|
|
doctype: /<!DOCTYPE[\s\S]+?>/i,
|
|
cdata: /<!\[CDATA\[[\s\S]*?]]>/i,
|
|
tag: {
|
|
pattern: /<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,
|
|
greedy: !0,
|
|
inside: {
|
|
tag: {
|
|
pattern: /^<\/?[^\s>\/]+/i,
|
|
inside: {
|
|
punctuation: /^<\/?/,
|
|
namespace: /^[^\s>\/:]+:/
|
|
}
|
|
},
|
|
"attr-value": {
|
|
pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,
|
|
inside: {
|
|
punctuation: [/^=/, {
|
|
pattern: /(^|[^\\])["']/,
|
|
lookbehind: !0
|
|
}]
|
|
}
|
|
},
|
|
punctuation: /\/?>/,
|
|
"attr-name": {
|
|
pattern: /[^\s>\/]+/,
|
|
inside: {
|
|
namespace: /^[^\s>\/:]+:/
|
|
}
|
|
}
|
|
}
|
|
},
|
|
entity: /&#?[\da-z]{1,8};/i
|
|
}, Prism.languages.markup.tag.inside["attr-value"].inside.entity = Prism.languages.markup.entity, Prism.hooks.add("wrap", function (a) {
|
|
"entity" === a.type && (a.attributes.title = a.content.replace(/&/, "&"))
|
|
}), Prism.languages.xml = Prism.languages.markup, Prism.languages.html = Prism.languages.markup, Prism.languages.mathml = Prism.languages.markup, Prism.languages.svg = Prism.languages.markup;
|
|
Prism.languages.css = {
|
|
comment: /\/\*[\s\S]*?\*\//,
|
|
atrule: {
|
|
pattern: /@[\w-]+?.*?(?:;|(?=\s*\{))/i,
|
|
inside: {
|
|
rule: /@[\w-]+/
|
|
}
|
|
},
|
|
url: /url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,
|
|
selector: /[^{}\s][^{};]*?(?=\s*\{)/,
|
|
string: {
|
|
pattern: /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
|
|
greedy: !0
|
|
},
|
|
property: /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,
|
|
important: /!important\b/i,
|
|
"function": /[-a-z0-9]+(?=\()/i,
|
|
punctuation: /[(){};:]/
|
|
}, Prism.languages.css.atrule.inside.rest = Prism.languages.css, Prism.languages.markup && (Prism.languages.insertBefore("markup", "tag", {
|
|
style: {
|
|
pattern: /(<style[\s\S]*?>)[\s\S]*?(?=<\/style>)/i,
|
|
lookbehind: !0,
|
|
inside: Prism.languages.css,
|
|
alias: "language-css",
|
|
greedy: !0
|
|
}
|
|
}), Prism.languages.insertBefore("inside", "attr-value", {
|
|
"style-attr": {
|
|
pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,
|
|
inside: {
|
|
"attr-name": {
|
|
pattern: /^\s*style/i,
|
|
inside: Prism.languages.markup.tag.inside
|
|
},
|
|
punctuation: /^\s*=\s*['"]|['"]\s*$/,
|
|
"attr-value": {
|
|
pattern: /.+/i,
|
|
inside: Prism.languages.css
|
|
}
|
|
},
|
|
alias: "language-css"
|
|
}
|
|
}, Prism.languages.markup.tag));
|
|
Prism.languages.clike = {
|
|
comment: [{
|
|
pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,
|
|
lookbehind: !0
|
|
}, {
|
|
pattern: /(^|[^\\:])\/\/.*/,
|
|
lookbehind: !0,
|
|
greedy: !0
|
|
}],
|
|
string: {
|
|
pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
|
|
greedy: !0
|
|
},
|
|
"class-name": {
|
|
pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,
|
|
lookbehind: !0,
|
|
inside: {
|
|
punctuation: /[.\\]/
|
|
}
|
|
},
|
|
keyword: /\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,
|
|
"boolean": /\b(?:true|false)\b/,
|
|
"function": /\w+(?=\()/,
|
|
number: /\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,
|
|
operator: /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,
|
|
punctuation: /[{}[\];(),.:]/
|
|
};
|
|
Prism.languages.javascript = Prism.languages.extend("clike", {
|
|
"class-name": [Prism.languages.clike["class-name"], {
|
|
pattern: /(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,
|
|
lookbehind: !0
|
|
}],
|
|
keyword: [{
|
|
pattern: /((?:^|})\s*)(?:catch|finally)\b/,
|
|
lookbehind: !0
|
|
}, /\b(?:as|async|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/],
|
|
number: /\b(?:(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+)n?|\d+n|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,
|
|
"function": /[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\(|\.(?:apply|bind|call)\()/,
|
|
operator: /-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/
|
|
}), Prism.languages.javascript["class-name"][0].pattern = /(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/, Prism.languages.insertBefore("javascript", "keyword", {
|
|
regex: {
|
|
pattern: /((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,
|
|
lookbehind: !0,
|
|
greedy: !0
|
|
},
|
|
"function-variable": {
|
|
pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,
|
|
alias: "function"
|
|
},
|
|
constant: /\b[A-Z][A-Z\d_]*\b/
|
|
}), Prism.languages.insertBefore("javascript", "string", {
|
|
"template-string": {
|
|
pattern: /`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,
|
|
greedy: !0,
|
|
inside: {
|
|
interpolation: {
|
|
pattern: /\${[^}]+}/,
|
|
inside: {
|
|
"interpolation-punctuation": {
|
|
pattern: /^\${|}$/,
|
|
alias: "punctuation"
|
|
},
|
|
rest: Prism.languages.javascript
|
|
}
|
|
},
|
|
string: /[\s\S]+/
|
|
}
|
|
}
|
|
}), Prism.languages.markup && Prism.languages.insertBefore("markup", "tag", {
|
|
script: {
|
|
pattern: /(<script[\s\S]*?>)[\s\S]*?(?=<\/script>)/i,
|
|
lookbehind: !0,
|
|
inside: Prism.languages.javascript,
|
|
alias: "language-javascript",
|
|
greedy: !0
|
|
}
|
|
}), Prism.languages.js = Prism.languages.javascript;
|
|
! function () {
|
|
if ("undefined" != typeof self && self.Prism && self.document) {
|
|
var e = "line-numbers",
|
|
t = /\n(?!$)/g,
|
|
n = function (e) {
|
|
var n = r(e),
|
|
s = n["white-space"];
|
|
if ("pre-wrap" === s || "pre-line" === s) {
|
|
var l = e.querySelector("code"),
|
|
i = e.querySelector(".line-numbers-rows"),
|
|
a = e.querySelector(".line-numbers-sizer"),
|
|
o = l.textContent.split(t);
|
|
a || (a = document.createElement("span"), a.className = "line-numbers-sizer", l.appendChild(a)), a.style.display = "block", o.forEach(function (e, t) {
|
|
a.textContent = e || "\n";
|
|
var n = a.getBoundingClientRect().height;
|
|
i.children[t].style.height = n + "px"
|
|
}), a.textContent = "", a.style.display = "none"
|
|
}
|
|
},
|
|
r = function (e) {
|
|
return e ? window.getComputedStyle ? getComputedStyle(e) : e.currentStyle || null : null
|
|
};
|
|
window.addEventListener("resize", function () {
|
|
Array.prototype.forEach.call(document.querySelectorAll("pre." + e), n)
|
|
}), Prism.hooks.add("complete", function (e) {
|
|
if (e.code) {
|
|
var r = e.element.parentNode,
|
|
s = /\s*\bline-numbers\b\s*/;
|
|
if (r && /pre/i.test(r.nodeName) && (s.test(r.className) || s.test(e.element.className)) && !e.element.querySelector(".line-numbers-rows")) {
|
|
s.test(e.element.className) && (e.element.className = e.element.className.replace(s, " ")), s.test(r.className) || (r.className += " line-numbers");
|
|
var l, i = e.code.match(t),
|
|
a = i ? i.length + 1 : 1,
|
|
o = new Array(a + 1);
|
|
o = o.join("<span></span>"), l = document.createElement("span"), l.setAttribute("aria-hidden", "true"), l.className = "line-numbers-rows", l.innerHTML = o, r.hasAttribute("data-start") && (r.style.counterReset = "linenumber " + (parseInt(r.getAttribute("data-start"), 10) - 1)), e.element.appendChild(l), n(r), Prism.hooks.run("line-numbers", e)
|
|
}
|
|
}
|
|
}), Prism.hooks.add("line-numbers", function (e) {
|
|
e.plugins = e.plugins || {}, e.plugins.lineNumbers = !0
|
|
}), Prism.plugins.lineNumbers = {
|
|
getLine: function (t, n) {
|
|
if ("PRE" === t.tagName && t.classList.contains(e)) {
|
|
var r = t.querySelector(".line-numbers-rows"),
|
|
s = parseInt(t.getAttribute("data-start"), 10) || 1,
|
|
l = s + (r.children.length - 1);
|
|
s > n && (n = s), n > l && (n = l);
|
|
var i = n - s;
|
|
return r.children[i]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}();
|
|
|
|
|
|
|
|
/*!
|
|
* clipboard.js v2.0.4
|
|
* https://zenorocha.github.io/clipboard.js
|
|
*
|
|
* Licensed MIT © Zeno Rocha
|
|
*/
|
|
! function (t, e) {
|
|
"object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.ClipboardJS = e() : t.ClipboardJS = e()
|
|
}(this, function () {
|
|
return function (n) {
|
|
var o = {};
|
|
|
|
function r(t) {
|
|
if (o[t]) return o[t].exports;
|
|
var e = o[t] = {
|
|
i: t,
|
|
l: !1,
|
|
exports: {}
|
|
};
|
|
return n[t].call(e.exports, e, e.exports, r), e.l = !0, e.exports
|
|
}
|
|
return r.m = n, r.c = o, r.d = function (t, e, n) {
|
|
r.o(t, e) || Object.defineProperty(t, e, {
|
|
enumerable: !0,
|
|
get: n
|
|
})
|
|
}, r.r = function (t) {
|
|
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
|
|
value: "Module"
|
|
}), Object.defineProperty(t, "__esModule", {
|
|
value: !0
|
|
})
|
|
}, r.t = function (e, t) {
|
|
if (1 & t && (e = r(e)), 8 & t) return e;
|
|
if (4 & t && "object" == typeof e && e && e.__esModule) return e;
|
|
var n = Object.create(null);
|
|
if (r.r(n), Object.defineProperty(n, "default", {
|
|
enumerable: !0,
|
|
value: e
|
|
}), 2 & t && "string" != typeof e)
|
|
for (var o in e) r.d(n, o, function (t) {
|
|
return e[t]
|
|
}.bind(null, o));
|
|
return n
|
|
}, r.n = function (t) {
|
|
var e = t && t.__esModule ? function () {
|
|
return t.default
|
|
} : function () {
|
|
return t
|
|
};
|
|
return r.d(e, "a", e), e
|
|
}, r.o = function (t, e) {
|
|
return Object.prototype.hasOwnProperty.call(t, e)
|
|
}, r.p = "", r(r.s = 0)
|
|
}([function (t, e, n) {
|
|
"use strict";
|
|
var r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) {
|
|
return typeof t
|
|
} : function (t) {
|
|
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
|
|
},
|
|
i = function () {
|
|
function o(t, e) {
|
|
for (var n = 0; n < e.length; n++) {
|
|
var o = e[n];
|
|
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o)
|
|
}
|
|
}
|
|
return function (t, e, n) {
|
|
return e && o(t.prototype, e), n && o(t, n), t
|
|
}
|
|
}(),
|
|
a = o(n(1)),
|
|
c = o(n(3)),
|
|
u = o(n(4));
|
|
|
|
function o(t) {
|
|
return t && t.__esModule ? t : {
|
|
default: t
|
|
}
|
|
}
|
|
var l = function (t) {
|
|
function o(t, e) {
|
|
! function (t, e) {
|
|
if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
|
|
}(this, o);
|
|
var n = function (t, e) {
|
|
if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
return !e || "object" != typeof e && "function" != typeof e ? t : e
|
|
}(this, (o.__proto__ || Object.getPrototypeOf(o)).call(this));
|
|
return n.resolveOptions(e), n.listenClick(t), n
|
|
}
|
|
return function (t, e) {
|
|
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
|
|
t.prototype = Object.create(e && e.prototype, {
|
|
constructor: {
|
|
value: t,
|
|
enumerable: !1,
|
|
writable: !0,
|
|
configurable: !0
|
|
}
|
|
}), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
|
|
}(o, c.default), i(o, [{
|
|
key: "resolveOptions",
|
|
value: function () {
|
|
var t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {};
|
|
this.action = "function" == typeof t.action ? t.action : this.defaultAction, this.target = "function" == typeof t.target ? t.target : this.defaultTarget, this.text = "function" == typeof t.text ? t.text : this.defaultText, this.container = "object" === r(t.container) ? t.container : document.body
|
|
}
|
|
}, {
|
|
key: "listenClick",
|
|
value: function (t) {
|
|
var e = this;
|
|
this.listener = (0, u.default)(t, "click", function (t) {
|
|
return e.onClick(t)
|
|
})
|
|
}
|
|
}, {
|
|
key: "onClick",
|
|
value: function (t) {
|
|
var e = t.delegateTarget || t.currentTarget;
|
|
this.clipboardAction && (this.clipboardAction = null), this.clipboardAction = new a.default({
|
|
action: this.action(e),
|
|
target: this.target(e),
|
|
text: this.text(e),
|
|
container: this.container,
|
|
trigger: e,
|
|
emitter: this
|
|
})
|
|
}
|
|
}, {
|
|
key: "defaultAction",
|
|
value: function (t) {
|
|
return s("action", t)
|
|
}
|
|
}, {
|
|
key: "defaultTarget",
|
|
value: function (t) {
|
|
var e = s("target", t);
|
|
if (e) return document.querySelector(e)
|
|
}
|
|
}, {
|
|
key: "defaultText",
|
|
value: function (t) {
|
|
return s("text", t)
|
|
}
|
|
}, {
|
|
key: "destroy",
|
|
value: function () {
|
|
this.listener.destroy(), this.clipboardAction && (this.clipboardAction.destroy(), this.clipboardAction = null)
|
|
}
|
|
}], [{
|
|
key: "isSupported",
|
|
value: function () {
|
|
var t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : ["copy", "cut"],
|
|
e = "string" == typeof t ? [t] : t,
|
|
n = !!document.queryCommandSupported;
|
|
return e.forEach(function (t) {
|
|
n = n && !!document.queryCommandSupported(t)
|
|
}), n
|
|
}
|
|
}]), o
|
|
}();
|
|
|
|
function s(t, e) {
|
|
var n = "data-clipboard-" + t;
|
|
if (e.hasAttribute(n)) return e.getAttribute(n)
|
|
}
|
|
t.exports = l
|
|
}, function (t, e, n) {
|
|
"use strict";
|
|
var o, r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) {
|
|
return typeof t
|
|
} : function (t) {
|
|
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
|
|
},
|
|
i = function () {
|
|
function o(t, e) {
|
|
for (var n = 0; n < e.length; n++) {
|
|
var o = e[n];
|
|
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o)
|
|
}
|
|
}
|
|
return function (t, e, n) {
|
|
return e && o(t.prototype, e), n && o(t, n), t
|
|
}
|
|
}(),
|
|
a = n(2),
|
|
c = (o = a) && o.__esModule ? o : {
|
|
default: o
|
|
};
|
|
var u = function () {
|
|
function e(t) {
|
|
! function (t, e) {
|
|
if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
|
|
}(this, e), this.resolveOptions(t), this.initSelection()
|
|
}
|
|
return i(e, [{
|
|
key: "resolveOptions",
|
|
value: function () {
|
|
var t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {};
|
|
this.action = t.action, this.container = t.container, this.emitter = t.emitter, this.target = t.target, this.text = t.text, this.trigger = t.trigger, this.selectedText = ""
|
|
}
|
|
}, {
|
|
key: "initSelection",
|
|
value: function () {
|
|
this.text ? this.selectFake() : this.target && this.selectTarget()
|
|
}
|
|
}, {
|
|
key: "selectFake",
|
|
value: function () {
|
|
var t = this,
|
|
e = "rtl" == document.documentElement.getAttribute("dir");
|
|
this.removeFake(), this.fakeHandlerCallback = function () {
|
|
return t.removeFake()
|
|
}, this.fakeHandler = this.container.addEventListener("click", this.fakeHandlerCallback) || !0, this.fakeElem = document.createElement("textarea"), this.fakeElem.style.fontSize = "12pt", this.fakeElem.style.border = "0", this.fakeElem.style.padding = "0", this.fakeElem.style.margin = "0", this.fakeElem.style.position = "absolute", this.fakeElem.style[e ? "right" : "left"] = "-9999px";
|
|
var n = window.pageYOffset || document.documentElement.scrollTop;
|
|
this.fakeElem.style.top = n + "px", this.fakeElem.setAttribute("readonly", ""), this.fakeElem.value = this.text, this.container.appendChild(this.fakeElem), this.selectedText = (0, c.default)(this.fakeElem), this.copyText()
|
|
}
|
|
}, {
|
|
key: "removeFake",
|
|
value: function () {
|
|
this.fakeHandler && (this.container.removeEventListener("click", this.fakeHandlerCallback), this.fakeHandler = null, this.fakeHandlerCallback = null), this.fakeElem && (this.container.removeChild(this.fakeElem), this.fakeElem = null)
|
|
}
|
|
}, {
|
|
key: "selectTarget",
|
|
value: function () {
|
|
this.selectedText = (0, c.default)(this.target), this.copyText()
|
|
}
|
|
}, {
|
|
key: "copyText",
|
|
value: function () {
|
|
var e = void 0;
|
|
try {
|
|
e = document.execCommand(this.action)
|
|
} catch (t) {
|
|
e = !1
|
|
}
|
|
this.handleResult(e)
|
|
}
|
|
}, {
|
|
key: "handleResult",
|
|
value: function (t) {
|
|
this.emitter.emit(t ? "success" : "error", {
|
|
action: this.action,
|
|
text: this.selectedText,
|
|
trigger: this.trigger,
|
|
clearSelection: this.clearSelection.bind(this)
|
|
})
|
|
}
|
|
}, {
|
|
key: "clearSelection",
|
|
value: function () {
|
|
this.trigger && this.trigger.focus(), window.getSelection().removeAllRanges()
|
|
}
|
|
}, {
|
|
key: "destroy",
|
|
value: function () {
|
|
this.removeFake()
|
|
}
|
|
}, {
|
|
key: "action",
|
|
set: function () {
|
|
var t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "copy";
|
|
if (this._action = t, "copy" !== this._action && "cut" !== this._action) throw new Error('Invalid "action" value, use either "copy" or "cut"')
|
|
},
|
|
get: function () {
|
|
return this._action
|
|
}
|
|
}, {
|
|
key: "target",
|
|
set: function (t) {
|
|
if (void 0 !== t) {
|
|
if (!t || "object" !== (void 0 === t ? "undefined" : r(t)) || 1 !== t.nodeType) throw new Error('Invalid "target" value, use a valid Element');
|
|
if ("copy" === this.action && t.hasAttribute("disabled")) throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');
|
|
if ("cut" === this.action && (t.hasAttribute("readonly") || t.hasAttribute("disabled"))) throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');
|
|
this._target = t
|
|
}
|
|
},
|
|
get: function () {
|
|
return this._target
|
|
}
|
|
}]), e
|
|
}();
|
|
t.exports = u
|
|
}, function (t, e) {
|
|
t.exports = function (t) {
|
|
var e;
|
|
if ("SELECT" === t.nodeName) t.focus(), e = t.value;
|
|
else if ("INPUT" === t.nodeName || "TEXTAREA" === t.nodeName) {
|
|
var n = t.hasAttribute("readonly");
|
|
n || t.setAttribute("readonly", ""), t.select(), t.setSelectionRange(0, t.value.length), n || t.removeAttribute("readonly"), e = t.value
|
|
} else {
|
|
t.hasAttribute("contenteditable") && t.focus();
|
|
var o = window.getSelection(),
|
|
r = document.createRange();
|
|
r.selectNodeContents(t), o.removeAllRanges(), o.addRange(r), e = o.toString()
|
|
}
|
|
return e
|
|
}
|
|
}, function (t, e) {
|
|
function n() {}
|
|
n.prototype = {
|
|
on: function (t, e, n) {
|
|
var o = this.e || (this.e = {});
|
|
return (o[t] || (o[t] = [])).push({
|
|
fn: e,
|
|
ctx: n
|
|
}), this
|
|
},
|
|
once: function (t, e, n) {
|
|
var o = this;
|
|
|
|
function r() {
|
|
o.off(t, r), e.apply(n, arguments)
|
|
}
|
|
return r._ = e, this.on(t, r, n)
|
|
},
|
|
emit: function (t) {
|
|
for (var e = [].slice.call(arguments, 1), n = ((this.e || (this.e = {}))[t] || []).slice(), o = 0, r = n.length; o < r; o++) n[o].fn.apply(n[o].ctx, e);
|
|
return this
|
|
},
|
|
off: function (t, e) {
|
|
var n = this.e || (this.e = {}),
|
|
o = n[t],
|
|
r = [];
|
|
if (o && e)
|
|
for (var i = 0, a = o.length; i < a; i++) o[i].fn !== e && o[i].fn._ !== e && r.push(o[i]);
|
|
return r.length ? n[t] = r : delete n[t], this
|
|
}
|
|
}, t.exports = n
|
|
}, function (t, e, n) {
|
|
var d = n(5),
|
|
h = n(6);
|
|
t.exports = function (t, e, n) {
|
|
if (!t && !e && !n) throw new Error("Missing required arguments");
|
|
if (!d.string(e)) throw new TypeError("Second argument must be a String");
|
|
if (!d.fn(n)) throw new TypeError("Third argument must be a Function");
|
|
if (d.node(t)) return s = e, f = n, (l = t).addEventListener(s, f), {
|
|
destroy: function () {
|
|
l.removeEventListener(s, f)
|
|
}
|
|
};
|
|
if (d.nodeList(t)) return a = t, c = e, u = n, Array.prototype.forEach.call(a, function (t) {
|
|
t.addEventListener(c, u)
|
|
}), {
|
|
destroy: function () {
|
|
Array.prototype.forEach.call(a, function (t) {
|
|
t.removeEventListener(c, u)
|
|
})
|
|
}
|
|
};
|
|
if (d.string(t)) return o = t, r = e, i = n, h(document.body, o, r, i);
|
|
throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");
|
|
var o, r, i, a, c, u, l, s, f
|
|
}
|
|
}, function (t, n) {
|
|
n.node = function (t) {
|
|
return void 0 !== t && t instanceof HTMLElement && 1 === t.nodeType
|
|
}, n.nodeList = function (t) {
|
|
var e = Object.prototype.toString.call(t);
|
|
return void 0 !== t && ("[object NodeList]" === e || "[object HTMLCollection]" === e) && "length" in t && (0 === t.length || n.node(t[0]))
|
|
}, n.string = function (t) {
|
|
return "string" == typeof t || t instanceof String
|
|
}, n.fn = function (t) {
|
|
return "[object Function]" === Object.prototype.toString.call(t)
|
|
}
|
|
}, function (t, e, n) {
|
|
var a = n(7);
|
|
|
|
function i(t, e, n, o, r) {
|
|
var i = function (e, n, t, o) {
|
|
return function (t) {
|
|
t.delegateTarget = a(t.target, n), t.delegateTarget && o.call(e, t)
|
|
}
|
|
}.apply(this, arguments);
|
|
return t.addEventListener(n, i, r), {
|
|
destroy: function () {
|
|
t.removeEventListener(n, i, r)
|
|
}
|
|
}
|
|
}
|
|
t.exports = function (t, e, n, o, r) {
|
|
return "function" == typeof t.addEventListener ? i.apply(null, arguments) : "function" == typeof n ? i.bind(null, document).apply(null, arguments) : ("string" == typeof t && (t = document.querySelectorAll(t)), Array.prototype.map.call(t, function (t) {
|
|
return i(t, e, n, o, r)
|
|
}))
|
|
}
|
|
}, function (t, e) {
|
|
if ("undefined" != typeof Element && !Element.prototype.matches) {
|
|
var n = Element.prototype;
|
|
n.matches = n.matchesSelector || n.mozMatchesSelector || n.msMatchesSelector || n.oMatchesSelector || n.webkitMatchesSelector
|
|
}
|
|
t.exports = function (t, e) {
|
|
for (; t && 9 !== t.nodeType;) {
|
|
if ("function" == typeof t.matches && t.matches(e)) return t;
|
|
t = t.parentNode
|
|
}
|
|
}
|
|
}])
|
|
});
|
|
|
|
//
|
|
//
|
|
//
|
|
//
|
|
//
|
|
// Smoth scroll
|
|
//
|
|
//
|
|
//
|
|
//
|
|
//
|
|
/* == jquery mousewheel plugin == Version: 3.1.13, License: MIT License (MIT) */
|
|
! function (a) {
|
|
"function" == typeof define && define.amd ? define(["jquery"], a) : "object" == typeof exports ? module.exports = a : a(jQuery)
|
|
}(function (a) {
|
|
function b(b) {
|
|
var g = b || window.event,
|
|
h = i.call(arguments, 1),
|
|
j = 0,
|
|
l = 0,
|
|
m = 0,
|
|
n = 0,
|
|
o = 0,
|
|
p = 0;
|
|
if (b = a.event.fix(g), b.type = "mousewheel", "detail" in g && (m = -1 * g.detail), "wheelDelta" in g && (m = g.wheelDelta), "wheelDeltaY" in g && (m = g.wheelDeltaY), "wheelDeltaX" in g && (l = -1 * g.wheelDeltaX), "axis" in g && g.axis === g.HORIZONTAL_AXIS && (l = -1 * m, m = 0), j = 0 === m ? l : m, "deltaY" in g && (m = -1 * g.deltaY, j = m), "deltaX" in g && (l = g.deltaX, 0 === m && (j = -1 * l)), 0 !== m || 0 !== l) {
|
|
if (1 === g.deltaMode) {
|
|
var q = a.data(this, "mousewheel-line-height");
|
|
j *= q, m *= q, l *= q
|
|
} else if (2 === g.deltaMode) {
|
|
var r = a.data(this, "mousewheel-page-height");
|
|
j *= r, m *= r, l *= r
|
|
}
|
|
if (n = Math.max(Math.abs(m), Math.abs(l)), (!f || f > n) && (f = n, d(g, n) && (f /= 40)), d(g, n) && (j /= 40, l /= 40, m /= 40), j = Math[j >= 1 ? "floor" : "ceil"](j / f), l = Math[l >= 1 ? "floor" : "ceil"](l / f), m = Math[m >= 1 ? "floor" : "ceil"](m / f), k.settings.normalizeOffset && this.getBoundingClientRect) {
|
|
var s = this.getBoundingClientRect();
|
|
o = b.clientX - s.left, p = b.clientY - s.top
|
|
}
|
|
return b.deltaX = l, b.deltaY = m, b.deltaFactor = f, b.offsetX = o, b.offsetY = p, b.deltaMode = 0, h.unshift(b, j, l, m), e && clearTimeout(e), e = setTimeout(c, 200), (a.event.dispatch || a.event.handle).apply(this, h)
|
|
}
|
|
}
|
|
|
|
function c() {
|
|
f = null
|
|
}
|
|
|
|
function d(a, b) {
|
|
return k.settings.adjustOldDeltas && "mousewheel" === a.type && b % 120 === 0
|
|
}
|
|
var e, f, g = ["wheel", "mousewheel", "DOMMouseScroll", "MozMousePixelScroll"],
|
|
h = "onwheel" in document || document.documentMode >= 9 ? ["wheel"] : ["mousewheel", "DomMouseScroll", "MozMousePixelScroll"],
|
|
i = Array.prototype.slice;
|
|
if (a.event.fixHooks)
|
|
for (var j = g.length; j;) a.event.fixHooks[g[--j]] = a.event.mouseHooks;
|
|
var k = a.event.special.mousewheel = {
|
|
version: "3.1.12",
|
|
setup: function () {
|
|
if (this.addEventListener)
|
|
for (var c = h.length; c;) this.addEventListener(h[--c], b, !1);
|
|
else this.onmousewheel = b;
|
|
a.data(this, "mousewheel-line-height", k.getLineHeight(this)), a.data(this, "mousewheel-page-height", k.getPageHeight(this))
|
|
},
|
|
teardown: function () {
|
|
if (this.removeEventListener)
|
|
for (var c = h.length; c;) this.removeEventListener(h[--c], b, !1);
|
|
else this.onmousewheel = null;
|
|
a.removeData(this, "mousewheel-line-height"), a.removeData(this, "mousewheel-page-height")
|
|
},
|
|
getLineHeight: function (b) {
|
|
var c = a(b),
|
|
d = c["offsetParent" in a.fn ? "offsetParent" : "parent"]();
|
|
return d.length || (d = a("body")), parseInt(d.css("fontSize"), 10) || parseInt(c.css("fontSize"), 10) || 16
|
|
},
|
|
getPageHeight: function (b) {
|
|
return a(b).height()
|
|
},
|
|
settings: {
|
|
adjustOldDeltas: !0,
|
|
normalizeOffset: !0
|
|
}
|
|
};
|
|
a.fn.extend({
|
|
mousewheel: function (a) {
|
|
return a ? this.bind("mousewheel", a) : this.trigger("mousewheel")
|
|
},
|
|
unmousewheel: function (a) {
|
|
return this.unbind("mousewheel", a)
|
|
}
|
|
})
|
|
});
|
|
! function (a) {
|
|
"function" == typeof define && define.amd ? define(["jquery"], a) : "object" == typeof exports ? module.exports = a : a(jQuery)
|
|
}(function (a) {
|
|
function b(b) {
|
|
var g = b || window.event,
|
|
h = i.call(arguments, 1),
|
|
j = 0,
|
|
l = 0,
|
|
m = 0,
|
|
n = 0,
|
|
o = 0,
|
|
p = 0;
|
|
if (b = a.event.fix(g), b.type = "mousewheel", "detail" in g && (m = -1 * g.detail), "wheelDelta" in g && (m = g.wheelDelta), "wheelDeltaY" in g && (m = g.wheelDeltaY), "wheelDeltaX" in g && (l = -1 * g.wheelDeltaX), "axis" in g && g.axis === g.HORIZONTAL_AXIS && (l = -1 * m, m = 0), j = 0 === m ? l : m, "deltaY" in g && (m = -1 * g.deltaY, j = m), "deltaX" in g && (l = g.deltaX, 0 === m && (j = -1 * l)), 0 !== m || 0 !== l) {
|
|
if (1 === g.deltaMode) {
|
|
var q = a.data(this, "mousewheel-line-height");
|
|
j *= q, m *= q, l *= q
|
|
} else if (2 === g.deltaMode) {
|
|
var r = a.data(this, "mousewheel-page-height");
|
|
j *= r, m *= r, l *= r
|
|
}
|
|
if (n = Math.max(Math.abs(m), Math.abs(l)), (!f || f > n) && (f = n, d(g, n) && (f /= 40)), d(g, n) && (j /= 40, l /= 40, m /= 40), j = Math[j >= 1 ? "floor" : "ceil"](j / f), l = Math[l >= 1 ? "floor" : "ceil"](l / f), m = Math[m >= 1 ? "floor" : "ceil"](m / f), k.settings.normalizeOffset && this.getBoundingClientRect) {
|
|
var s = this.getBoundingClientRect();
|
|
o = b.clientX - s.left, p = b.clientY - s.top
|
|
}
|
|
return b.deltaX = l, b.deltaY = m, b.deltaFactor = f, b.offsetX = o, b.offsetY = p, b.deltaMode = 0, h.unshift(b, j, l, m), e && clearTimeout(e), e = setTimeout(c, 200), (a.event.dispatch || a.event.handle).apply(this, h)
|
|
}
|
|
}
|
|
|
|
function c() {
|
|
f = null
|
|
}
|
|
|
|
function d(a, b) {
|
|
return k.settings.adjustOldDeltas && "mousewheel" === a.type && b % 120 === 0
|
|
}
|
|
var e, f, g = ["wheel", "mousewheel", "DOMMouseScroll", "MozMousePixelScroll"],
|
|
h = "onwheel" in document || document.documentMode >= 9 ? ["wheel"] : ["mousewheel", "DomMouseScroll", "MozMousePixelScroll"],
|
|
i = Array.prototype.slice;
|
|
if (a.event.fixHooks)
|
|
for (var j = g.length; j;) a.event.fixHooks[g[--j]] = a.event.mouseHooks;
|
|
var k = a.event.special.mousewheel = {
|
|
version: "3.1.12",
|
|
setup: function () {
|
|
if (this.addEventListener)
|
|
for (var c = h.length; c;) this.addEventListener(h[--c], b, !1);
|
|
else this.onmousewheel = b;
|
|
a.data(this, "mousewheel-line-height", k.getLineHeight(this)), a.data(this, "mousewheel-page-height", k.getPageHeight(this))
|
|
},
|
|
teardown: function () {
|
|
if (this.removeEventListener)
|
|
for (var c = h.length; c;) this.removeEventListener(h[--c], b, !1);
|
|
else this.onmousewheel = null;
|
|
a.removeData(this, "mousewheel-line-height"), a.removeData(this, "mousewheel-page-height")
|
|
},
|
|
getLineHeight: function (b) {
|
|
var c = a(b),
|
|
d = c["offsetParent" in a.fn ? "offsetParent" : "parent"]();
|
|
return d.length || (d = a("body")), parseInt(d.css("fontSize"), 10) || parseInt(c.css("fontSize"), 10) || 16
|
|
},
|
|
getPageHeight: function (b) {
|
|
return a(b).height()
|
|
},
|
|
settings: {
|
|
adjustOldDeltas: !0,
|
|
normalizeOffset: !0
|
|
}
|
|
};
|
|
a.fn.extend({
|
|
mousewheel: function (a) {
|
|
return a ? this.bind("mousewheel", a) : this.trigger("mousewheel")
|
|
},
|
|
unmousewheel: function (a) {
|
|
return this.unbind("mousewheel", a)
|
|
}
|
|
})
|
|
});
|
|
/* == malihu jquery custom scrollbar plugin == Version: 3.1.5, License: MIT License (MIT) */
|
|
! function (e) {
|
|
"function" == typeof define && define.amd ? define(["jquery"], e) : "undefined" != typeof module && module.exports ? module.exports = e : e(jQuery, window, document)
|
|
}(function (e) {
|
|
! function (t) {
|
|
var o = "function" == typeof define && define.amd,
|
|
a = "undefined" != typeof module && module.exports,
|
|
n = "https:" == document.location.protocol ? "https:" : "http:",
|
|
i = "cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js";
|
|
o || (a ? require("jquery-mousewheel")(e) : e.event.special.mousewheel || e("head").append(decodeURI("%3Cscript src=" + n + "//" + i + "%3E%3C/script%3E"))), t()
|
|
}(function () {
|
|
var t, o = "mCustomScrollbar",
|
|
a = "mCS",
|
|
n = ".mCustomScrollbar",
|
|
i = {
|
|
setTop: 0,
|
|
setLeft: 0,
|
|
axis: "y",
|
|
scrollbarPosition: "inside",
|
|
scrollInertia: 950,
|
|
autoDraggerLength: !0,
|
|
alwaysShowScrollbar: 0,
|
|
snapOffset: 0,
|
|
mouseWheel: {
|
|
enable: !0,
|
|
scrollAmount: "auto",
|
|
axis: "y",
|
|
deltaFactor: "auto",
|
|
disableOver: ["select", "option", "keygen", "datalist", "textarea"]
|
|
},
|
|
scrollButtons: {
|
|
scrollType: "stepless",
|
|
scrollAmount: "auto"
|
|
},
|
|
keyboard: {
|
|
enable: !0,
|
|
scrollType: "stepless",
|
|
scrollAmount: "auto"
|
|
},
|
|
contentTouchScroll: 25,
|
|
documentTouchScroll: !0,
|
|
advanced: {
|
|
autoScrollOnFocus: "input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",
|
|
updateOnContentResize: !0,
|
|
updateOnImageLoad: "auto",
|
|
autoUpdateTimeout: 60
|
|
},
|
|
theme: "light",
|
|
callbacks: {
|
|
onTotalScrollOffset: 0,
|
|
onTotalScrollBackOffset: 0,
|
|
alwaysTriggerOffsets: !0
|
|
}
|
|
},
|
|
r = 0,
|
|
l = {},
|
|
s = window.attachEvent && !window.addEventListener ? 1 : 0,
|
|
c = !1,
|
|
d = ["mCSB_dragger_onDrag", "mCSB_scrollTools_onDrag", "mCS_img_loaded", "mCS_disabled", "mCS_destroyed", "mCS_no_scrollbar", "mCS-autoHide", "mCS-dir-rtl", "mCS_no_scrollbar_y", "mCS_no_scrollbar_x", "mCS_y_hidden", "mCS_x_hidden", "mCSB_draggerContainer", "mCSB_buttonUp", "mCSB_buttonDown", "mCSB_buttonLeft", "mCSB_buttonRight"],
|
|
u = {
|
|
init: function (t) {
|
|
var t = e.extend(!0, {}, i, t),
|
|
o = f.call(this);
|
|
if (t.live) {
|
|
var s = t.liveSelector || this.selector || n,
|
|
c = e(s);
|
|
if ("off" === t.live) return void m(s);
|
|
l[s] = setTimeout(function () {
|
|
c.mCustomScrollbar(t), "once" === t.live && c.length && m(s)
|
|
}, 500)
|
|
} else m(s);
|
|
return t.setWidth = t.set_width ? t.set_width : t.setWidth, t.setHeight = t.set_height ? t.set_height : t.setHeight, t.axis = t.horizontalScroll ? "x" : p(t.axis), t.scrollInertia = t.scrollInertia > 0 && t.scrollInertia < 17 ? 17 : t.scrollInertia, "object" != typeof t.mouseWheel && 1 == t.mouseWheel && (t.mouseWheel = {
|
|
enable: !0,
|
|
scrollAmount: "auto",
|
|
axis: "y",
|
|
preventDefault: !1,
|
|
deltaFactor: "auto",
|
|
normalizeDelta: !1,
|
|
invert: !1
|
|
}), t.mouseWheel.scrollAmount = t.mouseWheelPixels ? t.mouseWheelPixels : t.mouseWheel.scrollAmount, t.mouseWheel.normalizeDelta = t.advanced.normalizeMouseWheelDelta ? t.advanced.normalizeMouseWheelDelta : t.mouseWheel.normalizeDelta, t.scrollButtons.scrollType = g(t.scrollButtons.scrollType), h(t), e(o).each(function () {
|
|
var o = e(this);
|
|
if (!o.data(a)) {
|
|
o.data(a, {
|
|
idx: ++r,
|
|
opt: t,
|
|
scrollRatio: {
|
|
y: null,
|
|
x: null
|
|
},
|
|
overflowed: null,
|
|
contentReset: {
|
|
y: null,
|
|
x: null
|
|
},
|
|
bindEvents: !1,
|
|
tweenRunning: !1,
|
|
sequential: {},
|
|
langDir: o.css("direction"),
|
|
cbOffsets: null,
|
|
trigger: null,
|
|
poll: {
|
|
size: {
|
|
o: 0,
|
|
n: 0
|
|
},
|
|
img: {
|
|
o: 0,
|
|
n: 0
|
|
},
|
|
change: {
|
|
o: 0,
|
|
n: 0
|
|
}
|
|
}
|
|
});
|
|
var n = o.data(a),
|
|
i = n.opt,
|
|
l = o.data("mcs-axis"),
|
|
s = o.data("mcs-scrollbar-position"),
|
|
c = o.data("mcs-theme");
|
|
l && (i.axis = l), s && (i.scrollbarPosition = s), c && (i.theme = c, h(i)), v.call(this), n && i.callbacks.onCreate && "function" == typeof i.callbacks.onCreate && i.callbacks.onCreate.call(this), e("#mCSB_" + n.idx + "_container img:not(." + d[2] + ")").addClass(d[2]), u.update.call(null, o)
|
|
}
|
|
})
|
|
},
|
|
update: function (t, o) {
|
|
var n = t || f.call(this);
|
|
return e(n).each(function () {
|
|
var t = e(this);
|
|
if (t.data(a)) {
|
|
var n = t.data(a),
|
|
i = n.opt,
|
|
r = e("#mCSB_" + n.idx + "_container"),
|
|
l = e("#mCSB_" + n.idx),
|
|
s = [e("#mCSB_" + n.idx + "_dragger_vertical"), e("#mCSB_" + n.idx + "_dragger_horizontal")];
|
|
if (!r.length) return;
|
|
n.tweenRunning && Q(t), o && n && i.callbacks.onBeforeUpdate && "function" == typeof i.callbacks.onBeforeUpdate && i.callbacks.onBeforeUpdate.call(this), t.hasClass(d[3]) && t.removeClass(d[3]), t.hasClass(d[4]) && t.removeClass(d[4]), l.css("max-height", "none"), l.height() !== t.height() && l.css("max-height", t.height()), _.call(this), "y" === i.axis || i.advanced.autoExpandHorizontalScroll || r.css("width", x(r)), n.overflowed = y.call(this), M.call(this), i.autoDraggerLength && S.call(this), b.call(this), T.call(this);
|
|
var c = [Math.abs(r[0].offsetTop), Math.abs(r[0].offsetLeft)];
|
|
"x" !== i.axis && (n.overflowed[0] ? s[0].height() > s[0].parent().height() ? B.call(this) : (G(t, c[0].toString(), {
|
|
dir: "y",
|
|
dur: 0,
|
|
overwrite: "none"
|
|
}), n.contentReset.y = null) : (B.call(this), "y" === i.axis ? k.call(this) : "yx" === i.axis && n.overflowed[1] && G(t, c[1].toString(), {
|
|
dir: "x",
|
|
dur: 0,
|
|
overwrite: "none"
|
|
}))), "y" !== i.axis && (n.overflowed[1] ? s[1].width() > s[1].parent().width() ? B.call(this) : (G(t, c[1].toString(), {
|
|
dir: "x",
|
|
dur: 0,
|
|
overwrite: "none"
|
|
}), n.contentReset.x = null) : (B.call(this), "x" === i.axis ? k.call(this) : "yx" === i.axis && n.overflowed[0] && G(t, c[0].toString(), {
|
|
dir: "y",
|
|
dur: 0,
|
|
overwrite: "none"
|
|
}))), o && n && (2 === o && i.callbacks.onImageLoad && "function" == typeof i.callbacks.onImageLoad ? i.callbacks.onImageLoad.call(this) : 3 === o && i.callbacks.onSelectorChange && "function" == typeof i.callbacks.onSelectorChange ? i.callbacks.onSelectorChange.call(this) : i.callbacks.onUpdate && "function" == typeof i.callbacks.onUpdate && i.callbacks.onUpdate.call(this)), N.call(this)
|
|
}
|
|
})
|
|
},
|
|
scrollTo: function (t, o) {
|
|
if ("undefined" != typeof t && null != t) {
|
|
var n = f.call(this);
|
|
return e(n).each(function () {
|
|
var n = e(this);
|
|
if (n.data(a)) {
|
|
var i = n.data(a),
|
|
r = i.opt,
|
|
l = {
|
|
trigger: "external",
|
|
scrollInertia: r.scrollInertia,
|
|
scrollEasing: "mcsEaseInOut",
|
|
moveDragger: !1,
|
|
timeout: 60,
|
|
callbacks: !0,
|
|
onStart: !0,
|
|
onUpdate: !0,
|
|
onComplete: !0
|
|
},
|
|
s = e.extend(!0, {}, l, o),
|
|
c = Y.call(this, t),
|
|
d = s.scrollInertia > 0 && s.scrollInertia < 17 ? 17 : s.scrollInertia;
|
|
c[0] = X.call(this, c[0], "y"), c[1] = X.call(this, c[1], "x"), s.moveDragger && (c[0] *= i.scrollRatio.y, c[1] *= i.scrollRatio.x), s.dur = ne() ? 0 : d, setTimeout(function () {
|
|
null !== c[0] && "undefined" != typeof c[0] && "x" !== r.axis && i.overflowed[0] && (s.dir = "y", s.overwrite = "all", G(n, c[0].toString(), s)), null !== c[1] && "undefined" != typeof c[1] && "y" !== r.axis && i.overflowed[1] && (s.dir = "x", s.overwrite = "none", G(n, c[1].toString(), s))
|
|
}, s.timeout)
|
|
}
|
|
})
|
|
}
|
|
},
|
|
stop: function () {
|
|
var t = f.call(this);
|
|
return e(t).each(function () {
|
|
var t = e(this);
|
|
t.data(a) && Q(t)
|
|
})
|
|
},
|
|
disable: function (t) {
|
|
var o = f.call(this);
|
|
return e(o).each(function () {
|
|
var o = e(this);
|
|
if (o.data(a)) {
|
|
o.data(a);
|
|
N.call(this, "remove"), k.call(this), t && B.call(this), M.call(this, !0), o.addClass(d[3])
|
|
}
|
|
})
|
|
},
|
|
destroy: function () {
|
|
var t = f.call(this);
|
|
return e(t).each(function () {
|
|
var n = e(this);
|
|
if (n.data(a)) {
|
|
var i = n.data(a),
|
|
r = i.opt,
|
|
l = e("#mCSB_" + i.idx),
|
|
s = e("#mCSB_" + i.idx + "_container"),
|
|
c = e(".mCSB_" + i.idx + "_scrollbar");
|
|
r.live && m(r.liveSelector || e(t).selector), N.call(this, "remove"), k.call(this), B.call(this), n.removeData(a), $(this, "mcs"), c.remove(), s.find("img." + d[2]).removeClass(d[2]), l.replaceWith(s.contents()), n.removeClass(o + " _" + a + "_" + i.idx + " " + d[6] + " " + d[7] + " " + d[5] + " " + d[3]).addClass(d[4])
|
|
}
|
|
})
|
|
}
|
|
},
|
|
f = function () {
|
|
return "object" != typeof e(this) || e(this).length < 1 ? n : this
|
|
},
|
|
h = function (t) {
|
|
var o = ["rounded", "rounded-dark", "rounded-dots", "rounded-dots-dark"],
|
|
a = ["rounded-dots", "rounded-dots-dark", "3d", "3d-dark", "3d-thick", "3d-thick-dark", "inset", "inset-dark", "inset-2", "inset-2-dark", "inset-3", "inset-3-dark"],
|
|
n = ["minimal", "minimal-dark"],
|
|
i = ["minimal", "minimal-dark"],
|
|
r = ["minimal", "minimal-dark"];
|
|
t.autoDraggerLength = e.inArray(t.theme, o) > -1 ? !1 : t.autoDraggerLength, t.autoExpandScrollbar = e.inArray(t.theme, a) > -1 ? !1 : t.autoExpandScrollbar, t.scrollButtons.enable = e.inArray(t.theme, n) > -1 ? !1 : t.scrollButtons.enable, t.autoHideScrollbar = e.inArray(t.theme, i) > -1 ? !0 : t.autoHideScrollbar, t.scrollbarPosition = e.inArray(t.theme, r) > -1 ? "outside" : t.scrollbarPosition
|
|
},
|
|
m = function (e) {
|
|
l[e] && (clearTimeout(l[e]), $(l, e))
|
|
},
|
|
p = function (e) {
|
|
return "yx" === e || "xy" === e || "auto" === e ? "yx" : "x" === e || "horizontal" === e ? "x" : "y"
|
|
},
|
|
g = function (e) {
|
|
return "stepped" === e || "pixels" === e || "step" === e || "click" === e ? "stepped" : "stepless"
|
|
},
|
|
v = function () {
|
|
var t = e(this),
|
|
n = t.data(a),
|
|
i = n.opt,
|
|
r = i.autoExpandScrollbar ? " " + d[1] + "_expand" : "",
|
|
l = ["<div id='mCSB_" + n.idx + "_scrollbar_vertical' class='mCSB_scrollTools mCSB_" + n.idx + "_scrollbar mCS-" + i.theme + " mCSB_scrollTools_vertical" + r + "'><div class='" + d[12] + "'><div id='mCSB_" + n.idx + "_dragger_vertical' class='mCSB_dragger' style='position:absolute;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>", "<div id='mCSB_" + n.idx + "_scrollbar_horizontal' class='mCSB_scrollTools mCSB_" + n.idx + "_scrollbar mCS-" + i.theme + " mCSB_scrollTools_horizontal" + r + "'><div class='" + d[12] + "'><div id='mCSB_" + n.idx + "_dragger_horizontal' class='mCSB_dragger' style='position:absolute;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>"],
|
|
s = "yx" === i.axis ? "mCSB_vertical_horizontal" : "x" === i.axis ? "mCSB_horizontal" : "mCSB_vertical",
|
|
c = "yx" === i.axis ? l[0] + l[1] : "x" === i.axis ? l[1] : l[0],
|
|
u = "yx" === i.axis ? "<div id='mCSB_" + n.idx + "_container_wrapper' class='mCSB_container_wrapper' />" : "",
|
|
f = i.autoHideScrollbar ? " " + d[6] : "",
|
|
h = "x" !== i.axis && "rtl" === n.langDir ? " " + d[7] : "";
|
|
i.setWidth && t.css("width", i.setWidth), i.setHeight && t.css("height", i.setHeight), i.setLeft = "y" !== i.axis && "rtl" === n.langDir ? "989999px" : i.setLeft, t.addClass(o + " _" + a + "_" + n.idx + f + h).wrapInner("<div id='mCSB_" + n.idx + "' class='mCustomScrollBox mCS-" + i.theme + " " + s + "'><div id='mCSB_" + n.idx + "_container' class='mCSB_container' style='position:relative; top:" + i.setTop + "; left:" + i.setLeft + ";' dir='" + n.langDir + "' /></div>");
|
|
var m = e("#mCSB_" + n.idx),
|
|
p = e("#mCSB_" + n.idx + "_container");
|
|
"y" === i.axis || i.advanced.autoExpandHorizontalScroll || p.css("width", x(p)), "outside" === i.scrollbarPosition ? ("static" === t.css("position") && t.css("position", "relative"), t.css("overflow", "visible"), m.addClass("mCSB_outside").after(c)) : (m.addClass("mCSB_inside").append(c), p.wrap(u)), w.call(this);
|
|
var g = [e("#mCSB_" + n.idx + "_dragger_vertical"), e("#mCSB_" + n.idx + "_dragger_horizontal")];
|
|
g[0].css("min-height", g[0].height()), g[1].css("min-width", g[1].width())
|
|
},
|
|
x = function (t) {
|
|
var o = [t[0].scrollWidth, Math.max.apply(Math, t.children().map(function () {
|
|
return e(this).outerWidth(!0)
|
|
}).get())],
|
|
a = t.parent().width();
|
|
return o[0] > a ? o[0] : o[1] > a ? o[1] : "100%"
|
|
},
|
|
_ = function () {
|
|
var t = e(this),
|
|
o = t.data(a),
|
|
n = o.opt,
|
|
i = e("#mCSB_" + o.idx + "_container");
|
|
if (n.advanced.autoExpandHorizontalScroll && "y" !== n.axis) {
|
|
i.css({
|
|
width: "auto",
|
|
"min-width": 0,
|
|
"overflow-x": "scroll"
|
|
});
|
|
var r = Math.ceil(i[0].scrollWidth);
|
|
3 === n.advanced.autoExpandHorizontalScroll || 2 !== n.advanced.autoExpandHorizontalScroll && r > i.parent().width() ? i.css({
|
|
width: r,
|
|
"min-width": "100%",
|
|
"overflow-x": "inherit"
|
|
}) : i.css({
|
|
"overflow-x": "inherit",
|
|
position: "absolute"
|
|
}).wrap("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />").css({
|
|
width: Math.ceil(i[0].getBoundingClientRect().right + .4) - Math.floor(i[0].getBoundingClientRect().left),
|
|
"min-width": "100%",
|
|
position: "relative"
|
|
}).unwrap()
|
|
}
|
|
},
|
|
w = function () {
|
|
var t = e(this),
|
|
o = t.data(a),
|
|
n = o.opt,
|
|
i = e(".mCSB_" + o.idx + "_scrollbar:first"),
|
|
r = oe(n.scrollButtons.tabindex) ? "tabindex='" + n.scrollButtons.tabindex + "'" : "",
|
|
l = ["<a href='#' class='" + d[13] + "' " + r + " />", "<a href='#' class='" + d[14] + "' " + r + " />", "<a href='#' class='" + d[15] + "' " + r + " />", "<a href='#' class='" + d[16] + "' " + r + " />"],
|
|
s = ["x" === n.axis ? l[2] : l[0], "x" === n.axis ? l[3] : l[1], l[2], l[3]];
|
|
n.scrollButtons.enable && i.prepend(s[0]).append(s[1]).next(".mCSB_scrollTools").prepend(s[2]).append(s[3])
|
|
},
|
|
S = function () {
|
|
var t = e(this),
|
|
o = t.data(a),
|
|
n = e("#mCSB_" + o.idx),
|
|
i = e("#mCSB_" + o.idx + "_container"),
|
|
r = [e("#mCSB_" + o.idx + "_dragger_vertical"), e("#mCSB_" + o.idx + "_dragger_horizontal")],
|
|
l = [n.height() / i.outerHeight(!1), n.width() / i.outerWidth(!1)],
|
|
c = [parseInt(r[0].css("min-height")), Math.round(l[0] * r[0].parent().height()), parseInt(r[1].css("min-width")), Math.round(l[1] * r[1].parent().width())],
|
|
d = s && c[1] < c[0] ? c[0] : c[1],
|
|
u = s && c[3] < c[2] ? c[2] : c[3];
|
|
r[0].css({
|
|
height: d,
|
|
"max-height": r[0].parent().height() - 10
|
|
}).find(".mCSB_dragger_bar").css({
|
|
"line-height": c[0] + "px"
|
|
}), r[1].css({
|
|
width: u,
|
|
"max-width": r[1].parent().width() - 10
|
|
})
|
|
},
|
|
b = function () {
|
|
var t = e(this),
|
|
o = t.data(a),
|
|
n = e("#mCSB_" + o.idx),
|
|
i = e("#mCSB_" + o.idx + "_container"),
|
|
r = [e("#mCSB_" + o.idx + "_dragger_vertical"), e("#mCSB_" + o.idx + "_dragger_horizontal")],
|
|
l = [i.outerHeight(!1) - n.height(), i.outerWidth(!1) - n.width()],
|
|
s = [l[0] / (r[0].parent().height() - r[0].height()), l[1] / (r[1].parent().width() - r[1].width())];
|
|
o.scrollRatio = {
|
|
y: s[0],
|
|
x: s[1]
|
|
}
|
|
},
|
|
C = function (e, t, o) {
|
|
var a = o ? d[0] + "_expanded" : "",
|
|
n = e.closest(".mCSB_scrollTools");
|
|
"active" === t ? (e.toggleClass(d[0] + " " + a), n.toggleClass(d[1]), e[0]._draggable = e[0]._draggable ? 0 : 1) : e[0]._draggable || ("hide" === t ? (e.removeClass(d[0]), n.removeClass(d[1])) : (e.addClass(d[0]), n.addClass(d[1])))
|
|
},
|
|
y = function () {
|
|
var t = e(this),
|
|
o = t.data(a),
|
|
n = e("#mCSB_" + o.idx),
|
|
i = e("#mCSB_" + o.idx + "_container"),
|
|
r = null == o.overflowed ? i.height() : i.outerHeight(!1),
|
|
l = null == o.overflowed ? i.width() : i.outerWidth(!1),
|
|
s = i[0].scrollHeight,
|
|
c = i[0].scrollWidth;
|
|
return s > r && (r = s), c > l && (l = c), [r > n.height(), l > n.width()]
|
|
},
|
|
B = function () {
|
|
var t = e(this),
|
|
o = t.data(a),
|
|
n = o.opt,
|
|
i = e("#mCSB_" + o.idx),
|
|
r = e("#mCSB_" + o.idx + "_container"),
|
|
l = [e("#mCSB_" + o.idx + "_dragger_vertical"), e("#mCSB_" + o.idx + "_dragger_horizontal")];
|
|
if (Q(t), ("x" !== n.axis && !o.overflowed[0] || "y" === n.axis && o.overflowed[0]) && (l[0].add(r).css("top", 0), G(t, "_resetY")), "y" !== n.axis && !o.overflowed[1] || "x" === n.axis && o.overflowed[1]) {
|
|
var s = dx = 0;
|
|
"rtl" === o.langDir && (s = i.width() - r.outerWidth(!1), dx = Math.abs(s / o.scrollRatio.x)), r.css("left", s), l[1].css("left", dx), G(t, "_resetX")
|
|
}
|
|
},
|
|
T = function () {
|
|
function t() {
|
|
r = setTimeout(function () {
|
|
e.event.special.mousewheel ? (clearTimeout(r), W.call(o[0])) : t()
|
|
}, 100)
|
|
}
|
|
var o = e(this),
|
|
n = o.data(a),
|
|
i = n.opt;
|
|
if (!n.bindEvents) {
|
|
if (I.call(this), i.contentTouchScroll && D.call(this), E.call(this), i.mouseWheel.enable) {
|
|
var r;
|
|
t()
|
|
}
|
|
P.call(this), U.call(this), i.advanced.autoScrollOnFocus && H.call(this), i.scrollButtons.enable && F.call(this), i.keyboard.enable && q.call(this), n.bindEvents = !0
|
|
}
|
|
},
|
|
k = function () {
|
|
var t = e(this),
|
|
o = t.data(a),
|
|
n = o.opt,
|
|
i = a + "_" + o.idx,
|
|
r = ".mCSB_" + o.idx + "_scrollbar",
|
|
l = e("#mCSB_" + o.idx + ",#mCSB_" + o.idx + "_container,#mCSB_" + o.idx + "_container_wrapper," + r + " ." + d[12] + ",#mCSB_" + o.idx + "_dragger_vertical,#mCSB_" + o.idx + "_dragger_horizontal," + r + ">a"),
|
|
s = e("#mCSB_" + o.idx + "_container");
|
|
n.advanced.releaseDraggableSelectors && l.add(e(n.advanced.releaseDraggableSelectors)), n.advanced.extraDraggableSelectors && l.add(e(n.advanced.extraDraggableSelectors)), o.bindEvents && (e(document).add(e(!A() || top.document)).unbind("." + i), l.each(function () {
|
|
e(this).unbind("." + i)
|
|
}), clearTimeout(t[0]._focusTimeout), $(t[0], "_focusTimeout"), clearTimeout(o.sequential.step), $(o.sequential, "step"), clearTimeout(s[0].onCompleteTimeout), $(s[0], "onCompleteTimeout"), o.bindEvents = !1)
|
|
},
|
|
M = function (t) {
|
|
var o = e(this),
|
|
n = o.data(a),
|
|
i = n.opt,
|
|
r = e("#mCSB_" + n.idx + "_container_wrapper"),
|
|
l = r.length ? r : e("#mCSB_" + n.idx + "_container"),
|
|
s = [e("#mCSB_" + n.idx + "_scrollbar_vertical"), e("#mCSB_" + n.idx + "_scrollbar_horizontal")],
|
|
c = [s[0].find(".mCSB_dragger"), s[1].find(".mCSB_dragger")];
|
|
"x" !== i.axis && (n.overflowed[0] && !t ? (s[0].add(c[0]).add(s[0].children("a")).css("display", "block"), l.removeClass(d[8] + " " + d[10])) : (i.alwaysShowScrollbar ? (2 !== i.alwaysShowScrollbar && c[0].css("display", "none"), l.removeClass(d[10])) : (s[0].css("display", "none"), l.addClass(d[10])), l.addClass(d[8]))), "y" !== i.axis && (n.overflowed[1] && !t ? (s[1].add(c[1]).add(s[1].children("a")).css("display", "block"), l.removeClass(d[9] + " " + d[11])) : (i.alwaysShowScrollbar ? (2 !== i.alwaysShowScrollbar && c[1].css("display", "none"), l.removeClass(d[11])) : (s[1].css("display", "none"), l.addClass(d[11])), l.addClass(d[9]))), n.overflowed[0] || n.overflowed[1] ? o.removeClass(d[5]) : o.addClass(d[5])
|
|
},
|
|
O = function (t) {
|
|
var o = t.type,
|
|
a = t.target.ownerDocument !== document && null !== frameElement ? [e(frameElement).offset().top, e(frameElement).offset().left] : null,
|
|
n = A() && t.target.ownerDocument !== top.document && null !== frameElement ? [e(t.view.frameElement).offset().top, e(t.view.frameElement).offset().left] : [0, 0];
|
|
switch (o) {
|
|
case "pointerdown":
|
|
case "MSPointerDown":
|
|
case "pointermove":
|
|
case "MSPointerMove":
|
|
case "pointerup":
|
|
case "MSPointerUp":
|
|
return a ? [t.originalEvent.pageY - a[0] + n[0], t.originalEvent.pageX - a[1] + n[1], !1] : [t.originalEvent.pageY, t.originalEvent.pageX, !1];
|
|
case "touchstart":
|
|
case "touchmove":
|
|
case "touchend":
|
|
var i = t.originalEvent.touches[0] || t.originalEvent.changedTouches[0],
|
|
r = t.originalEvent.touches.length || t.originalEvent.changedTouches.length;
|
|
return t.target.ownerDocument !== document ? [i.screenY, i.screenX, r > 1] : [i.pageY, i.pageX, r > 1];
|
|
default:
|
|
return a ? [t.pageY - a[0] + n[0], t.pageX - a[1] + n[1], !1] : [t.pageY, t.pageX, !1]
|
|
}
|
|
},
|
|
I = function () {
|
|
function t(e, t, a, n) {
|
|
if (h[0].idleTimer = d.scrollInertia < 233 ? 250 : 0, o.attr("id") === f[1]) var i = "x",
|
|
s = (o[0].offsetLeft - t + n) * l.scrollRatio.x;
|
|
else var i = "y",
|
|
s = (o[0].offsetTop - e + a) * l.scrollRatio.y;
|
|
G(r, s.toString(), {
|
|
dir: i,
|
|
drag: !0
|
|
})
|
|
}
|
|
var o, n, i, r = e(this),
|
|
l = r.data(a),
|
|
d = l.opt,
|
|
u = a + "_" + l.idx,
|
|
f = ["mCSB_" + l.idx + "_dragger_vertical", "mCSB_" + l.idx + "_dragger_horizontal"],
|
|
h = e("#mCSB_" + l.idx + "_container"),
|
|
m = e("#" + f[0] + ",#" + f[1]),
|
|
p = d.advanced.releaseDraggableSelectors ? m.add(e(d.advanced.releaseDraggableSelectors)) : m,
|
|
g = d.advanced.extraDraggableSelectors ? e(!A() || top.document).add(e(d.advanced.extraDraggableSelectors)) : e(!A() || top.document);
|
|
m.bind("contextmenu." + u, function (e) {
|
|
e.preventDefault()
|
|
}).bind("mousedown." + u + " touchstart." + u + " pointerdown." + u + " MSPointerDown." + u, function (t) {
|
|
if (t.stopImmediatePropagation(), t.preventDefault(), ee(t)) {
|
|
c = !0, s && (document.onselectstart = function () {
|
|
return !1
|
|
}), L.call(h, !1), Q(r), o = e(this);
|
|
var a = o.offset(),
|
|
l = O(t)[0] - a.top,
|
|
u = O(t)[1] - a.left,
|
|
f = o.height() + a.top,
|
|
m = o.width() + a.left;
|
|
f > l && l > 0 && m > u && u > 0 && (n = l, i = u), C(o, "active", d.autoExpandScrollbar)
|
|
}
|
|
}).bind("touchmove." + u, function (e) {
|
|
e.stopImmediatePropagation(), e.preventDefault();
|
|
var a = o.offset(),
|
|
r = O(e)[0] - a.top,
|
|
l = O(e)[1] - a.left;
|
|
t(n, i, r, l)
|
|
}), e(document).add(g).bind("mousemove." + u + " pointermove." + u + " MSPointerMove." + u, function (e) {
|
|
if (o) {
|
|
var a = o.offset(),
|
|
r = O(e)[0] - a.top,
|
|
l = O(e)[1] - a.left;
|
|
if (n === r && i === l) return;
|
|
t(n, i, r, l)
|
|
}
|
|
}).add(p).bind("mouseup." + u + " touchend." + u + " pointerup." + u + " MSPointerUp." + u, function () {
|
|
o && (C(o, "active", d.autoExpandScrollbar), o = null), c = !1, s && (document.onselectstart = null), L.call(h, !0)
|
|
})
|
|
},
|
|
D = function () {
|
|
function o(e) {
|
|
if (!te(e) || c || O(e)[2]) return void(t = 0);
|
|
t = 1, b = 0, C = 0, d = 1, y.removeClass("mCS_touch_action");
|
|
var o = I.offset();
|
|
u = O(e)[0] - o.top, f = O(e)[1] - o.left, z = [O(e)[0], O(e)[1]]
|
|
}
|
|
|
|
function n(e) {
|
|
if (te(e) && !c && !O(e)[2] && (T.documentTouchScroll || e.preventDefault(), e.stopImmediatePropagation(), (!C || b) && d)) {
|
|
g = K();
|
|
var t = M.offset(),
|
|
o = O(e)[0] - t.top,
|
|
a = O(e)[1] - t.left,
|
|
n = "mcsLinearOut";
|
|
if (E.push(o), W.push(a), z[2] = Math.abs(O(e)[0] - z[0]), z[3] = Math.abs(O(e)[1] - z[1]), B.overflowed[0]) var i = D[0].parent().height() - D[0].height(),
|
|
r = u - o > 0 && o - u > -(i * B.scrollRatio.y) && (2 * z[3] < z[2] || "yx" === T.axis);
|
|
if (B.overflowed[1]) var l = D[1].parent().width() - D[1].width(),
|
|
h = f - a > 0 && a - f > -(l * B.scrollRatio.x) && (2 * z[2] < z[3] || "yx" === T.axis);
|
|
r || h ? (U || e.preventDefault(), b = 1) : (C = 1, y.addClass("mCS_touch_action")), U && e.preventDefault(), w = "yx" === T.axis ? [u - o, f - a] : "x" === T.axis ? [null, f - a] : [u - o, null], I[0].idleTimer = 250, B.overflowed[0] && s(w[0], R, n, "y", "all", !0), B.overflowed[1] && s(w[1], R, n, "x", L, !0)
|
|
}
|
|
}
|
|
|
|
function i(e) {
|
|
if (!te(e) || c || O(e)[2]) return void(t = 0);
|
|
t = 1, e.stopImmediatePropagation(), Q(y), p = K();
|
|
var o = M.offset();
|
|
h = O(e)[0] - o.top, m = O(e)[1] - o.left, E = [], W = []
|
|
}
|
|
|
|
function r(e) {
|
|
if (te(e) && !c && !O(e)[2]) {
|
|
d = 0, e.stopImmediatePropagation(), b = 0, C = 0, v = K();
|
|
var t = M.offset(),
|
|
o = O(e)[0] - t.top,
|
|
a = O(e)[1] - t.left;
|
|
if (!(v - g > 30)) {
|
|
_ = 1e3 / (v - p);
|
|
var n = "mcsEaseOut",
|
|
i = 2.5 > _,
|
|
r = i ? [E[E.length - 2], W[W.length - 2]] : [0, 0];
|
|
x = i ? [o - r[0], a - r[1]] : [o - h, a - m];
|
|
var u = [Math.abs(x[0]), Math.abs(x[1])];
|
|
_ = i ? [Math.abs(x[0] / 4), Math.abs(x[1] / 4)] : [_, _];
|
|
var f = [Math.abs(I[0].offsetTop) - x[0] * l(u[0] / _[0], _[0]), Math.abs(I[0].offsetLeft) - x[1] * l(u[1] / _[1], _[1])];
|
|
w = "yx" === T.axis ? [f[0], f[1]] : "x" === T.axis ? [null, f[1]] : [f[0], null], S = [4 * u[0] + T.scrollInertia, 4 * u[1] + T.scrollInertia];
|
|
var y = parseInt(T.contentTouchScroll) || 0;
|
|
w[0] = u[0] > y ? w[0] : 0, w[1] = u[1] > y ? w[1] : 0, B.overflowed[0] && s(w[0], S[0], n, "y", L, !1), B.overflowed[1] && s(w[1], S[1], n, "x", L, !1)
|
|
}
|
|
}
|
|
}
|
|
|
|
function l(e, t) {
|
|
var o = [1.5 * t, 2 * t, t / 1.5, t / 2];
|
|
return e > 90 ? t > 4 ? o[0] : o[3] : e > 60 ? t > 3 ? o[3] : o[2] : e > 30 ? t > 8 ? o[1] : t > 6 ? o[0] : t > 4 ? t : o[2] : t > 8 ? t : o[3]
|
|
}
|
|
|
|
function s(e, t, o, a, n, i) {
|
|
e && G(y, e.toString(), {
|
|
dur: t,
|
|
scrollEasing: o,
|
|
dir: a,
|
|
overwrite: n,
|
|
drag: i
|
|
})
|
|
}
|
|
var d, u, f, h, m, p, g, v, x, _, w, S, b, C, y = e(this),
|
|
B = y.data(a),
|
|
T = B.opt,
|
|
k = a + "_" + B.idx,
|
|
M = e("#mCSB_" + B.idx),
|
|
I = e("#mCSB_" + B.idx + "_container"),
|
|
D = [e("#mCSB_" + B.idx + "_dragger_vertical"), e("#mCSB_" + B.idx + "_dragger_horizontal")],
|
|
E = [],
|
|
W = [],
|
|
R = 0,
|
|
L = "yx" === T.axis ? "none" : "all",
|
|
z = [],
|
|
P = I.find("iframe"),
|
|
H = ["touchstart." + k + " pointerdown." + k + " MSPointerDown." + k, "touchmove." + k + " pointermove." + k + " MSPointerMove." + k, "touchend." + k + " pointerup." + k + " MSPointerUp." + k],
|
|
U = void 0 !== document.body.style.touchAction && "" !== document.body.style.touchAction;
|
|
I.bind(H[0], function (e) {
|
|
o(e)
|
|
}).bind(H[1], function (e) {
|
|
n(e)
|
|
}), M.bind(H[0], function (e) {
|
|
i(e)
|
|
}).bind(H[2], function (e) {
|
|
r(e)
|
|
}), P.length && P.each(function () {
|
|
e(this).bind("load", function () {
|
|
A(this) && e(this.contentDocument || this.contentWindow.document).bind(H[0], function (e) {
|
|
o(e), i(e)
|
|
}).bind(H[1], function (e) {
|
|
n(e)
|
|
}).bind(H[2], function (e) {
|
|
r(e)
|
|
})
|
|
})
|
|
})
|
|
},
|
|
E = function () {
|
|
function o() {
|
|
return window.getSelection ? window.getSelection().toString() : document.selection && "Control" != document.selection.type ? document.selection.createRange().text : 0
|
|
}
|
|
|
|
function n(e, t, o) {
|
|
d.type = o && i ? "stepped" : "stepless", d.scrollAmount = 10, j(r, e, t, "mcsLinearOut", o ? 60 : null)
|
|
}
|
|
var i, r = e(this),
|
|
l = r.data(a),
|
|
s = l.opt,
|
|
d = l.sequential,
|
|
u = a + "_" + l.idx,
|
|
f = e("#mCSB_" + l.idx + "_container"),
|
|
h = f.parent();
|
|
f.bind("mousedown." + u, function () {
|
|
t || i || (i = 1, c = !0)
|
|
}).add(document).bind("mousemove." + u, function (e) {
|
|
if (!t && i && o()) {
|
|
var a = f.offset(),
|
|
r = O(e)[0] - a.top + f[0].offsetTop,
|
|
c = O(e)[1] - a.left + f[0].offsetLeft;
|
|
r > 0 && r < h.height() && c > 0 && c < h.width() ? d.step && n("off", null, "stepped") : ("x" !== s.axis && l.overflowed[0] && (0 > r ? n("on", 38) : r > h.height() && n("on", 40)), "y" !== s.axis && l.overflowed[1] && (0 > c ? n("on", 37) : c > h.width() && n("on", 39)))
|
|
}
|
|
}).bind("mouseup." + u + " dragend." + u, function () {
|
|
t || (i && (i = 0, n("off", null)), c = !1)
|
|
})
|
|
},
|
|
W = function () {
|
|
function t(t, a) {
|
|
if (Q(o), !z(o, t.target)) {
|
|
var r = "auto" !== i.mouseWheel.deltaFactor ? parseInt(i.mouseWheel.deltaFactor) : s && t.deltaFactor < 100 ? 100 : t.deltaFactor || 100,
|
|
d = i.scrollInertia;
|
|
if ("x" === i.axis || "x" === i.mouseWheel.axis) var u = "x",
|
|
f = [Math.round(r * n.scrollRatio.x), parseInt(i.mouseWheel.scrollAmount)],
|
|
h = "auto" !== i.mouseWheel.scrollAmount ? f[1] : f[0] >= l.width() ? .9 * l.width() : f[0],
|
|
m = Math.abs(e("#mCSB_" + n.idx + "_container")[0].offsetLeft),
|
|
p = c[1][0].offsetLeft,
|
|
g = c[1].parent().width() - c[1].width(),
|
|
v = "y" === i.mouseWheel.axis ? t.deltaY || a : t.deltaX;
|
|
else var u = "y",
|
|
f = [Math.round(r * n.scrollRatio.y), parseInt(i.mouseWheel.scrollAmount)],
|
|
h = "auto" !== i.mouseWheel.scrollAmount ? f[1] : f[0] >= l.height() ? .9 * l.height() : f[0],
|
|
m = Math.abs(e("#mCSB_" + n.idx + "_container")[0].offsetTop),
|
|
p = c[0][0].offsetTop,
|
|
g = c[0].parent().height() - c[0].height(),
|
|
v = t.deltaY || a;
|
|
"y" === u && !n.overflowed[0] || "x" === u && !n.overflowed[1] || ((i.mouseWheel.invert || t.webkitDirectionInvertedFromDevice) && (v = -v), i.mouseWheel.normalizeDelta && (v = 0 > v ? -1 : 1), (v > 0 && 0 !== p || 0 > v && p !== g || i.mouseWheel.preventDefault) && (t.stopImmediatePropagation(), t.preventDefault()), t.deltaFactor < 5 && !i.mouseWheel.normalizeDelta && (h = t.deltaFactor, d = 17), G(o, (m - v * h).toString(), {
|
|
dir: u,
|
|
dur: d
|
|
}))
|
|
}
|
|
}
|
|
if (e(this).data(a)) {
|
|
var o = e(this),
|
|
n = o.data(a),
|
|
i = n.opt,
|
|
r = a + "_" + n.idx,
|
|
l = e("#mCSB_" + n.idx),
|
|
c = [e("#mCSB_" + n.idx + "_dragger_vertical"), e("#mCSB_" + n.idx + "_dragger_horizontal")],
|
|
d = e("#mCSB_" + n.idx + "_container").find("iframe");
|
|
d.length && d.each(function () {
|
|
e(this).bind("load", function () {
|
|
A(this) && e(this.contentDocument || this.contentWindow.document).bind("mousewheel." + r, function (e, o) {
|
|
t(e, o)
|
|
})
|
|
})
|
|
}), l.bind("mousewheel." + r, function (e, o) {
|
|
t(e, o)
|
|
})
|
|
}
|
|
},
|
|
R = new Object,
|
|
A = function (t) {
|
|
var o = !1,
|
|
a = !1,
|
|
n = null;
|
|
if (void 0 === t ? a = "#empty" : void 0 !== e(t).attr("id") && (a = e(t).attr("id")), a !== !1 && void 0 !== R[a]) return R[a];
|
|
if (t) {
|
|
try {
|
|
var i = t.contentDocument || t.contentWindow.document;
|
|
n = i.body.innerHTML
|
|
} catch (r) {}
|
|
o = null !== n
|
|
} else {
|
|
try {
|
|
var i = top.document;
|
|
n = i.body.innerHTML
|
|
} catch (r) {}
|
|
o = null !== n
|
|
}
|
|
return a !== !1 && (R[a] = o), o
|
|
},
|
|
L = function (e) {
|
|
var t = this.find("iframe");
|
|
if (t.length) {
|
|
var o = e ? "auto" : "none";
|
|
t.css("pointer-events", o)
|
|
}
|
|
},
|
|
z = function (t, o) {
|
|
var n = o.nodeName.toLowerCase(),
|
|
i = t.data(a).opt.mouseWheel.disableOver,
|
|
r = ["select", "textarea"];
|
|
return e.inArray(n, i) > -1 && !(e.inArray(n, r) > -1 && !e(o).is(":focus"))
|
|
},
|
|
P = function () {
|
|
var t, o = e(this),
|
|
n = o.data(a),
|
|
i = a + "_" + n.idx,
|
|
r = e("#mCSB_" + n.idx + "_container"),
|
|
l = r.parent(),
|
|
s = e(".mCSB_" + n.idx + "_scrollbar ." + d[12]);
|
|
s.bind("mousedown." + i + " touchstart." + i + " pointerdown." + i + " MSPointerDown." + i, function (o) {
|
|
c = !0, e(o.target).hasClass("mCSB_dragger") || (t = 1)
|
|
}).bind("touchend." + i + " pointerup." + i + " MSPointerUp." + i, function () {
|
|
c = !1
|
|
}).bind("click." + i, function (a) {
|
|
if (t && (t = 0, e(a.target).hasClass(d[12]) || e(a.target).hasClass("mCSB_draggerRail"))) {
|
|
Q(o);
|
|
var i = e(this),
|
|
s = i.find(".mCSB_dragger");
|
|
if (i.parent(".mCSB_scrollTools_horizontal").length > 0) {
|
|
if (!n.overflowed[1]) return;
|
|
var c = "x",
|
|
u = a.pageX > s.offset().left ? -1 : 1,
|
|
f = Math.abs(r[0].offsetLeft) - u * (.9 * l.width())
|
|
} else {
|
|
if (!n.overflowed[0]) return;
|
|
var c = "y",
|
|
u = a.pageY > s.offset().top ? -1 : 1,
|
|
f = Math.abs(r[0].offsetTop) - u * (.9 * l.height())
|
|
}
|
|
G(o, f.toString(), {
|
|
dir: c,
|
|
scrollEasing: "mcsEaseInOut"
|
|
})
|
|
}
|
|
})
|
|
},
|
|
H = function () {
|
|
var t = e(this),
|
|
o = t.data(a),
|
|
n = o.opt,
|
|
i = a + "_" + o.idx,
|
|
r = e("#mCSB_" + o.idx + "_container"),
|
|
l = r.parent();
|
|
r.bind("focusin." + i, function () {
|
|
var o = e(document.activeElement),
|
|
a = r.find(".mCustomScrollBox").length,
|
|
i = 0;
|
|
o.is(n.advanced.autoScrollOnFocus) && (Q(t), clearTimeout(t[0]._focusTimeout), t[0]._focusTimer = a ? (i + 17) * a : 0, t[0]._focusTimeout = setTimeout(function () {
|
|
var e = [ae(o)[0], ae(o)[1]],
|
|
a = [r[0].offsetTop, r[0].offsetLeft],
|
|
s = [a[0] + e[0] >= 0 && a[0] + e[0] < l.height() - o.outerHeight(!1), a[1] + e[1] >= 0 && a[0] + e[1] < l.width() - o.outerWidth(!1)],
|
|
c = "yx" !== n.axis || s[0] || s[1] ? "all" : "none";
|
|
"x" === n.axis || s[0] || G(t, e[0].toString(), {
|
|
dir: "y",
|
|
scrollEasing: "mcsEaseInOut",
|
|
overwrite: c,
|
|
dur: i
|
|
}), "y" === n.axis || s[1] || G(t, e[1].toString(), {
|
|
dir: "x",
|
|
scrollEasing: "mcsEaseInOut",
|
|
overwrite: c,
|
|
dur: i
|
|
})
|
|
}, t[0]._focusTimer))
|
|
})
|
|
},
|
|
U = function () {
|
|
var t = e(this),
|
|
o = t.data(a),
|
|
n = a + "_" + o.idx,
|
|
i = e("#mCSB_" + o.idx + "_container").parent();
|
|
i.bind("scroll." + n, function () {
|
|
0 === i.scrollTop() && 0 === i.scrollLeft() || e(".mCSB_" + o.idx + "_scrollbar").css("visibility", "hidden")
|
|
})
|
|
},
|
|
F = function () {
|
|
var t = e(this),
|
|
o = t.data(a),
|
|
n = o.opt,
|
|
i = o.sequential,
|
|
r = a + "_" + o.idx,
|
|
l = ".mCSB_" + o.idx + "_scrollbar",
|
|
s = e(l + ">a");
|
|
s.bind("contextmenu." + r, function (e) {
|
|
e.preventDefault()
|
|
}).bind("mousedown." + r + " touchstart." + r + " pointerdown." + r + " MSPointerDown." + r + " mouseup." + r + " touchend." + r + " pointerup." + r + " MSPointerUp." + r + " mouseout." + r + " pointerout." + r + " MSPointerOut." + r + " click." + r, function (a) {
|
|
function r(e, o) {
|
|
i.scrollAmount = n.scrollButtons.scrollAmount, j(t, e, o)
|
|
}
|
|
if (a.preventDefault(), ee(a)) {
|
|
var l = e(this).attr("class");
|
|
switch (i.type = n.scrollButtons.scrollType, a.type) {
|
|
case "mousedown":
|
|
case "touchstart":
|
|
case "pointerdown":
|
|
case "MSPointerDown":
|
|
if ("stepped" === i.type) return;
|
|
c = !0, o.tweenRunning = !1, r("on", l);
|
|
break;
|
|
case "mouseup":
|
|
case "touchend":
|
|
case "pointerup":
|
|
case "MSPointerUp":
|
|
case "mouseout":
|
|
case "pointerout":
|
|
case "MSPointerOut":
|
|
if ("stepped" === i.type) return;
|
|
c = !1, i.dir && r("off", l);
|
|
break;
|
|
case "click":
|
|
if ("stepped" !== i.type || o.tweenRunning) return;
|
|
r("on", l)
|
|
}
|
|
}
|
|
})
|
|
},
|
|
q = function () {
|
|
function t(t) {
|
|
function a(e, t) {
|
|
r.type = i.keyboard.scrollType, r.scrollAmount = i.keyboard.scrollAmount, "stepped" === r.type && n.tweenRunning || j(o, e, t)
|
|
}
|
|
switch (t.type) {
|
|
case "blur":
|
|
n.tweenRunning && r.dir && a("off", null);
|
|
break;
|
|
case "keydown":
|
|
case "keyup":
|
|
var l = t.keyCode ? t.keyCode : t.which,
|
|
s = "on";
|
|
if ("x" !== i.axis && (38 === l || 40 === l) || "y" !== i.axis && (37 === l || 39 === l)) {
|
|
if ((38 === l || 40 === l) && !n.overflowed[0] || (37 === l || 39 === l) && !n.overflowed[1]) return;
|
|
"keyup" === t.type && (s = "off"), e(document.activeElement).is(u) || (t.preventDefault(), t.stopImmediatePropagation(), a(s, l))
|
|
} else if (33 === l || 34 === l) {
|
|
if ((n.overflowed[0] || n.overflowed[1]) && (t.preventDefault(), t.stopImmediatePropagation()), "keyup" === t.type) {
|
|
Q(o);
|
|
var f = 34 === l ? -1 : 1;
|
|
if ("x" === i.axis || "yx" === i.axis && n.overflowed[1] && !n.overflowed[0]) var h = "x",
|
|
m = Math.abs(c[0].offsetLeft) - f * (.9 * d.width());
|
|
else var h = "y",
|
|
m = Math.abs(c[0].offsetTop) - f * (.9 * d.height());
|
|
G(o, m.toString(), {
|
|
dir: h,
|
|
scrollEasing: "mcsEaseInOut"
|
|
})
|
|
}
|
|
} else if ((35 === l || 36 === l) && !e(document.activeElement).is(u) && ((n.overflowed[0] || n.overflowed[1]) && (t.preventDefault(), t.stopImmediatePropagation()), "keyup" === t.type)) {
|
|
if ("x" === i.axis || "yx" === i.axis && n.overflowed[1] && !n.overflowed[0]) var h = "x",
|
|
m = 35 === l ? Math.abs(d.width() - c.outerWidth(!1)) : 0;
|
|
else var h = "y",
|
|
m = 35 === l ? Math.abs(d.height() - c.outerHeight(!1)) : 0;
|
|
G(o, m.toString(), {
|
|
dir: h,
|
|
scrollEasing: "mcsEaseInOut"
|
|
})
|
|
}
|
|
}
|
|
}
|
|
var o = e(this),
|
|
n = o.data(a),
|
|
i = n.opt,
|
|
r = n.sequential,
|
|
l = a + "_" + n.idx,
|
|
s = e("#mCSB_" + n.idx),
|
|
c = e("#mCSB_" + n.idx + "_container"),
|
|
d = c.parent(),
|
|
u = "input,textarea,select,datalist,keygen,[contenteditable='true']",
|
|
f = c.find("iframe"),
|
|
h = ["blur." + l + " keydown." + l + " keyup." + l];
|
|
f.length && f.each(function () {
|
|
e(this).bind("load", function () {
|
|
A(this) && e(this.contentDocument || this.contentWindow.document).bind(h[0], function (e) {
|
|
t(e)
|
|
})
|
|
})
|
|
}), s.attr("tabindex", "0").bind(h[0], function (e) {
|
|
t(e)
|
|
})
|
|
},
|
|
j = function (t, o, n, i, r) {
|
|
function l(e) {
|
|
u.snapAmount && (f.scrollAmount = u.snapAmount instanceof Array ? "x" === f.dir[0] ? u.snapAmount[1] : u.snapAmount[0] : u.snapAmount);
|
|
var o = "stepped" !== f.type,
|
|
a = r ? r : e ? o ? p / 1.5 : g : 1e3 / 60,
|
|
n = e ? o ? 7.5 : 40 : 2.5,
|
|
s = [Math.abs(h[0].offsetTop), Math.abs(h[0].offsetLeft)],
|
|
d = [c.scrollRatio.y > 10 ? 10 : c.scrollRatio.y, c.scrollRatio.x > 10 ? 10 : c.scrollRatio.x],
|
|
m = "x" === f.dir[0] ? s[1] + f.dir[1] * (d[1] * n) : s[0] + f.dir[1] * (d[0] * n),
|
|
v = "x" === f.dir[0] ? s[1] + f.dir[1] * parseInt(f.scrollAmount) : s[0] + f.dir[1] * parseInt(f.scrollAmount),
|
|
x = "auto" !== f.scrollAmount ? v : m,
|
|
_ = i ? i : e ? o ? "mcsLinearOut" : "mcsEaseInOut" : "mcsLinear",
|
|
w = !!e;
|
|
return e && 17 > a && (x = "x" === f.dir[0] ? s[1] : s[0]), G(t, x.toString(), {
|
|
dir: f.dir[0],
|
|
scrollEasing: _,
|
|
dur: a,
|
|
onComplete: w
|
|
}), e ? void(f.dir = !1) : (clearTimeout(f.step), void(f.step = setTimeout(function () {
|
|
l()
|
|
}, a)))
|
|
}
|
|
|
|
function s() {
|
|
clearTimeout(f.step), $(f, "step"), Q(t)
|
|
}
|
|
var c = t.data(a),
|
|
u = c.opt,
|
|
f = c.sequential,
|
|
h = e("#mCSB_" + c.idx + "_container"),
|
|
m = "stepped" === f.type,
|
|
p = u.scrollInertia < 26 ? 26 : u.scrollInertia,
|
|
g = u.scrollInertia < 1 ? 17 : u.scrollInertia;
|
|
switch (o) {
|
|
case "on":
|
|
if (f.dir = [n === d[16] || n === d[15] || 39 === n || 37 === n ? "x" : "y", n === d[13] || n === d[15] || 38 === n || 37 === n ? -1 : 1], Q(t), oe(n) && "stepped" === f.type) return;
|
|
l(m);
|
|
break;
|
|
case "off":
|
|
s(), (m || c.tweenRunning && f.dir) && l(!0)
|
|
}
|
|
},
|
|
Y = function (t) {
|
|
var o = e(this).data(a).opt,
|
|
n = [];
|
|
return "function" == typeof t && (t = t()), t instanceof Array ? n = t.length > 1 ? [t[0], t[1]] : "x" === o.axis ? [null, t[0]] : [t[0], null] : (n[0] = t.y ? t.y : t.x || "x" === o.axis ? null : t, n[1] = t.x ? t.x : t.y || "y" === o.axis ? null : t), "function" == typeof n[0] && (n[0] = n[0]()), "function" == typeof n[1] && (n[1] = n[1]()), n
|
|
},
|
|
X = function (t, o) {
|
|
if (null != t && "undefined" != typeof t) {
|
|
var n = e(this),
|
|
i = n.data(a),
|
|
r = i.opt,
|
|
l = e("#mCSB_" + i.idx + "_container"),
|
|
s = l.parent(),
|
|
c = typeof t;
|
|
o || (o = "x" === r.axis ? "x" : "y");
|
|
var d = "x" === o ? l.outerWidth(!1) - s.width() : l.outerHeight(!1) - s.height(),
|
|
f = "x" === o ? l[0].offsetLeft : l[0].offsetTop,
|
|
h = "x" === o ? "left" : "top";
|
|
switch (c) {
|
|
case "function":
|
|
return t();
|
|
case "object":
|
|
var m = t.jquery ? t : e(t);
|
|
if (!m.length) return;
|
|
return "x" === o ? ae(m)[1] : ae(m)[0];
|
|
case "string":
|
|
case "number":
|
|
if (oe(t)) return Math.abs(t);
|
|
if (-1 !== t.indexOf("%")) return Math.abs(d * parseInt(t) / 100);
|
|
if (-1 !== t.indexOf("-=")) return Math.abs(f - parseInt(t.split("-=")[1]));
|
|
if (-1 !== t.indexOf("+=")) {
|
|
var p = f + parseInt(t.split("+=")[1]);
|
|
return p >= 0 ? 0 : Math.abs(p)
|
|
}
|
|
if (-1 !== t.indexOf("px") && oe(t.split("px")[0])) return Math.abs(t.split("px")[0]);
|
|
if ("top" === t || "left" === t) return 0;
|
|
if ("bottom" === t) return Math.abs(s.height() - l.outerHeight(!1));
|
|
if ("right" === t) return Math.abs(s.width() - l.outerWidth(!1));
|
|
if ("first" === t || "last" === t) {
|
|
var m = l.find(":" + t);
|
|
return "x" === o ? ae(m)[1] : ae(m)[0]
|
|
}
|
|
return e(t).length ? "x" === o ? ae(e(t))[1] : ae(e(t))[0] : (l.css(h, t), void u.update.call(null, n[0]))
|
|
}
|
|
}
|
|
},
|
|
N = function (t) {
|
|
function o() {
|
|
return clearTimeout(f[0].autoUpdate), 0 === l.parents("html").length ? void(l = null) : void(f[0].autoUpdate = setTimeout(function () {
|
|
return c.advanced.updateOnSelectorChange && (s.poll.change.n = i(), s.poll.change.n !== s.poll.change.o) ? (s.poll.change.o = s.poll.change.n, void r(3)) : c.advanced.updateOnContentResize && (s.poll.size.n = l[0].scrollHeight + l[0].scrollWidth + f[0].offsetHeight + l[0].offsetHeight + l[0].offsetWidth, s.poll.size.n !== s.poll.size.o) ? (s.poll.size.o = s.poll.size.n, void r(1)) : !c.advanced.updateOnImageLoad || "auto" === c.advanced.updateOnImageLoad && "y" === c.axis || (s.poll.img.n = f.find("img").length, s.poll.img.n === s.poll.img.o) ? void((c.advanced.updateOnSelectorChange || c.advanced.updateOnContentResize || c.advanced.updateOnImageLoad) && o()) : (s.poll.img.o = s.poll.img.n, void f.find("img").each(function () {
|
|
n(this)
|
|
}))
|
|
}, c.advanced.autoUpdateTimeout))
|
|
}
|
|
|
|
function n(t) {
|
|
function o(e, t) {
|
|
return function () {
|
|
return t.apply(e, arguments)
|
|
}
|
|
}
|
|
|
|
function a() {
|
|
this.onload = null, e(t).addClass(d[2]), r(2)
|
|
}
|
|
if (e(t).hasClass(d[2])) return void r();
|
|
var n = new Image;
|
|
n.onload = o(n, a), n.src = t.src
|
|
}
|
|
|
|
function i() {
|
|
c.advanced.updateOnSelectorChange === !0 && (c.advanced.updateOnSelectorChange = "*");
|
|
var e = 0,
|
|
t = f.find(c.advanced.updateOnSelectorChange);
|
|
return c.advanced.updateOnSelectorChange && t.length > 0 && t.each(function () {
|
|
e += this.offsetHeight + this.offsetWidth
|
|
}), e
|
|
}
|
|
|
|
function r(e) {
|
|
clearTimeout(f[0].autoUpdate), u.update.call(null, l[0], e)
|
|
}
|
|
var l = e(this),
|
|
s = l.data(a),
|
|
c = s.opt,
|
|
f = e("#mCSB_" + s.idx + "_container");
|
|
return t ? (clearTimeout(f[0].autoUpdate), void $(f[0], "autoUpdate")) : void o()
|
|
},
|
|
V = function (e, t, o) {
|
|
return Math.round(e / t) * t - o
|
|
},
|
|
Q = function (t) {
|
|
var o = t.data(a),
|
|
n = e("#mCSB_" + o.idx + "_container,#mCSB_" + o.idx + "_container_wrapper,#mCSB_" + o.idx + "_dragger_vertical,#mCSB_" + o.idx + "_dragger_horizontal");
|
|
n.each(function () {
|
|
Z.call(this)
|
|
})
|
|
},
|
|
G = function (t, o, n) {
|
|
function i(e) {
|
|
return s && c.callbacks[e] && "function" == typeof c.callbacks[e]
|
|
}
|
|
|
|
function r() {
|
|
return [c.callbacks.alwaysTriggerOffsets || w >= S[0] + y, c.callbacks.alwaysTriggerOffsets || -B >= w]
|
|
}
|
|
|
|
function l() {
|
|
var e = [h[0].offsetTop, h[0].offsetLeft],
|
|
o = [x[0].offsetTop, x[0].offsetLeft],
|
|
a = [h.outerHeight(!1), h.outerWidth(!1)],
|
|
i = [f.height(), f.width()];
|
|
t[0].mcs = {
|
|
content: h,
|
|
top: e[0],
|
|
left: e[1],
|
|
draggerTop: o[0],
|
|
draggerLeft: o[1],
|
|
topPct: Math.round(100 * Math.abs(e[0]) / (Math.abs(a[0]) - i[0])),
|
|
leftPct: Math.round(100 * Math.abs(e[1]) / (Math.abs(a[1]) - i[1])),
|
|
direction: n.dir
|
|
}
|
|
}
|
|
var s = t.data(a),
|
|
c = s.opt,
|
|
d = {
|
|
trigger: "internal",
|
|
dir: "y",
|
|
scrollEasing: "mcsEaseOut",
|
|
drag: !1,
|
|
dur: c.scrollInertia,
|
|
overwrite: "all",
|
|
callbacks: !0,
|
|
onStart: !0,
|
|
onUpdate: !0,
|
|
onComplete: !0
|
|
},
|
|
n = e.extend(d, n),
|
|
u = [n.dur, n.drag ? 0 : n.dur],
|
|
f = e("#mCSB_" + s.idx),
|
|
h = e("#mCSB_" + s.idx + "_container"),
|
|
m = h.parent(),
|
|
p = c.callbacks.onTotalScrollOffset ? Y.call(t, c.callbacks.onTotalScrollOffset) : [0, 0],
|
|
g = c.callbacks.onTotalScrollBackOffset ? Y.call(t, c.callbacks.onTotalScrollBackOffset) : [0, 0];
|
|
if (s.trigger = n.trigger, 0 === m.scrollTop() && 0 === m.scrollLeft() || (e(".mCSB_" + s.idx + "_scrollbar").css("visibility", "visible"), m.scrollTop(0).scrollLeft(0)), "_resetY" !== o || s.contentReset.y || (i("onOverflowYNone") && c.callbacks.onOverflowYNone.call(t[0]), s.contentReset.y = 1), "_resetX" !== o || s.contentReset.x || (i("onOverflowXNone") && c.callbacks.onOverflowXNone.call(t[0]), s.contentReset.x = 1), "_resetY" !== o && "_resetX" !== o) {
|
|
if (!s.contentReset.y && t[0].mcs || !s.overflowed[0] || (i("onOverflowY") && c.callbacks.onOverflowY.call(t[0]), s.contentReset.x = null), !s.contentReset.x && t[0].mcs || !s.overflowed[1] || (i("onOverflowX") && c.callbacks.onOverflowX.call(t[0]), s.contentReset.x = null), c.snapAmount) {
|
|
var v = c.snapAmount instanceof Array ? "x" === n.dir ? c.snapAmount[1] : c.snapAmount[0] : c.snapAmount;
|
|
o = V(o, v, c.snapOffset)
|
|
}
|
|
switch (n.dir) {
|
|
case "x":
|
|
var x = e("#mCSB_" + s.idx + "_dragger_horizontal"),
|
|
_ = "left",
|
|
w = h[0].offsetLeft,
|
|
S = [f.width() - h.outerWidth(!1), x.parent().width() - x.width()],
|
|
b = [o, 0 === o ? 0 : o / s.scrollRatio.x],
|
|
y = p[1],
|
|
B = g[1],
|
|
T = y > 0 ? y / s.scrollRatio.x : 0,
|
|
k = B > 0 ? B / s.scrollRatio.x : 0;
|
|
break;
|
|
case "y":
|
|
var x = e("#mCSB_" + s.idx + "_dragger_vertical"),
|
|
_ = "top",
|
|
w = h[0].offsetTop,
|
|
S = [f.height() - h.outerHeight(!1), x.parent().height() - x.height()],
|
|
b = [o, 0 === o ? 0 : o / s.scrollRatio.y],
|
|
y = p[0],
|
|
B = g[0],
|
|
T = y > 0 ? y / s.scrollRatio.y : 0,
|
|
k = B > 0 ? B / s.scrollRatio.y : 0
|
|
}
|
|
b[1] < 0 || 0 === b[0] && 0 === b[1] ? b = [0, 0] : b[1] >= S[1] ? b = [S[0], S[1]] : b[0] = -b[0], t[0].mcs || (l(), i("onInit") && c.callbacks.onInit.call(t[0])), clearTimeout(h[0].onCompleteTimeout), J(x[0], _, Math.round(b[1]), u[1], n.scrollEasing), !s.tweenRunning && (0 === w && b[0] >= 0 || w === S[0] && b[0] <= S[0]) || J(h[0], _, Math.round(b[0]), u[0], n.scrollEasing, n.overwrite, {
|
|
onStart: function () {
|
|
n.callbacks && n.onStart && !s.tweenRunning && (i("onScrollStart") && (l(), c.callbacks.onScrollStart.call(t[0])), s.tweenRunning = !0, C(x), s.cbOffsets = r())
|
|
},
|
|
onUpdate: function () {
|
|
n.callbacks && n.onUpdate && i("whileScrolling") && (l(), c.callbacks.whileScrolling.call(t[0]))
|
|
},
|
|
onComplete: function () {
|
|
if (n.callbacks && n.onComplete) {
|
|
"yx" === c.axis && clearTimeout(h[0].onCompleteTimeout);
|
|
var e = h[0].idleTimer || 0;
|
|
h[0].onCompleteTimeout = setTimeout(function () {
|
|
i("onScroll") && (l(), c.callbacks.onScroll.call(t[0])), i("onTotalScroll") && b[1] >= S[1] - T && s.cbOffsets[0] && (l(), c.callbacks.onTotalScroll.call(t[0])), i("onTotalScrollBack") && b[1] <= k && s.cbOffsets[1] && (l(), c.callbacks.onTotalScrollBack.call(t[0])), s.tweenRunning = !1, h[0].idleTimer = 0, C(x, "hide")
|
|
}, e)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
},
|
|
J = function (e, t, o, a, n, i, r) {
|
|
function l() {
|
|
S.stop || (x || m.call(), x = K() - v, s(), x >= S.time && (S.time = x > S.time ? x + f - (x - S.time) : x + f - 1, S.time < x + 1 && (S.time = x + 1)), S.time < a ? S.id = h(l) : g.call())
|
|
}
|
|
|
|
function s() {
|
|
a > 0 ? (S.currVal = u(S.time, _, b, a, n), w[t] = Math.round(S.currVal) + "px") : w[t] = o + "px", p.call()
|
|
}
|
|
|
|
function c() {
|
|
f = 1e3 / 60, S.time = x + f, h = window.requestAnimationFrame ? window.requestAnimationFrame : function (e) {
|
|
return s(), setTimeout(e, .01)
|
|
}, S.id = h(l)
|
|
}
|
|
|
|
function d() {
|
|
null != S.id && (window.requestAnimationFrame ? window.cancelAnimationFrame(S.id) : clearTimeout(S.id), S.id = null)
|
|
}
|
|
|
|
function u(e, t, o, a, n) {
|
|
switch (n) {
|
|
case "linear":
|
|
case "mcsLinear":
|
|
return o * e / a + t;
|
|
case "mcsLinearOut":
|
|
return e /= a, e--, o * Math.sqrt(1 - e * e) + t;
|
|
case "easeInOutSmooth":
|
|
return e /= a / 2, 1 > e ? o / 2 * e * e + t : (e--, -o / 2 * (e * (e - 2) - 1) + t);
|
|
case "easeInOutStrong":
|
|
return e /= a / 2, 1 > e ? o / 2 * Math.pow(2, 10 * (e - 1)) + t : (e--, o / 2 * (-Math.pow(2, -10 * e) + 2) + t);
|
|
case "easeInOut":
|
|
case "mcsEaseInOut":
|
|
return e /= a / 2, 1 > e ? o / 2 * e * e * e + t : (e -= 2, o / 2 * (e * e * e + 2) + t);
|
|
case "easeOutSmooth":
|
|
return e /= a, e--, -o * (e * e * e * e - 1) + t;
|
|
case "easeOutStrong":
|
|
return o * (-Math.pow(2, -10 * e / a) + 1) + t;
|
|
case "easeOut":
|
|
case "mcsEaseOut":
|
|
default:
|
|
var i = (e /= a) * e,
|
|
r = i * e;
|
|
return t + o * (.499999999999997 * r * i + -2.5 * i * i + 5.5 * r + -6.5 * i + 4 * e)
|
|
}
|
|
}
|
|
e._mTween || (e._mTween = {
|
|
top: {},
|
|
left: {}
|
|
});
|
|
var f, h, r = r || {},
|
|
m = r.onStart || function () {},
|
|
p = r.onUpdate || function () {},
|
|
g = r.onComplete || function () {},
|
|
v = K(),
|
|
x = 0,
|
|
_ = e.offsetTop,
|
|
w = e.style,
|
|
S = e._mTween[t];
|
|
"left" === t && (_ = e.offsetLeft);
|
|
var b = o - _;
|
|
S.stop = 0, "none" !== i && d(), c()
|
|
},
|
|
K = function () {
|
|
return window.performance && window.performance.now ? window.performance.now() : window.performance && window.performance.webkitNow ? window.performance.webkitNow() : Date.now ? Date.now() : (new Date).getTime()
|
|
},
|
|
Z = function () {
|
|
var e = this;
|
|
e._mTween || (e._mTween = {
|
|
top: {},
|
|
left: {}
|
|
});
|
|
for (var t = ["top", "left"], o = 0; o < t.length; o++) {
|
|
var a = t[o];
|
|
e._mTween[a].id && (window.requestAnimationFrame ? window.cancelAnimationFrame(e._mTween[a].id) : clearTimeout(e._mTween[a].id), e._mTween[a].id = null, e._mTween[a].stop = 1)
|
|
}
|
|
},
|
|
$ = function (e, t) {
|
|
try {
|
|
delete e[t]
|
|
} catch (o) {
|
|
e[t] = null
|
|
}
|
|
},
|
|
ee = function (e) {
|
|
return !(e.which && 1 !== e.which)
|
|
},
|
|
te = function (e) {
|
|
var t = e.originalEvent.pointerType;
|
|
return !(t && "touch" !== t && 2 !== t)
|
|
},
|
|
oe = function (e) {
|
|
return !isNaN(parseFloat(e)) && isFinite(e)
|
|
},
|
|
ae = function (e) {
|
|
var t = e.parents(".mCSB_container");
|
|
return [e.offset().top - t.offset().top, e.offset().left - t.offset().left]
|
|
},
|
|
ne = function () {
|
|
function e() {
|
|
var e = ["webkit", "moz", "ms", "o"];
|
|
if ("hidden" in document) return "hidden";
|
|
for (var t = 0; t < e.length; t++)
|
|
if (e[t] + "Hidden" in document) return e[t] + "Hidden";
|
|
return null
|
|
}
|
|
var t = e();
|
|
return t ? document[t] : !1
|
|
};
|
|
e.fn[o] = function (t) {
|
|
return u[t] ? u[t].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof t && t ? void e.error("Method " + t + " does not exist") : u.init.apply(this, arguments)
|
|
}, e[o] = function (t) {
|
|
return u[t] ? u[t].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof t && t ? void e.error("Method " + t + " does not exist") : u.init.apply(this, arguments)
|
|
}, e[o].defaults = i, window[o] = !0, e(window).bind("load", function () {
|
|
e(n)[o](), e.extend(e.expr[":"], {
|
|
mcsInView: e.expr[":"].mcsInView || function (t) {
|
|
var o, a, n = e(t),
|
|
i = n.parents(".mCSB_container");
|
|
if (i.length) return o = i.parent(), a = [i[0].offsetTop, i[0].offsetLeft], a[0] + ae(n)[0] >= 0 && a[0] + ae(n)[0] < o.height() - n.outerHeight(!1) && a[1] + ae(n)[1] >= 0 && a[1] + ae(n)[1] < o.width() - n.outerWidth(!1)
|
|
},
|
|
mcsInSight: e.expr[":"].mcsInSight || function (t, o, a) {
|
|
var n, i, r, l, s = e(t),
|
|
c = s.parents(".mCSB_container"),
|
|
d = "exact" === a[3] ? [
|
|
[1, 0],
|
|
[1, 0]
|
|
] : [
|
|
[.9, .1],
|
|
[.6, .4]
|
|
];
|
|
if (c.length) return n = [s.outerHeight(!1), s.outerWidth(!1)], r = [c[0].offsetTop + ae(s)[0], c[0].offsetLeft + ae(s)[1]], i = [c.parent()[0].offsetHeight, c.parent()[0].offsetWidth], l = [n[0] < i[0] ? d[0] : d[1], n[1] < i[1] ? d[0] : d[1]], r[0] - i[0] * l[0][0] < 0 && r[0] + n[0] - i[0] * l[0][1] >= 0 && r[1] - i[1] * l[1][0] < 0 && r[1] + n[1] - i[1] * l[1][1] >= 0
|
|
},
|
|
mcsOverflow: e.expr[":"].mcsOverflow || function (t) {
|
|
var o = e(t).data(a);
|
|
if (o) return o.overflowed[0] || o.overflowed[1]
|
|
}
|
|
})
|
|
})
|
|
})
|
|
});
|
|
/*===========================================
|
|
|
|
03 -- Smooth scroll js
|
|
|
|
=============================================*/
|
|
// SmoothScroll for websites v1.2.1
|
|
// Licensed under the terms of the MIT license.
|
|
|
|
// People involved
|
|
// - Balazs Galambosi (maintainer)
|
|
// - Michael Herf (Pulse Algorithm)
|
|
|
|
(function () {
|
|
// Scroll Variables (tweakable)
|
|
var defaultOptions = {
|
|
// Scrolling Core
|
|
frameRate: 150, // [Hz]
|
|
animationTime: 400, // [px]
|
|
stepSize: 120, // [px]
|
|
|
|
// Pulse (less tweakable)
|
|
// ratio of "tail" to "acceleration"
|
|
pulseAlgorithm: true,
|
|
pulseScale: 8,
|
|
pulseNormalize: 1,
|
|
|
|
// Acceleration
|
|
accelerationDelta: 20, // 20
|
|
accelerationMax: 1, // 1
|
|
|
|
// Keyboard Settings
|
|
keyboardSupport: true, // option
|
|
arrowScroll: 50, // [px]
|
|
|
|
// Other
|
|
touchpadSupport: true,
|
|
fixedBackground: true,
|
|
excluded: "",
|
|
};
|
|
|
|
var options = defaultOptions;
|
|
|
|
// Other Variables
|
|
var isExcluded = false;
|
|
var isFrame = false;
|
|
var direction = {
|
|
x: 0,
|
|
y: 0
|
|
};
|
|
var initDone = false;
|
|
var root = document.documentElement;
|
|
var activeElement;
|
|
var observer;
|
|
var deltaBuffer = [120, 120, 120];
|
|
|
|
var key = {
|
|
left: 37,
|
|
up: 38,
|
|
right: 39,
|
|
down: 40,
|
|
spacebar: 32,
|
|
pageup: 33,
|
|
pagedown: 34,
|
|
end: 35,
|
|
home: 36,
|
|
};
|
|
|
|
/***********************************************
|
|
* SETTINGS
|
|
***********************************************/
|
|
|
|
var options = defaultOptions;
|
|
|
|
/***********************************************
|
|
* INITIALIZE
|
|
***********************************************/
|
|
|
|
/**
|
|
* Tests if smooth scrolling is allowed. Shuts down everything if not.
|
|
*/
|
|
function initTest() {
|
|
var disableKeyboard = false;
|
|
|
|
// disable keyboard support if anything above requested it
|
|
if (disableKeyboard) {
|
|
removeEvent("keydown", keydown);
|
|
}
|
|
|
|
if (options.keyboardSupport && !disableKeyboard) {
|
|
addEvent("keydown", keydown);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Sets up scrolls array, determines if frames are involved.
|
|
*/
|
|
function init() {
|
|
if (!document.body) return;
|
|
|
|
var body = document.body;
|
|
var html = document.documentElement;
|
|
var windowHeight = window.innerHeight;
|
|
var scrollHeight = body.scrollHeight;
|
|
|
|
// check compat mode for root element
|
|
root = document.compatMode.indexOf("CSS") >= 0 ? html : body;
|
|
activeElement = body;
|
|
|
|
initTest();
|
|
initDone = true;
|
|
|
|
// Checks if this script is running in a frame
|
|
if (top != self) {
|
|
isFrame = true;
|
|
} else if (
|
|
|
|
/**
|
|
* This fixes a bug where the areas left and right to
|
|
* the content does not trigger the onmousewheel event
|
|
* on some pages. e.g.: html, body { height: 100% }
|
|
*/
|
|
scrollHeight > windowHeight &&
|
|
(body.offsetHeight <= windowHeight || html.offsetHeight <= windowHeight)
|
|
) {
|
|
// DOMChange (throttle): fix height
|
|
var pending = false;
|
|
var refresh = function () {
|
|
if (!pending && html.scrollHeight != document.height) {
|
|
pending = true; // add a new pending action
|
|
setTimeout(function () {
|
|
html.style.height = document.height + "px";
|
|
pending = false;
|
|
}, 500); // act rarely to stay fast
|
|
}
|
|
};
|
|
html.style.height = "auto";
|
|
setTimeout(refresh, 10);
|
|
|
|
// clearfix
|
|
if (root.offsetHeight <= windowHeight) {
|
|
var underlay = document.createElement("div");
|
|
underlay.style.clear = "both";
|
|
body.appendChild(underlay);
|
|
}
|
|
}
|
|
|
|
// disable fixed background
|
|
if (!options.fixedBackground && !isExcluded) {
|
|
body.style.backgroundAttachment = "scroll";
|
|
html.style.backgroundAttachment = "scroll";
|
|
}
|
|
}
|
|
|
|
/************************************************
|
|
* SCROLLING
|
|
************************************************/
|
|
|
|
var que = [];
|
|
var pending = false;
|
|
var lastScroll = +new Date();
|
|
|
|
/**
|
|
* Pushes scroll actions to the scrolling queue.
|
|
*/
|
|
function scrollArray(elem, left, top, delay) {
|
|
delay || (delay = 1000);
|
|
directionCheck(left, top);
|
|
|
|
if (options.accelerationMax != 1) {
|
|
var now = +new Date();
|
|
var elapsed = now - lastScroll;
|
|
if (elapsed < options.accelerationDelta) {
|
|
var factor = (1 + 30 / elapsed) / 2;
|
|
if (factor > 1) {
|
|
factor = Math.min(factor, options.accelerationMax);
|
|
left *= factor;
|
|
top *= factor;
|
|
}
|
|
}
|
|
lastScroll = +new Date();
|
|
}
|
|
|
|
// push a scroll command
|
|
que.push({
|
|
x: left,
|
|
y: top,
|
|
lastX: left < 0 ? 0.99 : -0.99,
|
|
lastY: top < 0 ? 0.99 : -0.99,
|
|
start: +new Date(),
|
|
});
|
|
|
|
// don't act if there's a pending queue
|
|
if (pending) {
|
|
return;
|
|
}
|
|
|
|
var scrollWindow = elem === document.body;
|
|
|
|
var step = function (time) {
|
|
var now = +new Date();
|
|
var scrollX = 0;
|
|
var scrollY = 0;
|
|
|
|
for (var i = 0; i < que.length; i++) {
|
|
var item = que[i];
|
|
var elapsed = now - item.start;
|
|
var finished = elapsed >= options.animationTime;
|
|
|
|
// scroll position: [0, 1]
|
|
var position = finished ? 1 : elapsed / options.animationTime;
|
|
|
|
// easing [optional]
|
|
if (options.pulseAlgorithm) {
|
|
position = pulse(position);
|
|
}
|
|
|
|
// only need the difference
|
|
var x = (item.x * position - item.lastX) >> 0;
|
|
var y = (item.y * position - item.lastY) >> 0;
|
|
|
|
// add this to the total scrolling
|
|
scrollX += x;
|
|
scrollY += y;
|
|
|
|
// update last values
|
|
item.lastX += x;
|
|
item.lastY += y;
|
|
|
|
// delete and step back if it's over
|
|
if (finished) {
|
|
que.splice(i, 1);
|
|
i--;
|
|
}
|
|
}
|
|
|
|
// scroll left and top
|
|
if (scrollWindow) {
|
|
window.scrollBy(scrollX, scrollY);
|
|
} else {
|
|
if (scrollX) elem.scrollLeft += scrollX;
|
|
if (scrollY) elem.scrollTop += scrollY;
|
|
}
|
|
|
|
// clean up if there's nothing left to do
|
|
if (!left && !top) {
|
|
que = [];
|
|
}
|
|
|
|
if (que.length) {
|
|
requestFrame(step, elem, delay / options.frameRate + 1);
|
|
} else {
|
|
pending = false;
|
|
}
|
|
};
|
|
|
|
// start a new queue of actions
|
|
requestFrame(step, elem, 0);
|
|
pending = true;
|
|
}
|
|
|
|
/***********************************************
|
|
* EVENTS
|
|
***********************************************/
|
|
|
|
/**
|
|
* Mouse wheel handler.
|
|
* @param {Object} event
|
|
*/
|
|
function wheel(event) {
|
|
if (!initDone) {
|
|
init();
|
|
}
|
|
|
|
var target = event.target;
|
|
var overflowing = overflowingAncestor(target);
|
|
|
|
// use default if there's no overflowing
|
|
// element or default action is prevented
|
|
if (
|
|
!overflowing ||
|
|
event.defaultPrevented ||
|
|
isNodeName(activeElement, "embed") ||
|
|
(isNodeName(target, "embed") && /\.pdf/i.test(target.src))
|
|
) {
|
|
return true;
|
|
}
|
|
|
|
var deltaX = event.wheelDeltaX || 0;
|
|
var deltaY = event.wheelDeltaY || 0;
|
|
|
|
// use wheelDelta if deltaX/Y is not available
|
|
if (!deltaX && !deltaY) {
|
|
deltaY = event.wheelDelta || 0;
|
|
}
|
|
|
|
// check if it's a touchpad scroll that should be ignored
|
|
if (!options.touchpadSupport && isTouchpad(deltaY)) {
|
|
return true;
|
|
}
|
|
|
|
// scale by step size
|
|
// delta is 120 most of the time
|
|
// synaptics seems to send 1 sometimes
|
|
if (Math.abs(deltaX) > 1.2) {
|
|
deltaX *= options.stepSize / 120;
|
|
}
|
|
if (Math.abs(deltaY) > 1.2) {
|
|
deltaY *= options.stepSize / 120;
|
|
}
|
|
|
|
scrollArray(overflowing, -deltaX, -deltaY);
|
|
event.preventDefault();
|
|
}
|
|
|
|
/**
|
|
* Keydown event handler.
|
|
* @param {Object} event
|
|
*/
|
|
function keydown(event) {
|
|
var target = event.target;
|
|
var modifier =
|
|
event.ctrlKey ||
|
|
event.altKey ||
|
|
event.metaKey ||
|
|
(event.shiftKey && event.keyCode !== key.spacebar);
|
|
|
|
// do nothing if user is editing text
|
|
// or using a modifier key (except shift)
|
|
// or in a dropdown
|
|
if (
|
|
/input|textarea|select|embed/i.test(target.nodeName) ||
|
|
target.isContentEditable ||
|
|
event.defaultPrevented ||
|
|
modifier
|
|
) {
|
|
return true;
|
|
}
|
|
// spacebar should trigger button press
|
|
if (isNodeName(target, "button") && event.keyCode === key.spacebar) {
|
|
return true;
|
|
}
|
|
|
|
var shift,
|
|
x = 0,
|
|
y = 0;
|
|
var elem = overflowingAncestor(activeElement);
|
|
var clientHeight = elem.clientHeight;
|
|
|
|
if (elem == document.body) {
|
|
clientHeight = window.innerHeight;
|
|
}
|
|
|
|
switch (event.keyCode) {
|
|
case key.up:
|
|
y = -options.arrowScroll;
|
|
break;
|
|
case key.down:
|
|
y = options.arrowScroll;
|
|
break;
|
|
case key.spacebar: // (+ shift)
|
|
shift = event.shiftKey ? 1 : -1;
|
|
y = -shift * clientHeight * 0.9;
|
|
break;
|
|
case key.pageup:
|
|
y = -clientHeight * 0.9;
|
|
break;
|
|
case key.pagedown:
|
|
y = clientHeight * 0.9;
|
|
break;
|
|
case key.home:
|
|
y = -elem.scrollTop;
|
|
break;
|
|
case key.end:
|
|
var damt = elem.scrollHeight - elem.scrollTop - clientHeight;
|
|
y = damt > 0 ? damt + 10 : 0;
|
|
break;
|
|
case key.left:
|
|
x = -options.arrowScroll;
|
|
break;
|
|
case key.right:
|
|
x = options.arrowScroll;
|
|
break;
|
|
default:
|
|
return true; // a key we don't care about
|
|
}
|
|
|
|
scrollArray(elem, x, y);
|
|
event.preventDefault();
|
|
}
|
|
|
|
/**
|
|
* Mousedown event only for updating activeElement
|
|
*/
|
|
function mousedown(event) {
|
|
activeElement = event.target;
|
|
}
|
|
|
|
/***********************************************
|
|
* OVERFLOW
|
|
***********************************************/
|
|
|
|
var cache = {}; // cleared out every once in while
|
|
setInterval(function () {
|
|
cache = {};
|
|
}, 10 * 1000);
|
|
|
|
var uniqueID = (function () {
|
|
var i = 0;
|
|
return function (el) {
|
|
return el.uniqueID || (el.uniqueID = i++);
|
|
};
|
|
})();
|
|
|
|
function setCache(elems, overflowing) {
|
|
for (var i = elems.length; i--;) cache[uniqueID(elems[i])] = overflowing;
|
|
return overflowing;
|
|
}
|
|
|
|
function overflowingAncestor(el) {
|
|
var elems = [];
|
|
var rootScrollHeight = root.scrollHeight;
|
|
do {
|
|
var cached = cache[uniqueID(el)];
|
|
if (cached) {
|
|
return setCache(elems, cached);
|
|
}
|
|
elems.push(el);
|
|
if (rootScrollHeight === el.scrollHeight) {
|
|
if (!isFrame || root.clientHeight + 10 < rootScrollHeight) {
|
|
return setCache(elems, document.body); // scrolling root in WebKit
|
|
}
|
|
} else if (el.clientHeight + 10 < el.scrollHeight) {
|
|
overflow = getComputedStyle(el, "").getPropertyValue("overflow-y");
|
|
if (overflow === "scroll" || overflow === "auto") {
|
|
return setCache(elems, el);
|
|
}
|
|
}
|
|
} while ((el = el.parentNode));
|
|
}
|
|
|
|
/***********************************************
|
|
* HELPERS
|
|
***********************************************/
|
|
|
|
function addEvent(type, fn, bubble) {
|
|
window.addEventListener(type, fn, bubble || false);
|
|
}
|
|
|
|
function removeEvent(type, fn, bubble) {
|
|
window.removeEventListener(type, fn, bubble || false);
|
|
}
|
|
|
|
function isNodeName(el, tag) {
|
|
return (el.nodeName || "").toLowerCase() === tag.toLowerCase();
|
|
}
|
|
|
|
function directionCheck(x, y) {
|
|
x = x > 0 ? 1 : -1;
|
|
y = y > 0 ? 1 : -1;
|
|
if (direction.x !== x || direction.y !== y) {
|
|
direction.x = x;
|
|
direction.y = y;
|
|
que = [];
|
|
lastScroll = 0;
|
|
}
|
|
}
|
|
|
|
var deltaBufferTimer;
|
|
|
|
function isTouchpad(deltaY) {
|
|
if (!deltaY) return;
|
|
deltaY = Math.abs(deltaY);
|
|
deltaBuffer.push(deltaY);
|
|
deltaBuffer.shift();
|
|
clearTimeout(deltaBufferTimer);
|
|
var allDivisable =
|
|
isDivisible(deltaBuffer[0], 120) &&
|
|
isDivisible(deltaBuffer[1], 120) &&
|
|
isDivisible(deltaBuffer[2], 120);
|
|
return !allDivisable;
|
|
}
|
|
|
|
function isDivisible(n, divisor) {
|
|
return Math.floor(n / divisor) == n / divisor;
|
|
}
|
|
|
|
var requestFrame = (function () {
|
|
return (
|
|
window.requestAnimationFrame ||
|
|
window.webkitRequestAnimationFrame ||
|
|
function (callback, element, delay) {
|
|
window.setTimeout(callback, delay || 1000 / 60);
|
|
}
|
|
);
|
|
})();
|
|
|
|
/***********************************************
|
|
* PULSE
|
|
***********************************************/
|
|
|
|
/**
|
|
* Viscous fluid with a pulse for part and decay for the rest.
|
|
* - Applies a fixed force over an interval (a damped acceleration), and
|
|
* - Lets the exponential bleed away the velocity over a longer interval
|
|
* - Michael Herf, http://stereopsis.com/stopping/
|
|
*/
|
|
function pulse_(x) {
|
|
var val, start, expx;
|
|
// test
|
|
x = x * options.pulseScale;
|
|
if (x < 1) {
|
|
// acceleartion
|
|
val = x - (1 - Math.exp(-x));
|
|
} else {
|
|
// tail
|
|
// the previous animation ended here:
|
|
start = Math.exp(-1);
|
|
// simple viscous drag
|
|
x -= 1;
|
|
expx = 1 - Math.exp(-x);
|
|
val = start + expx * (1 - start);
|
|
}
|
|
return val * options.pulseNormalize;
|
|
}
|
|
|
|
function pulse(x) {
|
|
if (x >= 1) return 1;
|
|
if (x <= 0) return 0;
|
|
|
|
if (options.pulseNormalize == 1) {
|
|
options.pulseNormalize /= pulse_(1);
|
|
}
|
|
return pulse_(x);
|
|
}
|
|
|
|
var isChrome = /chrome/i.test(window.navigator.userAgent);
|
|
var wheelEvent = null;
|
|
if ("onwheel" in document.createElement("div")) wheelEvent = "wheel";
|
|
else if ("onmousewheel" in document.createElement("div"))
|
|
wheelEvent = "mousewheel";
|
|
|
|
if (wheelEvent && isChrome) {
|
|
addEvent(wheelEvent, wheel);
|
|
addEvent("mousedown", mousedown);
|
|
addEvent("load", init);
|
|
}
|
|
})(); |