From 88da186feafdae8e6648ff08268c0de3035aebbb Mon Sep 17 00:00:00 2001 From: Rene Date: Mon, 30 Dec 2019 18:38:40 +0100 Subject: [PATCH] version 1.10.2 --- css/OverlayScrollbars.css | 2 +- css/OverlayScrollbars.min.css | 2 +- js/OverlayScrollbars.js | 1700 ++++++++++++++-------------- js/OverlayScrollbars.min.js | 4 +- js/jquery.overlayScrollbars.js | 2 +- js/jquery.overlayScrollbars.min.js | 2 +- package.json | 2 +- 7 files changed, 857 insertions(+), 857 deletions(-) diff --git a/css/OverlayScrollbars.css b/css/OverlayScrollbars.css index d380c42..19840ed 100644 --- a/css/OverlayScrollbars.css +++ b/css/OverlayScrollbars.css @@ -2,7 +2,7 @@ * OverlayScrollbars * https://github.com/KingSora/OverlayScrollbars * - * Version: 1.10.1 + * Version: 1.10.2 * * Copyright KingSora | Rene Haas. * https://github.com/KingSora diff --git a/css/OverlayScrollbars.min.css b/css/OverlayScrollbars.min.css index 2aab249..6198894 100644 --- a/css/OverlayScrollbars.min.css +++ b/css/OverlayScrollbars.min.css @@ -2,7 +2,7 @@ * OverlayScrollbars * https://github.com/KingSora/OverlayScrollbars * - * Version: 1.10.1 + * Version: 1.10.2 * * Copyright KingSora | Rene Haas. * https://github.com/KingSora diff --git a/js/OverlayScrollbars.js b/js/OverlayScrollbars.js index 0b5166e..3695d92 100644 --- a/js/OverlayScrollbars.js +++ b/js/OverlayScrollbars.js @@ -2,7 +2,7 @@ * OverlayScrollbars * https://github.com/KingSora/OverlayScrollbars * - * Version: 1.10.1 + * Version: 1.10.2 * * Copyright KingSora | Rene Haas. * https://github.com/KingSora @@ -13,61 +13,61 @@ (function (global, factory) { if (typeof define === 'function' && define.amd) - define(function() { return factory(global, global.document, undefined); }); + define(function () { return factory(global, global.document, undefined); }); else if (typeof module === 'object' && typeof module.exports === 'object') module.exports = factory(global, global.document, undefined); else factory(global, global.document, undefined); }(typeof window !== 'undefined' ? window : this, - function(window, document, undefined) { + function (window, document, undefined) { 'use strict'; var PLUGINNAME = 'OverlayScrollbars'; var TYPES = { - o : 'object', - f : 'function', - a : 'array', - s : 'string', - b : 'boolean', - n : 'number', - u : 'undefined', - z : 'null' + o: 'object', + f: 'function', + a: 'array', + s: 'string', + b: 'boolean', + n: 'number', + u: 'undefined', + z: 'null' //d : 'date', //e : 'error', //r : 'regexp', //y : 'symbol' }; var LEXICON = { - c : 'class', - s : 'style', - i : 'id', - l : 'length', - p : 'prototype', - oH : 'offsetHeight', - cH : 'clientHeight', - sH : 'scrollHeight', - oW : 'offsetWidth', - cW : 'clientWidth', - sW : 'scrollWidth', - hOP : 'hasOwnProperty', - bCR : 'getBoundingClientRect' + c: 'class', + s: 'style', + i: 'id', + l: 'length', + p: 'prototype', + oH: 'offsetHeight', + cH: 'clientHeight', + sH: 'scrollHeight', + oW: 'offsetWidth', + cW: 'clientWidth', + sW: 'scrollWidth', + hOP: 'hasOwnProperty', + bCR: 'getBoundingClientRect' }; - var VENDORS = (function() { + var VENDORS = (function () { //https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix - var jsCache = { }; - var cssCache = { }; + var jsCache = {}; + var cssCache = {}; var cssPrefixes = ['-webkit-', '-moz-', '-o-', '-ms-']; var jsPrefixes = ['WebKit', 'Moz', 'O', 'MS']; function firstLetterToUpper(str) { return str.charAt(0).toUpperCase() + str.slice(1); } - + return { _cssPrefixes: cssPrefixes, _jsPrefixes: jsPrefixes, - _cssProperty : function(name) { + _cssProperty: function (name) { var result = cssCache[name]; - - if(cssCache[LEXICON.hOP](name)) + + if (cssCache[LEXICON.hOP](name)) return result; var uppercasedName = firstLetterToUpper(name); @@ -85,33 +85,33 @@ currVendorWithoutDashes + uppercasedName, //webkitTransition firstLetterToUpper(currVendorWithoutDashes) + uppercasedName //WebkitTransition ]; - for(v = 0; v < resultPossibilities[LEXICON.l]; v++) { - if(elmStyle[resultPossibilities[v]] !== undefined) { + for (v = 0; v < resultPossibilities[LEXICON.l]; v++) { + if (elmStyle[resultPossibilities[v]] !== undefined) { result = resultPossibilities[v]; break; } } } - + cssCache[name] = result; return result; }, - _jsAPI : function(name, isInterface, fallback) { + _jsAPI: function (name, isInterface, fallback) { var i = 0; var result = jsCache[name]; - - if(!jsCache[LEXICON.hOP](name)) { + + if (!jsCache[LEXICON.hOP](name)) { result = window[name]; - for(; i < jsPrefixes[LEXICON.l]; i++) + for (; i < jsPrefixes[LEXICON.l]; i++) result = result || window[(isInterface ? jsPrefixes[i] : jsPrefixes[i].toLowerCase()) + firstLetterToUpper(name)]; jsCache[name] = result; } return result || fallback; } - + } })(); - var COMPATIBILITY = (function() { + var COMPATIBILITY = (function () { function windowSize(x) { return x ? window.innerWidth || document.documentElement[LEXICON.cW] || document.body[LEXICON.cW] : window.innerHeight || document.documentElement[LEXICON.cH] || document.body[LEXICON.cH]; } @@ -122,10 +122,10 @@ // internal IsCallable function //throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); } - var proto = LEXICON.p; - var aArgs = Array[proto].slice.call(arguments, 2); - var fNOP = function() {}; - var fBound = function() { return func.apply(this instanceof fNOP ? this : thisObj, aArgs.concat(Array[proto].slice.call(arguments))); }; + var proto = LEXICON.p; + var aArgs = Array[proto].slice.call(arguments, 2); + var fNOP = function () { }; + var fBound = function () { return func.apply(this instanceof fNOP ? this : thisObj, aArgs.concat(Array[proto].slice.call(arguments))); }; if (func[proto]) fNOP[proto] = func[proto]; // Function.prototype doesn't have a prototype property @@ -133,7 +133,7 @@ return fBound; } - + return { /** * Gets the current window width. @@ -175,7 +175,7 @@ * Gets the current time. * @returns {number} The current time. */ - now: function() { + now: function () { return Date.now && Date.now() || new Date().getTime(); }, @@ -183,8 +183,8 @@ * Stops the propagation of the given event. * @param event The event of which the propagation shall be stoped. */ - stpP: function(event) { - if(event.stopPropagation) + stpP: function (event) { + if (event.stopPropagation) event.stopPropagation(); else event.cancelBubble = true; @@ -194,8 +194,8 @@ * Prevents the default action of the given event. * @param event The event of which the default action shall be prevented. */ - prvD: function(event) { - if(event.preventDefault && event.cancelable) + prvD: function (event) { + if (event.preventDefault && event.cancelable) event.preventDefault(); else event.returnValue = false; @@ -206,7 +206,7 @@ * @param event The mouse event of which the pageX and pageX shall be got. * @returns {{x: number, y: number}} x = pageX value, y = pageY value. */ - page: function(event) { + page: function (event) { event = event.originalEvent || event; var strPage = 'page'; @@ -219,11 +219,11 @@ var body = eventDoc.body; //if touch event return return pageX/Y of it - if(event.touches !== undefined) { + if (event.touches !== undefined) { var touch = event.touches[0]; return { - x : touch[strPage + strX], - y : touch[strPage + strY] + x: touch[strPage + strX], + y: touch[strPage + strY] } } @@ -231,17 +231,17 @@ if (!event[strPage + strX] && event[strClient + strX] && event[strClient + strX] != null) { return { - x : event[strClient + strX] + - (doc && doc.scrollLeft || body && body.scrollLeft || 0) - - (doc && doc.clientLeft || body && body.clientLeft || 0), - y : event[strClient + strY] + - (doc && doc.scrollTop || body && body.scrollTop || 0) - - (doc && doc.clientTop || body && body.clientTop || 0) + x: event[strClient + strX] + + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - + (doc && doc.clientLeft || body && body.clientLeft || 0), + y: event[strClient + strY] + + (doc && doc.scrollTop || body && body.scrollTop || 0) - + (doc && doc.clientTop || body && body.clientTop || 0) } } return { - x : event[strPage + strX], - y : event[strPage + strY] + x: event[strPage + strX], + y: event[strPage + strY] }; }, @@ -250,7 +250,7 @@ * @param event The mouse event of which the clicked button shal be got. * @returns {number} The number of the clicked mouse button. (0 : none | 1 : leftButton | 2 : middleButton | 3 : rightButton) */ - mBtn: function(event) { + mBtn: function (event) { var button = event.button; if (!event.which && button !== undefined) return (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0))); @@ -264,14 +264,14 @@ * @param arr The array. * @returns {number} The zero based index of the item or -1 if the item isn't in the array. */ - inA : function(item, arr) { + inA: function (item, arr) { for (var i = 0; i < arr[LEXICON.l]; i++) //Sometiems in IE a "SCRIPT70" Permission denied error occurs if HTML elements in a iFrame are compared try { if (arr[i] === item) return i; } - catch(e) { } + catch (e) { } return -1; }, @@ -280,7 +280,7 @@ * @param arr The potential array. * @returns {boolean} True if the given value is a array, false otherwise. */ - isA: function(arr) { + isA: function (arr) { var def = Array.isArray; return def ? def(arr) : this.type(arr) == TYPES.a; }, @@ -290,7 +290,7 @@ * @param obj The object of which the type shall be determined. * @returns {string} The type of the given object. */ - type: function(obj) { + type: function (obj) { if (obj === undefined) return obj + ''; if (obj === null) @@ -318,18 +318,18 @@ var MATH = Math; var JQUERY = window.jQuery; - var EASING = (function() { + var EASING = (function () { var _easingsMath = { - p : MATH.PI, - c : MATH.cos, - s : MATH.sin, - w : MATH.pow, - t : MATH.sqrt, - n : MATH.asin, - a : MATH.abs, - o : 1.70158 + p: MATH.PI, + c: MATH.cos, + s: MATH.sin, + w: MATH.pow, + t: MATH.sqrt, + n: MATH.asin, + a: MATH.abs, + o: 1.70158 }; - + /* x : current percent (0 - 1), t : current time (duration * percent), @@ -344,130 +344,130 @@ swing: function (x, t, b, c, d) { return 0.5 - _easingsMath.c(x * _easingsMath.p) / 2; }, - linear: function(x, t, b, c, d) { + linear: function (x, t, b, c, d) { return x; }, easeInQuad: function (x, t, b, c, d) { - return c*(t/=d)*t + b; + return c * (t /= d) * t + b; }, easeOutQuad: function (x, t, b, c, d) { - return -c *(t/=d)*(t-2) + b; + return -c * (t /= d) * (t - 2) + b; }, easeInOutQuad: function (x, t, b, c, d) { - return ((t/=d/2) < 1) ? c/2*t*t + b : -c/2 * ((--t)*(t-2) - 1) + b; + return ((t /= d / 2) < 1) ? c / 2 * t * t + b : -c / 2 * ((--t) * (t - 2) - 1) + b; }, easeInCubic: function (x, t, b, c, d) { - return c*(t/=d)*t*t + b; + return c * (t /= d) * t * t + b; }, easeOutCubic: function (x, t, b, c, d) { - return c*((t=t/d-1)*t*t + 1) + b; + return c * ((t = t / d - 1) * t * t + 1) + b; }, easeInOutCubic: function (x, t, b, c, d) { - return ((t/=d/2) < 1) ? c/2*t*t*t + b : c/2*((t-=2)*t*t + 2) + b; + return ((t /= d / 2) < 1) ? c / 2 * t * t * t + b : c / 2 * ((t -= 2) * t * t + 2) + b; }, easeInQuart: function (x, t, b, c, d) { - return c*(t/=d)*t*t*t + b; + return c * (t /= d) * t * t * t + b; }, easeOutQuart: function (x, t, b, c, d) { - return -c * ((t=t/d-1)*t*t*t - 1) + b; + return -c * ((t = t / d - 1) * t * t * t - 1) + b; }, easeInOutQuart: function (x, t, b, c, d) { - return ((t/=d/2) < 1) ? c/2*t*t*t*t + b : -c/2 * ((t-=2)*t*t*t - 2) + b; + return ((t /= d / 2) < 1) ? c / 2 * t * t * t * t + b : -c / 2 * ((t -= 2) * t * t * t - 2) + b; }, easeInQuint: function (x, t, b, c, d) { - return c*(t/=d)*t*t*t*t + b; + return c * (t /= d) * t * t * t * t + b; }, easeOutQuint: function (x, t, b, c, d) { - return c*((t=t/d-1)*t*t*t*t + 1) + b; + return c * ((t = t / d - 1) * t * t * t * t + 1) + b; }, easeInOutQuint: function (x, t, b, c, d) { - return ((t/=d/2) < 1) ? c/2*t*t*t*t*t + b : c/2*((t-=2)*t*t*t*t + 2) + b; + return ((t /= d / 2) < 1) ? c / 2 * t * t * t * t * t + b : c / 2 * ((t -= 2) * t * t * t * t + 2) + b; }, easeInSine: function (x, t, b, c, d) { - return -c * _easingsMath.c(t/d * (_easingsMath.p/2)) + c + b; + return -c * _easingsMath.c(t / d * (_easingsMath.p / 2)) + c + b; }, easeOutSine: function (x, t, b, c, d) { - return c * _easingsMath.s(t/d * (_easingsMath.p/2)) + b; + return c * _easingsMath.s(t / d * (_easingsMath.p / 2)) + b; }, easeInOutSine: function (x, t, b, c, d) { - return -c/2 * (_easingsMath.c(_easingsMath.p*t/d) - 1) + b; + return -c / 2 * (_easingsMath.c(_easingsMath.p * t / d) - 1) + b; }, easeInExpo: function (x, t, b, c, d) { - return (t==0) ? b : c * _easingsMath.w(2, 10 * (t/d - 1)) + b; + return (t == 0) ? b : c * _easingsMath.w(2, 10 * (t / d - 1)) + b; }, easeOutExpo: function (x, t, b, c, d) { - return (t==d) ? b+c : c * (-_easingsMath.w(2, -10 * t/d) + 1) + b; + return (t == d) ? b + c : c * (-_easingsMath.w(2, -10 * t / d) + 1) + b; }, easeInOutExpo: function (x, t, b, c, d) { - if (t==0) return b; - if (t==d) return b+c; - if ((t/=d/2) < 1) return c/2 * _easingsMath.w(2, 10 * (t - 1)) + b; - return c/2 * (-_easingsMath.w(2, -10 * --t) + 2) + b; + if (t == 0) return b; + if (t == d) return b + c; + if ((t /= d / 2) < 1) return c / 2 * _easingsMath.w(2, 10 * (t - 1)) + b; + return c / 2 * (-_easingsMath.w(2, -10 * --t) + 2) + b; }, easeInCirc: function (x, t, b, c, d) { - return -c * (_easingsMath.t(1 - (t/=d)*t) - 1) + b; + return -c * (_easingsMath.t(1 - (t /= d) * t) - 1) + b; }, easeOutCirc: function (x, t, b, c, d) { - return c * _easingsMath.t(1 - (t=t/d-1)*t) + b; + return c * _easingsMath.t(1 - (t = t / d - 1) * t) + b; }, easeInOutCirc: function (x, t, b, c, d) { - return ((t/=d/2) < 1) ? -c/2 * (_easingsMath.t(1 - t*t) - 1) + b : c/2 * (_easingsMath.t(1 - (t-=2)*t) + 1) + b; + return ((t /= d / 2) < 1) ? -c / 2 * (_easingsMath.t(1 - t * t) - 1) + b : c / 2 * (_easingsMath.t(1 - (t -= 2) * t) + 1) + b; }, easeInElastic: function (x, t, b, c, d) { - var s=_easingsMath.o;var p=0;var a=c; - if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; - if (a < _easingsMath.a(c)) { a=c; s=p/4; } - else s = p/(2*_easingsMath.p) * _easingsMath.n (c/a); - return -(a*_easingsMath.w(2,10*(t-=1)) * _easingsMath.s( (t*d-s)*(2*_easingsMath.p)/p )) + b; + var s = _easingsMath.o; var p = 0; var a = c; + if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; + if (a < _easingsMath.a(c)) { a = c; s = p / 4; } + else s = p / (2 * _easingsMath.p) * _easingsMath.n(c / a); + return -(a * _easingsMath.w(2, 10 * (t -= 1)) * _easingsMath.s((t * d - s) * (2 * _easingsMath.p) / p)) + b; }, easeOutElastic: function (x, t, b, c, d) { - var s=_easingsMath.o;var p=0;var a=c; - if (t==0) return b; - if ((t/=d)==1) return b+c; - if (!p) p=d*.3; - if (a < _easingsMath.a(c)) { a=c; s=p/4; } - else s = p/(2*_easingsMath.p) * _easingsMath.n (c/a); - return a*_easingsMath.w(2,-10*t) * _easingsMath.s( (t*d-s)*(2*_easingsMath.p)/p ) + c + b; + var s = _easingsMath.o; var p = 0; var a = c; + if (t == 0) return b; + if ((t /= d) == 1) return b + c; + if (!p) p = d * .3; + if (a < _easingsMath.a(c)) { a = c; s = p / 4; } + else s = p / (2 * _easingsMath.p) * _easingsMath.n(c / a); + return a * _easingsMath.w(2, -10 * t) * _easingsMath.s((t * d - s) * (2 * _easingsMath.p) / p) + c + b; }, easeInOutElastic: function (x, t, b, c, d) { - var s=_easingsMath.o;var p=0;var a=c; - if (t==0) return b; - if ((t/=d/2)==2) return b+c; - if (!p) p=d*(.3*1.5); - if (a < _easingsMath.a(c)) { a=c; s=p/4; } - else s = p/(2*_easingsMath.p) * _easingsMath.n (c/a); - if (t < 1) return -.5*(a*_easingsMath.w(2,10*(t-=1)) * _easingsMath.s( (t*d-s)*(2*_easingsMath.p)/p )) + b; - return a*_easingsMath.w(2,-10*(t-=1)) * _easingsMath.s( (t*d-s)*(2*_easingsMath.p)/p )*.5 + c + b; + var s = _easingsMath.o; var p = 0; var a = c; + if (t == 0) return b; + if ((t /= d / 2) == 2) return b + c; + if (!p) p = d * (.3 * 1.5); + if (a < _easingsMath.a(c)) { a = c; s = p / 4; } + else s = p / (2 * _easingsMath.p) * _easingsMath.n(c / a); + if (t < 1) return -.5 * (a * _easingsMath.w(2, 10 * (t -= 1)) * _easingsMath.s((t * d - s) * (2 * _easingsMath.p) / p)) + b; + return a * _easingsMath.w(2, -10 * (t -= 1)) * _easingsMath.s((t * d - s) * (2 * _easingsMath.p) / p) * .5 + c + b; }, easeInBack: function (x, t, b, c, d, s) { s = s || _easingsMath.o; - return c*(t/=d)*t*((s+1)*t - s) + b; + return c * (t /= d) * t * ((s + 1) * t - s) + b; }, easeOutBack: function (x, t, b, c, d, s) { s = s || _easingsMath.o; - return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; + return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b; }, easeInOutBack: function (x, t, b, c, d, s) { s = s || _easingsMath.o; - return ((t/=d/2) < 1) ? c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b : c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; + return ((t /= d / 2) < 1) ? c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b : c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b; }, easeInBounce: function (x, t, b, c, d) { - return c - this.easeOutBounce (x, d-t, 0, c, d) + b; + return c - this.easeOutBounce(x, d - t, 0, c, d) + b; }, easeOutBounce: function (x, t, b, c, d) { var o = 7.5625; - if ((t/=d) < (1/2.75)) { - return c*(o*t*t) + b; - } else if (t < (2/2.75)) { - return c*(o*(t-=(1.5/2.75))*t + .75) + b; - } else if (t < (2.5/2.75)) { - return c*(o*(t-=(2.25/2.75))*t + .9375) + b; + if ((t /= d) < (1 / 2.75)) { + return c * (o * t * t) + b; + } else if (t < (2 / 2.75)) { + return c * (o * (t -= (1.5 / 2.75)) * t + .75) + b; + } else if (t < (2.5 / 2.75)) { + return c * (o * (t -= (2.25 / 2.75)) * t + .9375) + b; } else { - return c*(o*(t-=(2.625/2.75))*t + .984375) + b; + return c * (o * (t -= (2.625 / 2.75)) * t + .984375) + b; } }, easeInOutBounce: function (x, t, b, c, d) { - return (t < d/2) ? this.easeInBounce (x, t*2, 0, c, d) * .5 + b : this.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; + return (t < d / 2) ? this.easeInBounce(x, t * 2, 0, c, d) * .5 + b : this.easeOutBounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b; } }; /* @@ -503,13 +503,13 @@ * */ })(); - var FRAMEWORK = (function() { - var _rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + var FRAMEWORK = (function () { + var _rnothtmlwhite = (/[^\x20\t\r\n\f]+/g); var _strSpace = ' '; var _strEmpty = ''; var _strScrollLeft = 'scrollLeft'; var _strScrollTop = 'scrollTop'; - var _animations = [ ]; + var _animations = []; var _type = COMPATIBILITY.type; var _cssNumber = { animationIterationCount: true, @@ -596,13 +596,13 @@ return i; return -1; } - + function isFunction(obj) { return _type(obj) == TYPES.f; }; function isEmptyObject(obj) { - for (var name in obj ) + for (var name in obj) return false; return true; }; @@ -669,11 +669,11 @@ } function insertAdjacentElement(el, strategy, child) { - if(_type(child) == TYPES.a) { - for(var i = 0; i < child[LEXICON.l]; i++) + if (_type(child) == TYPES.a) { + for (var i = 0; i < child[LEXICON.l]; i++) insertAdjacentElement(el, strategy, child[i]); } - else if(_type(child) == TYPES.s) + else if (_type(child) == TYPES.s) el.insertAdjacentHTML(strategy, child); else el.insertAdjacentElement(strategy, child.nodeType ? child : child[0]); @@ -681,13 +681,13 @@ function setCSSVal(el, prop, val) { try { - if(el[LEXICON.s][prop] !== undefined) + if (el[LEXICON.s][prop] !== undefined) el[LEXICON.s][prop] = parseCSSVal(prop, val); - } catch(e) { } + } catch (e) { } } function parseCSSVal(prop, val) { - if(!_cssNumber[prop.toLowerCase()] && _type(val) == TYPES.n) + if (!_cssNumber[prop.toLowerCase()] && _type(val) == TYPES.n) val += 'px'; return val; } @@ -695,21 +695,21 @@ function startNextAnimationInQ(animObj, removeFromQ) { var index; var nextAnim; - if(removeFromQ !== false) + if (removeFromQ !== false) animObj.q.splice(0, 1); - if(animObj.q[LEXICON.l] > 0) { + if (animObj.q[LEXICON.l] > 0) { nextAnim = animObj.q[0]; animate(animObj.el, nextAnim.props, nextAnim.duration, nextAnim.easing, nextAnim.complete, true); } else { index = inArray(animObj, _animations); - if(index > -1) + if (index > -1) _animations.splice(index, 1); } } function setAnimationValue(el, prop, value) { - if(prop === _strScrollLeft || prop === _strScrollTop) + if (prop === _strScrollLeft || prop === _strScrollTop) el[prop] = value; else setCSSVal(el, prop, value); @@ -717,8 +717,8 @@ function animate(el, props, options, easing, complete, guaranteedNext) { var hasOptions = isPlainObject(options); - var from = { }; - var to = { }; + var from = {}; + var to = {}; var i = 0; var key; var animObj; @@ -727,7 +727,7 @@ var step; var specialEasing; var duration; - if(hasOptions) { + if (hasOptions) { easing = options.easing; start = options.start; progress = options.progress; @@ -738,39 +738,39 @@ } else duration = options; - specialEasing = specialEasing || { }; + specialEasing = specialEasing || {}; duration = duration || 400; easing = easing || 'swing'; guaranteedNext = guaranteedNext || false; - for(; i < _animations[LEXICON.l]; i++) { - if(_animations[i].el === el) { + for (; i < _animations[LEXICON.l]; i++) { + if (_animations[i].el === el) { animObj = _animations[i]; break; } } - if(!animObj) { + if (!animObj) { animObj = { - el : el, - q : [] + el: el, + q: [] }; _animations.push(animObj); } for (key in props) { - if(key === _strScrollLeft || key === _strScrollTop) + if (key === _strScrollLeft || key === _strScrollTop) from[key] = el[key]; else from[key] = FakejQuery(el).css(key); } for (key in from) { - if(from[key] !== props[key] && props[key] !== undefined) + if (from[key] !== props[key] && props[key] !== undefined) to[key] = props[key]; } - if(!isEmptyObject(to)) { + if (!isEmptyObject(to)) { var timeNow; var end; var percent; @@ -782,56 +782,56 @@ var elapsed; var qPos = guaranteedNext ? 0 : inArray(qObj, animObj.q); var qObj = { - props : to, - duration : hasOptions ? options : duration, - easing : easing, - complete : complete + props: to, + duration: hasOptions ? options : duration, + easing: easing, + complete: complete }; if (qPos === -1) { qPos = animObj.q[LEXICON.l]; animObj.q.push(qObj); } - if(qPos === 0) { - if(duration > 0) { + if (qPos === 0) { + if (duration > 0) { timeStart = COMPATIBILITY.now(); - frame = function() { + frame = function () { timeNow = COMPATIBILITY.now(); elapsed = (timeNow - timeStart); end = qObj.stop || elapsed >= duration; percent = 1 - ((MATH.max(0, timeStart + duration - timeNow) / duration) || 0); - for(key in to) { + for (key in to) { fromVal = parseFloat(from[key]); toVal = parseFloat(to[key]); easedVal = (toVal - fromVal) * EASING[specialEasing[key] || easing](percent, percent * duration, 0, 1, duration) + fromVal; setAnimationValue(el, key, easedVal); - if(isFunction(step)) { + if (isFunction(step)) { step(easedVal, { - elem : el, - prop : key, - start : fromVal, - now : easedVal, - end : toVal, - pos : percent, - options : { - easing : easing, - speacialEasing : specialEasing, - duration : duration, - complete : complete, - step : step + elem: el, + prop: key, + start: fromVal, + now: easedVal, + end: toVal, + pos: percent, + options: { + easing: easing, + speacialEasing: specialEasing, + duration: duration, + complete: complete, + step: step }, - startTime : timeStart + startTime: timeStart }); } } - if(isFunction(progress)) - progress({ }, percent, MATH.max(0, duration - elapsed)); + if (isFunction(progress)) + progress({}, percent, MATH.max(0, duration - elapsed)); if (end) { startNextAnimationInQ(animObj); - if(isFunction(complete)) + if (isFunction(complete)) complete(); } else @@ -840,13 +840,13 @@ qObj.frame = COMPATIBILITY.rAF()(frame); } else { - for(key in to) + for (key in to) setAnimationValue(el, key, to[key]); startNextAnimationInQ(animObj); } } } - else if(guaranteedNext) + else if (guaranteedNext) startNextAnimationInQ(animObj); } @@ -855,21 +855,21 @@ var qObj; var key; var i = 0; - for(; i < _animations[LEXICON.l]; i++) { + for (; i < _animations[LEXICON.l]; i++) { animObj = _animations[i]; - if(animObj.el === el) { - if(animObj.q[LEXICON.l] > 0) { + if (animObj.el === el) { + if (animObj.q[LEXICON.l] > 0) { qObj = animObj.q[0]; qObj.stop = true; COMPATIBILITY.cAF()(qObj.frame); animObj.q.splice(0, 1); - if(jumpToEnd) - for(key in qObj.props) + if (jumpToEnd) + for (key in qObj.props) setAnimationValue(el, key, qObj.props[key]); - if(clearQ) - animObj.q = [ ]; + if (clearQ) + animObj.q = []; else startNextAnimationInQ(animObj, false); } @@ -877,13 +877,13 @@ } } } - + function elementIsVisible(el) { return !!(el[LEXICON.oW] || el[LEXICON.oH] || el.getClientRects()[LEXICON.l]); } function FakejQuery(selector) { - if(arguments[LEXICON.l] === 0) + if (arguments[LEXICON.l] === 0) return this; var base = new FakejQuery(); @@ -892,9 +892,9 @@ var elms; var el; - if(_type(selector) == TYPES.s) { - elements = [ ]; - if(selector.charAt(0) === '<') { + if (_type(selector) == TYPES.s) { + elements = []; + if (selector.charAt(0) === '<') { el = document.createElement('div'); el.innerHTML = selector; elms = el.children; @@ -903,15 +903,15 @@ elms = document.querySelectorAll(selector); } - for(; i < elms[LEXICON.l]; i++) + for (; i < elms[LEXICON.l]; i++) elements.push(elms[i]); } - if(elements) { - if(_type(elements) != TYPES.s && (!isArrayLike(elements) || elements === window || elements === elements.self)) - elements = [ elements ]; + if (elements) { + if (_type(elements) != TYPES.s && (!isArrayLike(elements) || elements === window || elements === elements.self)) + elements = [elements]; - for(i = 0; i < elements[LEXICON.l]; i++) + for (i = 0; i < elements[LEXICON.l]; i++) base[i] = elements[i]; base[LEXICON.l] = elements[LEXICON.l]; @@ -924,20 +924,20 @@ //EVENTS: - on : function(eventName, handler) { + on: function (eventName, handler) { eventName = (eventName || _strEmpty).match(_rnothtmlwhite) || [_strEmpty]; var eventNameLength = eventName[LEXICON.l]; var i = 0; var el; - return this.each(function() { + return this.each(function () { el = this; try { if (el.addEventListener) { for (; i < eventNameLength; i++) el.addEventListener(eventName[i], handler); } - else if(el.detachEvent) { + else if (el.detachEvent) { for (; i < eventNameLength; i++) el.attachEvent('on' + eventName[i], handler); } @@ -945,20 +945,20 @@ }); }, - off : function(eventName, handler) { + off: function (eventName, handler) { eventName = (eventName || _strEmpty).match(_rnothtmlwhite) || [_strEmpty]; var eventNameLength = eventName[LEXICON.l]; var i = 0; var el; - return this.each(function() { + return this.each(function () { el = this; try { if (el.removeEventListener) { for (; i < eventNameLength; i++) el.removeEventListener(eventName[i], handler); } - else if(el.detachEvent) { + else if (el.detachEvent) { for (; i < eventNameLength; i++) el.detachEvent('on' + eventName[i], handler); } @@ -966,12 +966,12 @@ }); }, - one : function (eventName, handler) { + one: function (eventName, handler) { eventName = (eventName || _strEmpty).match(_rnothtmlwhite) || [_strEmpty]; - return this.each(function() { + return this.each(function () { var el = FakejQuery(this); - FakejQuery.each(eventName, function(i, oneEventName) { - var oneHandler = function(e) { + FakejQuery.each(eventName, function (i, oneEventName) { + var oneHandler = function (e) { handler.call(this, e); el.off(oneEventName, oneHandler); }; @@ -980,10 +980,10 @@ }); }, - trigger : function(eventName) { + trigger: function (eventName) { var el; var event; - return this.each(function() { + return this.each(function () { el = this; if (document.createEvent) { event = document.createEvent('HTMLEvents'); @@ -998,44 +998,44 @@ //DOM NODE INSERTING / REMOVING: - append : function(child) { - return this.each(function() { insertAdjacentElement(this, 'beforeend', child); }); + append: function (child) { + return this.each(function () { insertAdjacentElement(this, 'beforeend', child); }); }, - prepend : function(child) { - return this.each(function() { insertAdjacentElement(this, 'afterbegin', child); }); + prepend: function (child) { + return this.each(function () { insertAdjacentElement(this, 'afterbegin', child); }); }, - before : function(child) { - return this.each(function() { insertAdjacentElement(this, 'beforebegin', child); }); + before: function (child) { + return this.each(function () { insertAdjacentElement(this, 'beforebegin', child); }); }, - after : function(child) { - return this.each(function() { insertAdjacentElement(this, 'afterend', child); }); + after: function (child) { + return this.each(function () { insertAdjacentElement(this, 'afterend', child); }); }, - remove : function() { - return this.each(function() { + remove: function () { + return this.each(function () { var el = this; var parentNode = el.parentNode; - if(parentNode != null) + if (parentNode != null) parentNode.removeChild(el); }); }, - unwrap : function() { - var parents = [ ]; + unwrap: function () { + var parents = []; var i; var el; var parent; - this.each(function() { + this.each(function () { parent = this.parentNode; - if(inArray(parent, parents) === - 1) + if (inArray(parent, parents) === - 1) parents.push(parent); }); - for(i = 0; i < parents[LEXICON.l]; i++) { + for (i = 0; i < parents[LEXICON.l]; i++) { el = parents[i]; parent = el.parentNode; while (el.firstChild) @@ -1046,14 +1046,14 @@ return this; }, - wrapAll : function(wrapperHTML) { + wrapAll: function (wrapperHTML) { var i; var nodes = this; var wrapper = FakejQuery(wrapperHTML)[0]; var deepest = wrapper; var parent = nodes[0].parentNode; var previousSibling = nodes[0].previousSibling; - while(deepest.childNodes[LEXICON.l] > 0) + while (deepest.childNodes[LEXICON.l] > 0) deepest = deepest.childNodes[0]; for (i = 0; nodes[LEXICON.l] - i; deepest.firstChild === nodes[0] && i++) @@ -1065,8 +1065,8 @@ return this; }, - wrapInner : function(wrapperHTML) { - return this.each(function() { + wrapInner: function (wrapperHTML) { + return this.each(function () { var el = FakejQuery(this); var contents = el.contents(); @@ -1077,20 +1077,20 @@ }); }, - wrap : function(wrapperHTML) { - return this.each(function() { FakejQuery(this).wrapAll(wrapperHTML); }); + wrap: function (wrapperHTML) { + return this.each(function () { FakejQuery(this).wrapAll(wrapperHTML); }); }, //DOM NODE MANIPULATION / INFORMATION: - css : function(styles, val) { + css: function (styles, val) { var el; var key; var cptStyle; var getCptStyle = window.getComputedStyle; - if(_type(styles) == TYPES.s) { - if(val === undefined) { + if (_type(styles) == TYPES.s) { + if (val === undefined) { el = this[0]; cptStyle = getCptStyle ? getCptStyle(el, null) : el.currentStyle[styles]; @@ -1098,27 +1098,27 @@ return getCptStyle ? cptStyle != null ? cptStyle.getPropertyValue(styles) : el[LEXICON.s][styles] : cptStyle; } else { - return this.each(function() { + return this.each(function () { setCSSVal(this, styles, val); }); } } else { - return this.each(function() { - for(key in styles) + return this.each(function () { + for (key in styles) setCSSVal(this, key, styles[key]); }); } }, - hasClass : function(className) { + hasClass: function (className) { var elem, i = 0; var classNamePrepared = _strSpace + className + _strSpace; var classList; - while ((elem = this[ i++ ])) { + while ((elem = this[i++])) { classList = elem.classList; - if(classList && classList.contains(className)) + if (classList && classList.contains(className)) return true; else if (elem.nodeType === 1 && (_strSpace + stripAndCollapse(elem.className + _strEmpty) + _strSpace).indexOf(classNamePrepared) > -1) return true; @@ -1127,7 +1127,7 @@ return false; }, - addClass : function(className) { + addClass: function (className) { var classes; var elem; var cur; @@ -1140,14 +1140,14 @@ var v = 0; if (className) { - classes = className.match( _rnothtmlwhite ) || []; + classes = className.match(_rnothtmlwhite) || []; while ((elem = this[i++])) { elmClassList = elem.classList; - if(supportClassList === undefined) + if (supportClassList === undefined) supportClassList = elmClassList !== undefined; - if(supportClassList) { + if (supportClassList) { while ((clazz = classes[v++])) elmClassList.add(clazz); } @@ -1171,7 +1171,7 @@ return this; }, - removeClass : function(className) { + removeClass: function (className) { var classes; var elem; var cur; @@ -1188,10 +1188,10 @@ while ((elem = this[i++])) { elmClassList = elem.classList; - if(supportClassList === undefined) + if (supportClassList === undefined) supportClassList = elmClassList !== undefined; - if(supportClassList) { + if (supportClassList) { while ((clazz = classes[v++])) elmClassList.remove(clazz); } @@ -1215,30 +1215,30 @@ return this; }, - hide : function() { - return this.each(function() { this[LEXICON.s].display = 'none'; }); + hide: function () { + return this.each(function () { this[LEXICON.s].display = 'none'; }); }, - show : function() { - return this.each(function() { this[LEXICON.s].display = 'block'; }); + show: function () { + return this.each(function () { this[LEXICON.s].display = 'block'; }); }, - attr : function(attrName, value) { + attr: function (attrName, value) { var i = 0; var el; while (el = this[i++]) { - if(value === undefined) + if (value === undefined) return el.getAttribute(attrName); el.setAttribute(attrName, value); } return this; }, - removeAttr : function(attrName) { - return this.each(function() { this.removeAttribute(attrName); }); + removeAttr: function (attrName) { + return this.each(function () { this.removeAttribute(attrName); }); }, - offset : function() { + offset: function () { var el = this[0]; var rect = el[LEXICON.bCR](); var scrollLeft = window.pageXOffset || document.documentElement[_strScrollLeft]; @@ -1249,7 +1249,7 @@ }; }, - position : function() { + position: function () { var el = this[0]; return { top: el.offsetTop, @@ -1257,31 +1257,31 @@ }; }, - scrollLeft : function(value) { + scrollLeft: function (value) { var i = 0; var el; while (el = this[i++]) { - if(value === undefined) + if (value === undefined) return el[_strScrollLeft]; el[_strScrollLeft] = value; } return this; }, - scrollTop : function(value) { + scrollTop: function (value) { var i = 0; var el; while (el = this[i++]) { - if(value === undefined) + if (value === undefined) return el[_strScrollTop]; el[_strScrollTop] = value; } return this; }, - val : function(value) { + val: function (value) { var el = this[0]; - if(!value) + if (!value) return el.value; el.value = value; return this; @@ -1290,42 +1290,42 @@ //DOM TRAVERSAL / FILTERING: - first : function() { + first: function () { return this.eq(0); }, - last : function() { + last: function () { return this.eq(-1); }, - eq : function(index) { + eq: function (index) { return FakejQuery(this[index >= 0 ? index : this[LEXICON.l] + index]); }, - find : function(selector) { - var children = [ ]; + find: function (selector) { + var children = []; var i; - this.each(function() { + this.each(function () { var el = this; var ch = el.querySelectorAll(selector); - for(i = 0; i < ch[LEXICON.l]; i++) + for (i = 0; i < ch[LEXICON.l]; i++) children.push(ch[i]); }); return FakejQuery(children); }, - children : function(selector) { - var children = [ ]; + children: function (selector) { + var children = []; var el; var ch; var i; - this.each(function() { + this.each(function () { ch = this.children; - for(i = 0; i < ch[LEXICON.l]; i++) { + for (i = 0; i < ch[LEXICON.l]; i++) { el = ch[i]; - if(selector) { - if((el.matches && el.matches(selector)) || matches(el, selector)) + if (selector) { + if ((el.matches && el.matches(selector)) || matches(el, selector)) children.push(el); } else @@ -1335,75 +1335,75 @@ return FakejQuery(children); }, - parent : function(selector) { - var parents = [ ]; + parent: function (selector) { + var parents = []; var parent; - this.each(function() { + this.each(function () { parent = this.parentNode; - if(selector ? FakejQuery(parent).is(selector) : true) + if (selector ? FakejQuery(parent).is(selector) : true) parents.push(parent); }); return FakejQuery(parents); }, - is : function(selector) { - + is: function (selector) { + var el; var i; - for(i = 0; i < this[LEXICON.l]; i++) { + for (i = 0; i < this[LEXICON.l]; i++) { el = this[i]; - if(selector === ':visible') + if (selector === ':visible') return elementIsVisible(el); - if(selector === ':hidden') + if (selector === ':hidden') return !elementIsVisible(el); - if((el.matches && el.matches(selector)) || matches(el, selector)) + if ((el.matches && el.matches(selector)) || matches(el, selector)) return true; } return false; }, - contents : function() { - var contents = [ ]; + contents: function () { + var contents = []; var childs; var i; - this.each(function() { + this.each(function () { childs = this.childNodes; - for(i = 0; i < childs[LEXICON.l]; i++) + for (i = 0; i < childs[LEXICON.l]; i++) contents.push(childs[i]); }); return FakejQuery(contents); }, - each : function(callback) { + each: function (callback) { return each(this, callback); }, //ANIMATION: - animate : function(props, duration, easing, complete) { - return this.each(function() { animate(this, props, duration, easing, complete); }); + animate: function (props, duration, easing, complete) { + return this.each(function () { animate(this, props, duration, easing, complete); }); }, - stop : function(clearQ, jump) { - return this.each(function() { stop(this, clearQ, jump); }); + stop: function (clearQ, jump) { + return this.each(function () { stop(this, clearQ, jump); }); } }; extend(FakejQuery, { - extend : extend, - inArray : inArray, - isEmptyObject : isEmptyObject, - isPlainObject : isPlainObject, - each : each + extend: extend, + inArray: inArray, + isEmptyObject: isEmptyObject, + isPlainObject: isPlainObject, + each: each }); return FakejQuery; })(); - var INSTANCES = (function() { - var _targets = [ ]; + var INSTANCES = (function () { + var _targets = []; var _instancePropertyString = '__overlayScrollbars__'; /** @@ -1418,12 +1418,12 @@ */ return function (target, instance) { var argLen = arguments[LEXICON.l]; - if(argLen < 1) { + if (argLen < 1) { //return all targets return _targets; } else { - if(instance) { + if (instance) { //register instance target[_instancePropertyString] = instance; _targets.push(target); @@ -1431,7 +1431,7 @@ else { var index = COMPATIBILITY.inA(target, _targets); if (index > -1) { - if(argLen > 1) { + if (argLen > 1) { //unregister instance delete target[_instancePropertyString]; _targets.splice(index, 1); @@ -1445,12 +1445,12 @@ } } })(); - var PLUGIN = (function() { + var PLUGIN = (function () { var _plugin; var _pluginsGlobals; var _pluginsAutoUpdateLoop; - var _pluginsExtensions = [ ]; - var _pluginsOptions = (function() { + var _pluginsExtensions = []; + var _pluginsOptions = (function () { var type = COMPATIBILITY.type; var possibleTemplateTypes = [ TYPES.b, //boolean @@ -1468,7 +1468,7 @@ var booleanNullAllowedValues = [TYPES.z, TYPES.b]; var booleanTrueTemplate = [true, TYPES.b]; var booleanFalseTemplate = [false, TYPES.b]; - var callbackTemplate = [null, [TYPES.z, TYPES.f]]; + var callbackTemplate = [null, [TYPES.z, TYPES.f]]; var inheritedAttrsTemplate = [['style', 'class'], [TYPES.s, TYPES.a, TYPES.z]]; var resizeAllowedValues = 'n:none b:both h:horizontal v:vertical'; var overflowBehaviorAllowedValues = 'v-h:visible-hidden v-s:visible-scroll s:scroll h:hidden'; @@ -1503,7 +1503,7 @@ textarea: { dynWidth: booleanFalseTemplate, //true || false dynHeight: booleanFalseTemplate, //true || false - inheritedAttrs : inheritedAttrsTemplate //string || array || null + inheritedAttrs: inheritedAttrsTemplate //string || array || null }, callbacks: { onInitialized: callbackTemplate, //null || function @@ -1520,30 +1520,30 @@ onUpdated: callbackTemplate //null || function } }; - var convert = function(template) { - var recursive = function(obj) { + var convert = function (template) { + var recursive = function (obj) { var key; var val; var valType; - for(key in obj) { - if(!obj[LEXICON.hOP](key)) + for (key in obj) { + if (!obj[LEXICON.hOP](key)) continue; val = obj[key]; valType = type(val); - if(valType == TYPES.a) + if (valType == TYPES.a) obj[key] = val[template ? 1 : 0]; - else if(valType == TYPES.o) + else if (valType == TYPES.o) obj[key] = recursive(val); } return obj; }; - return recursive(FRAMEWORK.extend(true, { }, optionsDefaultsAndTemplate)); + return recursive(FRAMEWORK.extend(true, {}, optionsDefaultsAndTemplate)); }; return { - _defaults : convert(), + _defaults: convert(), - _template : convert(true), + _template: convert(true), /** * Validates the passed object by the passed template. @@ -1553,13 +1553,13 @@ * @param diffObj If a object is passed then only valid differences to this object will be returned. * @returns {{}} A object which contains two objects called "default" and "prepared" which contains only the valid properties of the passed original object and discards not different values compared to the passed diffObj. */ - _validate : function (obj, template, writeErrors, diffObj) { - var validatedOptions = { }; - var validatedOptionsPrepared = { }; - var objectCopy = FRAMEWORK.extend(true, { }, obj); + _validate: function (obj, template, writeErrors, diffObj) { + var validatedOptions = {}; + var validatedOptionsPrepared = {}; + var objectCopy = FRAMEWORK.extend(true, {}, obj); var inArray = FRAMEWORK.inArray; var isEmptyObj = FRAMEWORK.isEmptyObject; - var checkObjectProps = function(data, template, diffData, validatedOptions, validatedOptionsPrepared, prevPropName) { + var checkObjectProps = function (data, template, diffData, validatedOptions, validatedOptionsPrepared, prevPropName) { for (var prop in template) { if (template[LEXICON.hOP](prop) && data[LEXICON.hOP](prop)) { var isValid = false; @@ -1567,14 +1567,14 @@ var templateValue = template[prop]; var templateValueType = type(templateValue); var templateIsComplex = templateValueType == TYPES.o; - var templateTypes = type(templateValue) != TYPES.a ? [ templateValue ] : templateValue; + var templateTypes = type(templateValue) != TYPES.a ? [templateValue] : templateValue; var dataDiffValue = diffData[prop]; var dataValue = data[prop]; var dataValueType = type(dataValue); var propPrefix = prevPropName ? prevPropName + '.' : ''; var error = "The option \"" + propPrefix + prop + "\" wasn't set, because"; - var errorPossibleTypes = [ ]; - var errorRestrictedStrings = [ ]; + var errorPossibleTypes = []; + var errorRestrictedStrings = []; var restrictedStringValuesSplit; var restrictedStringValuesPossibilitiesSplit; var isRestrictedValue; @@ -1584,66 +1584,66 @@ var v; var j; - dataDiffValue = dataDiffValue === undefined ? { } : dataDiffValue; - + dataDiffValue = dataDiffValue === undefined ? {} : dataDiffValue; + //if the template has a object as value, it means that the options are complex (verschachtelt) - if(templateIsComplex && dataValueType == TYPES.o) { - validatedOptions[prop] = { }; - validatedOptionsPrepared[prop] = { }; + if (templateIsComplex && dataValueType == TYPES.o) { + validatedOptions[prop] = {}; + validatedOptionsPrepared[prop] = {}; checkObjectProps(dataValue, templateValue, dataDiffValue, validatedOptions[prop], validatedOptionsPrepared[prop], propPrefix + prop); - FRAMEWORK.each([ data, validatedOptions, validatedOptionsPrepared ], function(index, value) { - if(isEmptyObj(value[prop])) { + FRAMEWORK.each([data, validatedOptions, validatedOptionsPrepared], function (index, value) { + if (isEmptyObj(value[prop])) { delete value[prop]; } }); } - else if(!templateIsComplex) { - for(i = 0; i < templateTypes[LEXICON.l]; i++) { + else if (!templateIsComplex) { + for (i = 0; i < templateTypes[LEXICON.l]; i++) { currType = templateTypes[i]; templateValueType = type(currType); //if currtype is string and starts with restrictedStringPrefix and end with restrictedStringSuffix isRestrictedValue = templateValueType == TYPES.s && inArray(currType, possibleTemplateTypes) === -1; - if(isRestrictedValue) { + if (isRestrictedValue) { errorPossibleTypes.push(TYPES.s); //split it into a array which contains all possible values for example: ["y:yes", "n:no", "m:maybe"] restrictedStringValuesSplit = currType.split(restrictedStringsSplit); errorRestrictedStrings = errorRestrictedStrings.concat(restrictedStringValuesSplit); - for(v = 0; v < restrictedStringValuesSplit[LEXICON.l]; v++) { + for (v = 0; v < restrictedStringValuesSplit[LEXICON.l]; v++) { //split the possible values into their possibiliteis for example: ["y", "yes"] -> the first is always the mainPossibility restrictedStringValuesPossibilitiesSplit = restrictedStringValuesSplit[v].split(restrictedStringsPossibilitiesSplit); mainPossibility = restrictedStringValuesPossibilitiesSplit[0]; - for(j = 0; j < restrictedStringValuesPossibilitiesSplit[LEXICON.l]; j++) { + for (j = 0; j < restrictedStringValuesPossibilitiesSplit[LEXICON.l]; j++) { //if any possibility matches with the dataValue, its valid - if(dataValue === restrictedStringValuesPossibilitiesSplit[j]) { + if (dataValue === restrictedStringValuesPossibilitiesSplit[j]) { isValid = true; break; } } - if(isValid) + if (isValid) break; } } else { errorPossibleTypes.push(currType); - if(dataValueType === currType) { + if (dataValueType === currType) { isValid = true; break; } } } - if(isValid) { + if (isValid) { isDiff = dataValue !== dataDiffValue; - - if(isDiff) + + if (isDiff) validatedOptions[prop] = dataValue; - - if(isRestrictedValue ? inArray(dataDiffValue, restrictedStringValuesPossibilitiesSplit) < 0 : isDiff) + + if (isRestrictedValue ? inArray(dataDiffValue, restrictedStringValuesPossibilitiesSplit) < 0 : isDiff) validatedOptionsPrepared[prop] = isRestrictedValue ? mainPossibility : dataValue; } - else if(writeErrors) { + else if (writeErrors) { console.warn(error + " it doesn't accept the type [ " + dataValueType.toUpperCase() + " ] with the value of \"" + dataValue + "\".\r\n" + "Accepted types are: [ " + errorPossibleTypes.join(', ').toUpperCase() + " ]." + (errorRestrictedStrings[length] > 0 ? "\r\nValid strings are: [ " + errorRestrictedStrings.join(', ').split(restrictedStringsPossibilitiesSplit).join(', ') + " ]." : '')); @@ -1653,7 +1653,7 @@ } } }; - checkObjectProps(objectCopy, template, diffObj || { }, validatedOptions, validatedOptionsPrepared); + checkObjectProps(objectCopy, template, diffObj || {}, validatedOptions, validatedOptionsPrepared); //add values which aren't specified in the template to the finished validated object to prevent them from being discarded /* @@ -1662,13 +1662,13 @@ FRAMEWORK.extend(true, validatedOptionsPrepared, objectCopy); } */ - - if(!isEmptyObj(objectCopy) && writeErrors) + + if (!isEmptyObj(objectCopy) && writeErrors) console.warn('The following options are discarded due to invalidity:\r\n' + window.JSON.stringify(objectCopy, null, 2)); return { - _default : validatedOptions, - _prepared : validatedOptionsPrepared + _default: validatedOptions, + _prepared: validatedOptionsPrepared }; } } @@ -1678,9 +1678,9 @@ * Initializes the object which contains global information about the plugin and each instance of it. */ function initOverlayScrollbarsStatics() { - if(!_pluginsGlobals) + if (!_pluginsGlobals) _pluginsGlobals = new OverlayScrollbarsGlobals(_pluginsOptions._defaults); - if(!_pluginsAutoUpdateLoop) + if (!_pluginsAutoUpdateLoop) _pluginsAutoUpdateLoop = new OverlayScrollbarsAutoUpdateLoop(_pluginsGlobals); } @@ -1707,7 +1707,7 @@ x: nativeScrollbarSize.x === 0, y: nativeScrollbarSize.y === 0 }; - var msie = (function() { + var msie = (function () { var ua = window.navigator.userAgent; var strIndexOf = 'indexOf'; var strSubString = 'substring'; @@ -1735,34 +1735,34 @@ })(); FRAMEWORK.extend(_base, { - defaultOptions : defaultOptions, - msie : msie, - autoUpdateLoop : false, - autoUpdateRecommended : !COMPATIBILITY.mO(), - nativeScrollbarSize : nativeScrollbarSize, - nativeScrollbarIsOverlaid : nativeScrollbarIsOverlaid, - nativeScrollbarStyling : (function() { + defaultOptions: defaultOptions, + msie: msie, + autoUpdateLoop: false, + autoUpdateRecommended: !COMPATIBILITY.mO(), + nativeScrollbarSize: nativeScrollbarSize, + nativeScrollbarIsOverlaid: nativeScrollbarIsOverlaid, + nativeScrollbarStyling: (function () { var result = false; scrollbarDummyElement.addClass('os-viewport-native-scrollbars-invisible'); try { result = (scrollbarDummyElement.css('scrollbar-width') === 'none' && (msie > 9 || !msie)) || window.getComputedStyle(scrollbarDummyElement0, '::-webkit-scrollbar').getPropertyValue('display') === 'none'; } catch (ex) { } - + //fix opera bug: scrollbar styles will only appear if overflow value is scroll or auto during the activation of the style. //and set overflow to scroll //scrollbarDummyElement.css(strOverflow, strHidden).hide().css(strOverflow, strScroll).show(); //return (scrollbarDummyElement0[LEXICON.oH] - scrollbarDummyElement0[LEXICON.cH]) === 0 && (scrollbarDummyElement0[LEXICON.oW] - scrollbarDummyElement0[LEXICON.cW]) === 0; - + return result; })(), - overlayScrollbarDummySize : { x: 30, y: 30 }, - cssCalc : (function() { + overlayScrollbarDummySize: { x: 30, y: 30 }, + cssCalc: (function () { var dummyStyle = document.createElement('div')[LEXICON.s]; var strCalc = 'calc'; var i = -1; var prop; - for(; i < VENDORS._cssPrefixes[LEXICON.l]; i++) { + for (; i < VENDORS._cssPrefixes[LEXICON.l]; i++) { prop = i < 0 ? strCalc : VENDORS._cssPrefixes[i] + strCalc; dummyStyle.cssText = 'width:' + prop + '(1px);'; if (dummyStyle[LEXICON.l]) @@ -1770,22 +1770,22 @@ } return null; })(), - restrictedMeasuring : (function() { + restrictedMeasuring: (function () { //https://bugzilla.mozilla.org/show_bug.cgi?id=1439305 scrollbarDummyElement.css(strOverflow, strHidden); var scrollSize = { - w : scrollbarDummyElement0[LEXICON.sW], - h : scrollbarDummyElement0[LEXICON.sH] + w: scrollbarDummyElement0[LEXICON.sW], + h: scrollbarDummyElement0[LEXICON.sH] }; scrollbarDummyElement.css(strOverflow, 'visible'); var scrollSize2 = { - w : scrollbarDummyElement0[LEXICON.sW], - h : scrollbarDummyElement0[LEXICON.sH] + w: scrollbarDummyElement0[LEXICON.sW], + h: scrollbarDummyElement0[LEXICON.sH] }; return (scrollSize.w - scrollSize2.w) !== 0 || (scrollSize.h - scrollSize2.h) !== 0; })(), - rtlScrollBehavior : (function() { - scrollbarDummyElement.css({ 'overflow-y' : strHidden, 'overflow-x' : strScroll, 'direction' : 'rtl' }).scrollLeft(0); + rtlScrollBehavior: (function () { + scrollbarDummyElement.css({ 'overflow-y': strHidden, 'overflow-x': strScroll, 'direction': 'rtl' }).scrollLeft(0); var dummyContainerOffset = scrollbarDummyElement.offset(); var dummyContainerChildOffset = dummyContainerChild.offset(); scrollbarDummyElement.scrollLeft(999); @@ -1795,44 +1795,44 @@ //'i' means 'invert' (i === true means that the axis must be inverted to be correct) //true = on the left side //false = on the right side - i : dummyContainerOffset.left === dummyContainerChildOffset.left, + i: dummyContainerOffset.left === dummyContainerChildOffset.left, //negative = determines if the maximum scroll is positive or negative //'n' means 'negate' (n === true means that the axis must be negated to be correct) //true = negative //false = positive - n : dummyContainerChildOffset.left - dummyContainerScrollOffsetAfterScroll.left === 0 + n: dummyContainerChildOffset.left - dummyContainerScrollOffsetAfterScroll.left === 0 }; })(), - supportTransform : VENDORS._cssProperty('transform') !== undefined, - supportTransition : VENDORS._cssProperty('transition') !== undefined, - supportPassiveEvents : (function() { + supportTransform: VENDORS._cssProperty('transform') !== undefined, + supportTransition: VENDORS._cssProperty('transition') !== undefined, + supportPassiveEvents: (function () { var supportsPassive = false; try { - window.addEventListener('test', null, Object.defineProperty({ }, 'passive', { - get: function() { + window.addEventListener('test', null, Object.defineProperty({}, 'passive', { + get: function () { supportsPassive = true; } })); } catch (e) { } return supportsPassive; })(), - supportResizeObserver : !!COMPATIBILITY.rO(), - supportMutationObserver : !!COMPATIBILITY.mO() + supportResizeObserver: !!COMPATIBILITY.rO(), + supportMutationObserver: !!COMPATIBILITY.mO() }); scrollbarDummyElement.removeAttr(LEXICON.s).remove(); //Catch zoom event: (function () { - if(nativeScrollbarIsOverlaid.x && nativeScrollbarIsOverlaid.y) + if (nativeScrollbarIsOverlaid.x && nativeScrollbarIsOverlaid.y) return; var abs = MATH.abs; var windowWidth = COMPATIBILITY.wW(); var windowHeight = COMPATIBILITY.wH(); var windowDpr = getWindowDPR(); - var onResize = function() { - if(INSTANCES().length > 0) { + var onResize = function () { + if (INSTANCES().length > 0) { var newW = COMPATIBILITY.wW(); var newH = COMPATIBILITY.wH(); var deltaW = newW - windowWidth; @@ -1860,9 +1860,9 @@ bodyElement.append(scrollbarDummyElement); newScrollbarSize = _base.nativeScrollbarSize = calcNativeScrollbarSize(scrollbarDummyElement[0]); scrollbarDummyElement.remove(); - if(oldScrollbarSize.x !== newScrollbarSize.x || oldScrollbarSize.y !== newScrollbarSize.y) { + if (oldScrollbarSize.x !== newScrollbarSize.x || oldScrollbarSize.y !== newScrollbarSize.y) { FRAMEWORK.each(INSTANCES(), function () { - if(INSTANCES(this)) + if (INSTANCES(this)) INSTANCES(this).update('zoom'); }); } @@ -1908,20 +1908,20 @@ var _strAutoUpdate = 'autoUpdate'; var _strAutoUpdateInterval = _strAutoUpdate + 'Interval'; var _strLength = LEXICON.l; - var _loopingInstances = [ ]; - var _loopingInstancesIntervalCache = [ ]; + var _loopingInstances = []; + var _loopingInstancesIntervalCache = []; var _loopIsActive = false; var _loopIntervalDefault = 33; var _loopInterval = _loopIntervalDefault; var _loopTimeOld = _getNow(); var _loopID; - + /** * The auto update loop which will run every 50 milliseconds or less if the update interval of a instance is lower than 50 milliseconds. */ - var loop = function() { - if(_loopingInstances[_strLength] > 0 && _loopIsActive) { + var loop = function () { + if (_loopingInstances[_strLength] > 0 && _loopIsActive) { _loopID = COMPATIBILITY.rAF()(function () { loop(); }); @@ -1937,7 +1937,7 @@ if (timeDelta > _loopInterval) { _loopTimeOld = timeNew - (timeDelta % _loopInterval); lowestInterval = _loopIntervalDefault; - for(var i = 0; i < _loopingInstances[_strLength]; i++) { + for (var i = 0; i < _loopingInstances[_strLength]; i++) { instance = _loopingInstances[i]; if (instance !== undefined) { instanceOptions = instance.options(); @@ -1964,8 +1964,8 @@ * Add OverlayScrollbars instance to the auto update loop. Only successful if the instance isn't already added. * @param instance The instance which shall be updated in a loop automatically. */ - _base.add = function(instance) { - if(_inArray(instance, _loopingInstances) === -1) { + _base.add = function (instance) { + if (_inArray(instance, _loopingInstances) === -1) { _loopingInstances.push(instance); _loopingInstancesIntervalCache.push(_getNow()); if (_loopingInstances[_strLength] > 0 && !_loopIsActive) { @@ -1980,9 +1980,9 @@ * Remove OverlayScrollbars instance from the auto update loop. Only successful if the instance was added before. * @param instance The instance which shall be updated in a loop automatically. */ - _base.remove = function(instance) { + _base.remove = function (instance) { var index = _inArray(instance, _loopingInstances); - if(index > -1) { + if (index > -1) { //remove from loopingInstances list _loopingInstancesIntervalCache.splice(index, 1); _loopingInstances.splice(index, 1); @@ -1991,7 +1991,7 @@ if (_loopingInstances[_strLength] === 0 && _loopIsActive) { _loopIsActive = false; globals.autoUpdateLoop = _loopIsActive; - if(_loopID !== undefined) { + if (_loopID !== undefined) { COMPATIBILITY.cAF()(_loopID); _loopID = -1; } @@ -2015,17 +2015,17 @@ var type = COMPATIBILITY.type; var inArray = FRAMEWORK.inArray; var each = FRAMEWORK.each; - + //make correct instanceof var _base = new _plugin(); var _frameworkProto = FRAMEWORK[LEXICON.p]; - + //if passed element is no HTML element: skip and return - if(!isHTMLElement(pluginTargetElement)) + if (!isHTMLElement(pluginTargetElement)) return; - + //if passed element is already initialized: set passed options if there are any and return its instance - if(INSTANCES(pluginTargetElement)) { + if (INSTANCES(pluginTargetElement)) { var inst = INSTANCES(pluginTargetElement); inst.options(options); return inst; @@ -2066,11 +2066,11 @@ var _marginY; var _isRTL; var _sleeping; - var _contentBorderSize = { }; - var _scrollHorizontalInfo = { }; - var _scrollVerticalInfo = { }; - var _viewportSize = { }; - var _nativeScrollbarMinSize = { }; + var _contentBorderSize = {}; + var _scrollHorizontalInfo = {}; + var _scrollVerticalInfo = {}; + var _viewportSize = {}; + var _nativeScrollbarMinSize = {}; //naming: var _strMinusHidden = '-hidden'; @@ -2167,9 +2167,9 @@ _classNameScrollbarCornerResizeH, _classNameScrollbarCornerResizeV, _classNameDragging].join(_strSpace); - + //callbacks: - var _callbacksInitQeueue = [ ]; + var _callbacksInitQeueue = []; //options: var _defaultOptions; @@ -2177,15 +2177,15 @@ var _currentPreparedOptions; //extensions: - var _extensions = { }; + var _extensions = {}; var _extensionsPrivateMethods = 'added removed on contract'; //update var _lastUpdateTime; - var _swallowedUpdateHints = { }; + var _swallowedUpdateHints = {}; var _swallowedUpdateTimeout; var _swallowUpdateLag = 42; - var _imgs = [ ]; + var _imgs = []; //DOM elements: var _windowElement; @@ -2260,7 +2260,7 @@ var _bodyMinSizeCache; var _viewportScrollSizeCache; var _displayIsHiddenCache; - var _updateAutoCache = { }; + var _updateAutoCache = {}; //MutationObserver: var _mutationObserverHost; @@ -2272,7 +2272,7 @@ var _mutationObserverAttrsHost = [LEXICON.i, LEXICON.c, LEXICON.s, 'open']; //events: - var _destroyEvents = [ ]; + var _destroyEvents = []; //textarea: var _textareaHasFocus; @@ -2287,14 +2287,14 @@ var _scrollbarsAutoHideLeave; var _scrollbarsHandleHovered; var _scrollbarsHandlesDefineScrollPos; - + //resize var _resizeNone; var _resizeBoth; var _resizeHorizontal; var _resizeVertical; - - + + //==== Event Listener ====// /** @@ -2311,13 +2311,13 @@ var events = collected ? false : eventNames.split(_strSpace) var i = 0; - if(collected) { + if (collected) { for (; i < eventNames[LEXICON.l]; i++) setupResponsiveEventListener(element, eventNames[i], listener[i], remove); } else { for (; i < events[LEXICON.l]; i++) { - if(_supportPassiveEvents) + if (_supportPassiveEvents) element[0][method](events[i], listener, { passive: passive || false }); else element[onOff](events[i], listener); @@ -2339,7 +2339,7 @@ * @param onElementResizedCallback The callback which is fired every time the resize observer registers a size change or false / undefined if the resizeObserver shall be removed. */ function setupResizeObserver(targetElement, onElementResizedCallback) { - if(targetElement) { + if (targetElement) { var resizeObserver = COMPATIBILITY.rO(); var strAnimationStartEvent = 'animationstart mozAnimationStart webkitAnimationStart MSAnimationStart'; var strChildNodes = 'childNodes'; @@ -2349,7 +2349,7 @@ onElementResizedCallback(); }; //add resize observer: - if(onElementResizedCallback) { + if (onElementResizedCallback) { if (_supportResizeObserver) { var element = targetElement.append(generateDiv(_classNameResizeObserverElement + ' observed')).contents()[0]; var observer = element[_strResizeObserverProperty] = new resizeObserver(callback); @@ -2359,12 +2359,12 @@ if (_msieVersion > 9 || !_autoUpdateRecommended) { targetElement.prepend( generateDiv(_classNameResizeObserverElement, - generateDiv({ c : _classNameResizeObserverItemElement, dir : 'ltr' }, + generateDiv({ c: _classNameResizeObserverItemElement, dir: 'ltr' }, generateDiv(_classNameResizeObserverItemElement, generateDiv(_classNameResizeObserverItemFinalElement) ) + generateDiv(_classNameResizeObserverItemElement, - generateDiv({ c : _classNameResizeObserverItemFinalElement, style : 'width: 200%; height: 200%' }) + generateDiv({ c: _classNameResizeObserverItemFinalElement, style: 'width: 200%; height: 200%' }) ) ) ) @@ -2416,7 +2416,7 @@ COMPATIBILITY.cAF()(rAFId); rAFId = COMPATIBILITY.rAF()(onResized); } - else if(!event) + else if (!event) onResized(); reset(); @@ -2477,7 +2477,7 @@ } if (targetElement[0] === _sizeObserverElementNative) { - var directionChanged = function() { + var directionChanged = function () { var dir = _hostElement.css('direction'); var css = {}; var scrollLeftValue = 0; @@ -2502,12 +2502,12 @@ return result; }; directionChanged(); - addDestroyEventListener(targetElement, _strScroll, function(event) { + addDestroyEventListener(targetElement, _strScroll, function (event) { if (directionChanged()) update(); COMPATIBILITY.prvD(event); COMPATIBILITY.stpP(event); - return false; + return false; }); } } @@ -2516,7 +2516,7 @@ if (_supportResizeObserver) { var element = targetElement.contents()[0]; var resizeObserverObj = element[_strResizeObserverProperty]; - if(resizeObserverObj) { + if (resizeObserverObj) { resizeObserverObj.disconnect(); delete element[_strResizeObserverProperty]; } @@ -2584,10 +2584,10 @@ var sizeAuto; var action; - _mutationObserverHostCallback = function(mutations) { + _mutationObserverHostCallback = function (mutations) { var doUpdate = false; var mutation; - + if (_initialized && !_sleeping) { each(mutations, function () { mutation = this; @@ -2613,7 +2613,7 @@ _mutationObserverContentCallback = function (mutations) { var doUpdate = false; var mutation; - + if (_initialized && !_sleeping) { each(mutations, function () { mutation = this; @@ -2625,7 +2625,7 @@ now = COMPATIBILITY.now(); sizeAuto = (_heightAutoCache || _widthAutoCache); action = function () { - if(!_destroyed) { + if (!_destroyed) { contentLastUpdate = now; //if cols, rows or wrap attr was changed @@ -2689,8 +2689,8 @@ } } - - //==== Events of elements ====// + + //==== Events of elements ====// /** * This method gets called every time the host element gets resized. IMPORTANT: Padding changes are detected too!! @@ -2704,11 +2704,11 @@ w: _sizeObserverElementNative[LEXICON.sW], h: _sizeObserverElementNative[LEXICON.sH] }; - + changed = checkCache(hostSize, _hostElementSizeChangeDetectedCache); _hostElementSizeChangeDetectedCache = hostSize; if (changed) - update({ _hostSizeChanged : true }); + update({ _hostSizeChanged: true }); } } @@ -2755,25 +2755,25 @@ * A callback which will be called after a img element has downloaded its src asynchronous. */ function imgOnLoad() { - update({ _contentSizeChanged : true }); + update({ _contentSizeChanged: true }); } - /** - * Adds or removes mouse & touch events of the host element. (for handling auto-hiding of the scrollbars) - * @param destroy Indicates whether the events shall be added or removed. - */ + /** + * Adds or removes mouse & touch events of the host element. (for handling auto-hiding of the scrollbars) + * @param destroy Indicates whether the events shall be added or removed. + */ function setupHostMouseTouchEvents(destroy) { - setupResponsiveEventListener(_hostElement, - _strMouseTouchMoveEvent, - hostOnMouseMove, + setupResponsiveEventListener(_hostElement, + _strMouseTouchMoveEvent, + hostOnMouseMove, (_scrollbarsAutoHideMove ? destroy : true), true); - setupResponsiveEventListener(_hostElement, - [ _strMouseTouchEnter, _strMouseTouchLeave ], - [ hostOnMouseEnter, hostOnMouseLeave ], + setupResponsiveEventListener(_hostElement, + [_strMouseTouchEnter, _strMouseTouchLeave], + [hostOnMouseEnter, hostOnMouseLeave], (_scrollbarsAutoHideMove ? true : destroy), true); //if the plugin is initialized and the mouse is over the host element, make the scrollbars visible - if(!_initialized && !destroy) + if (!_initialized && !destroy) _hostElement.one('mouseover', hostOnMouseEnter); } @@ -2886,12 +2886,12 @@ function updateAutoContentSizeChanged() { if (_sleeping) return false; - + var contentMeasureElement = getContentMeasureElement(); var textareaValueLength = _isTextarea && _widthAutoCache && !_textareaAutoWrappingCache ? _targetElement.val().length : 0; var setCSS = !_mutationObserversConnected && _widthAutoCache && !_isTextarea; - var viewportScrollSize = { }; - var css = { }; + var viewportScrollSize = {}; + var css = {}; var float; var bodyMinSizeC; var changed; @@ -2900,10 +2900,10 @@ //fix for https://bugzilla.mozilla.org/show_bug.cgi?id=1439305, it only works with "clipAlways : true" //it can work with "clipAlways : false" too, but I had to set the overflow of the viewportElement to hidden every time before measuring - if(_restrictedMeasuring) { + if (_restrictedMeasuring) { viewportScrollSize = { - x : _viewportElementNative[LEXICON.sW], - y : _viewportElementNative[LEXICON.sH] + x: _viewportElementNative[LEXICON.sW], + y: _viewportElementNative[LEXICON.sH] } } if (setCSS) { @@ -2939,36 +2939,36 @@ function meaningfulAttrsChanged() { if (_sleeping || _mutationObserversConnected) return; - + var changed; var elem; var curr; var cache; var checks = [ { - _elem: _hostElement, - _props : _mutationObserverAttrsHost.concat(':visible') + _elem: _hostElement, + _props: _mutationObserverAttrsHost.concat(':visible') }, { - _elem: _isTextarea ? _targetElement : undefined, - _props : _mutationObserverAttrsTextarea + _elem: _isTextarea ? _targetElement : undefined, + _props: _mutationObserverAttrsTextarea } ]; - - each(checks, function(index, check) { + + each(checks, function (index, check) { elem = check._elem; - if(elem) { - each(check._props, function(index, prop) { + if (elem) { + each(check._props, function (index, prop) { curr = prop.charAt(0) === ':' ? elem.is(prop) : elem.attr(prop); cache = _updateAutoCache[prop]; - + changed = changed || checkCache(curr, cache); - + _updateAutoCache[prop] = curr; }); } }); - + return changed; } @@ -3048,7 +3048,7 @@ return sizeIsAffected; } - + //==== Update ====// /** @@ -3059,7 +3059,7 @@ var wrapAttrOff = !_textareaAutoWrappingCache; var minWidth = _viewportSize.w; var minHeight = _viewportSize.h; - var css = { }; + var css = {}; var doMeasure = _widthAutoCache || wrapAttrOff; var origWidth; var width; @@ -3123,20 +3123,20 @@ */ function update(updateHints) { clearTimeout(_swallowedUpdateTimeout); - updateHints = updateHints || { }; + updateHints = updateHints || {}; _swallowedUpdateHints._hostSizeChanged |= updateHints._hostSizeChanged; _swallowedUpdateHints._contentSizeChanged |= updateHints._contentSizeChanged; _swallowedUpdateHints._force |= updateHints._force; - + var now = COMPATIBILITY.now(); var hostSizeChanged = !!_swallowedUpdateHints._hostSizeChanged; var contentSizeChanged = !!_swallowedUpdateHints._contentSizeChanged; var force = !!_swallowedUpdateHints._force; - var changedOptions = updateHints._changedOptions; - var swallow = _swallowUpdateLag > 0 && _initialized && !_destroyed && !force && !changedOptions && (now - _lastUpdateTime) < _swallowUpdateLag && (!_heightAutoCache && !_widthAutoCache); + var changedOptions = updateHints._changedOptions; + var swallow = _swallowUpdateLag > 0 && _initialized && !_destroyed && !force && !changedOptions && (now - _lastUpdateTime) < _swallowUpdateLag && (!_heightAutoCache && !_widthAutoCache); var displayIsHidden; - if(swallow) + if (swallow) _swallowedUpdateTimeout = setTimeout(update, _swallowUpdateLag); //abort update due to: @@ -3148,8 +3148,8 @@ return; _lastUpdateTime = now; - _swallowedUpdateHints = { }; - + _swallowedUpdateHints = {}; + //if scrollbar styling is possible and native scrollbars aren't overlaid the scrollbar styling will be applied which hides the native scrollbars completely. if (_nativeScrollbarStyling && !(_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y)) { //native scrollbars are hidden, so change the values to zero @@ -3169,15 +3169,15 @@ x: (_nativeScrollbarSize.x + (_nativeScrollbarIsOverlaid.x ? 0 : 3)) * 3, y: (_nativeScrollbarSize.y + (_nativeScrollbarIsOverlaid.y ? 0 : 3)) * 3 }; - + //changedOptions = changedOptions || { }; //freezeResizeObserver(_sizeObserverElement, true); //freezeResizeObserver(_sizeAutoObserverElement, true); - + var checkCacheAutoForce = function () { - return checkCache.apply(this, [].slice.call(arguments).concat([ force ])); + return checkCache.apply(this, [].slice.call(arguments).concat([force])); }; - + //save current scroll offset var currScroll = { x: _viewportElement[_strScrollLeft](), @@ -3330,7 +3330,7 @@ _sizeAutoObserverElementNative = _sizeAutoObserverElement[0]; _contentGlueElement.before(_sizeAutoObserverElement); - var oldSize = {w: -1, h: -1}; + var oldSize = { w: -1, h: -1 }; setupResizeObserver(_sizeAutoObserverElement, function () { var newSize = { w: _sizeAutoObserverElementNative[LEXICON.oW], @@ -3392,7 +3392,7 @@ b: parseToZeroOrNumber(_hostElement.css(_strPaddingMinus + _strBottom)), l: parseToZeroOrNumber(_hostElement.css(_strPaddingMinus + _strLeft)) }; - + //width + height auto detecting var: var sizeAutoObserverElementBCRect; //exception occurs in IE8 sometimes (unknown exception) @@ -3463,18 +3463,18 @@ }; //vars to apply correct css - var contentElementCSS = { }; - var contentGlueElementCSS = { }; + var contentElementCSS = {}; + var contentGlueElementCSS = {}; //funcs - var getHostSize = function() { + var getHostSize = function () { //has to be clientSize because offsetSize respect borders return { w: _hostElementNative[LEXICON.cW], h: _hostElementNative[LEXICON.cH] }; }; - var getViewportSize = function() { + var getViewportSize = function () { //viewport size is padding container because it never has padding, margin and a border //determine zoom rounding error -> sometimes scrollWidth/Height is smaller than clientWidth/Height //if this happens add the difference to the viewportSize to compensate the rounding error @@ -3519,7 +3519,7 @@ _cssBorderCache = border; _cssMarginCache = margin; _cssMaxValueCache = cssMaxValue; - + //IEFix direction changed if (cssDirectionChanged && _sizeAutoObserverAdded) _sizeAutoObserverElement.css(_strFloat, isRTLRight); @@ -3554,9 +3554,9 @@ var textareaSize = _isTextarea ? textareaUpdate() : false; var textareaSizeChanged = _isTextarea && checkCacheAutoForce(textareaSize, _textareaSizeCache); var textareaDynOrigSize = _isTextarea && textareaSize ? { - w : textareaDynWidth ? textareaSize._dynamicWidth : textareaSize._originalWidth, - h : textareaDynHeight ? textareaSize._dynamicHeight : textareaSize._originalHeight - } : { }; + w: textareaDynWidth ? textareaSize._dynamicWidth : textareaSize._originalWidth, + h: textareaDynHeight ? textareaSize._dynamicHeight : textareaSize._originalHeight + } : {}; _textareaSizeCache = textareaSize; //fix height auto / width auto in cooperation with current padding & boxSizing behavior: @@ -3628,19 +3628,19 @@ var strVisible = 'visible'; //decide whether the content overflow must get hidden for correct overflow measuring, it !MUST! be always hidden if the height is auto var hideOverflow4CorrectMeasuring = _restrictedMeasuring ? - (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y) || //it must be hidden if native scrollbars are overlaid - (_viewportSize.w < _nativeScrollbarMinSize.y || _viewportSize.h < _nativeScrollbarMinSize.x) || //it must be hidden if host-element is too small - heightAuto || displayIsHiddenChanged //it must be hidden if height is auto or display was changed + (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y) || //it must be hidden if native scrollbars are overlaid + (_viewportSize.w < _nativeScrollbarMinSize.y || _viewportSize.h < _nativeScrollbarMinSize.x) || //it must be hidden if host-element is too small + heightAuto || displayIsHiddenChanged //it must be hidden if height is auto or display was changed : heightAuto; //if there is not the restricted Measuring bug, it must be hidden if the height is auto //Reset the viewport (very important for natively overlaid scrollbars and zoom change //don't change the overflow prop as it is very expensive and affects performance !A LOT! - var viewportElementResetCSS = { }; + var viewportElementResetCSS = {}; var resetXTmp = _hasOverflowCache.y && _hideOverflowCache.ys && !ignoreOverlayScrollbarHiding && !_nativeScrollbarStyling ? (_nativeScrollbarIsOverlaid.y ? _viewportElement.css(isRTLLeft) : -_nativeScrollbarSize.y) : 0; var resetBottomTmp = _hasOverflowCache.x && _hideOverflowCache.xs && !ignoreOverlayScrollbarHiding && !_nativeScrollbarStyling ? (_nativeScrollbarIsOverlaid.x ? _viewportElement.css(_strBottom) : -_nativeScrollbarSize.x) : 0; setTopRightBottomLeft(viewportElementResetCSS, _strEmpty); _viewportElement.css(viewportElementResetCSS); - if(hideOverflow4CorrectMeasuring) + if (hideOverflow4CorrectMeasuring) _contentElement.css(strOverflow, strHidden); //measure several sizes: @@ -3682,7 +3682,7 @@ contentGlueElementCSS[_strHeight] = contentGlueSize.h; //textarea-sizes are already calculated correctly at this point - if(!_isTextarea) { + if (!_isTextarea) { contentSize = { //use clientSize because natively overlaidScrollbars add borders w: contentMeasureElement[LEXICON.cW], @@ -3691,7 +3691,7 @@ } } var textareaCoverCSS = {}; - var setContentGlueElementCSSfunction = function(horizontal) { + var setContentGlueElementCSSfunction = function (horizontal) { var scrollbarVars = getScrollbarVars(horizontal); var wh = scrollbarVars._w_h; var strWH = scrollbarVars._width_height; @@ -3745,9 +3745,9 @@ _contentScrollSizeCache = contentScrollSize; //remove overflow hidden to restore overflow - if(hideOverflow4CorrectMeasuring) + if (hideOverflow4CorrectMeasuring) _contentElement.css(strOverflow, _strEmpty); - + //refresh viewport size after correct measuring _viewportSize = getViewportSize(); @@ -3756,23 +3756,23 @@ _hostSizeCache = hostSize; var hideOverflowForceTextarea = _isTextarea && (_viewportSize.w === 0 || _viewportSize.h === 0); - var previousOverflow = _overflowAmountCache; - var overflowBehaviorIsVS = { }; - var overflowBehaviorIsVH = { }; - var overflowBehaviorIsS = { }; - var overflowAmount = { }; - var hasOverflow = { }; - var hideOverflow = { }; - var canScroll = { }; + var previousOverflowAmount = _overflowAmountCache; + var overflowBehaviorIsVS = {}; + var overflowBehaviorIsVH = {}; + var overflowBehaviorIsS = {}; + var overflowAmount = {}; + var hasOverflow = {}; + var hideOverflow = {}; + var canScroll = {}; var viewportRect = _paddingElementNative[LEXICON.bCR](); - var setOverflowVariables = function(horizontal) { + var setOverflowVariables = function (horizontal) { var scrollbarVars = getScrollbarVars(horizontal); var scrollbarVarsInverted = getScrollbarVars(!horizontal); var xyI = scrollbarVarsInverted._x_y; var xy = scrollbarVars._x_y; var wh = scrollbarVars._w_h; var widthHeight = scrollbarVars._width_height; - var scrollMax = _strScroll + scrollbarVars._Left_Top + 'Max'; + var scrollMax = _strScroll + scrollbarVars._Left_Top + 'Max'; var fractionalOverflowAmount = viewportRect[widthHeight] ? MATH.abs(viewportRect[widthHeight] - _viewportSize[wh]) : 0; var checkFractionalOverflowAmount = previousOverflowAmount && previousOverflowAmount[xy] > 0 && _viewportElementNative[scrollMax] === 0; overflowBehaviorIsVS[xy] = overflowBehavior[xy] === 'v-s'; @@ -3803,8 +3803,8 @@ //if native scrollbar is overlay at x OR y axis, prepare DOM if (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y) { var borderDesign = 'px solid transparent'; - var contentArrangeElementCSS = { }; - var arrangeContent = { }; + var contentArrangeElementCSS = {}; + var arrangeContent = {}; var arrangeChanged = force; var setContentElementCSS; @@ -3817,7 +3817,7 @@ if (hasOverflow.c || hideOverflow.c || contentScrollSize.c || cssDirectionChanged || widthAutoChanged || heightAutoChanged || widthAuto || heightAuto || ignoreOverlayScrollbarHidingChanged) { contentElementCSS[_strMarginMinus + isRTLRight] = contentElementCSS[_strBorderMinus + isRTLRight] = _strEmpty; - setContentElementCSS = function(horizontal) { + setContentElementCSS = function (horizontal) { var scrollbarVars = getScrollbarVars(horizontal); var scrollbarVarsInverted = getScrollbarVars(!horizontal); var xy = scrollbarVars._x_y; @@ -3830,14 +3830,14 @@ } else { arrangeContent[scrollbarVarsInverted._w_h] = - contentElementCSS[_strMarginMinus + strDirection] = - contentElementCSS[_strBorderMinus + strDirection] = _strEmpty; + contentElementCSS[_strMarginMinus + strDirection] = + contentElementCSS[_strBorderMinus + strDirection] = _strEmpty; arrangeChanged = true; } }; if (_nativeScrollbarStyling) { - if (ignoreOverlayScrollbarHiding) + if (ignoreOverlayScrollbarHiding) removeClass(_viewportElement, _classNameViewportNativeScrollbarsInvisible); else addClass(_viewportElement, _classNameViewportNativeScrollbarsInvisible); @@ -3869,7 +3869,7 @@ var setViewportCSS; if (hostSizeChanged || hasOverflow.c || hideOverflow.c || contentScrollSize.c || overflowBehaviorChanged || boxSizingChanged || ignoreOverlayScrollbarHidingChanged || cssDirectionChanged || clipAlwaysChanged || heightAutoChanged) { viewportElementCSS[isRTLRight] = _strEmpty; - setViewportCSS = function(horizontal) { + setViewportCSS = function (horizontal) { var scrollbarVars = getScrollbarVars(horizontal); var scrollbarVarsInverted = getScrollbarVars(!horizontal); var xy = scrollbarVars._x_y; @@ -3886,7 +3886,7 @@ reset(); } else { - viewportElementCSS[strDirection] = -(_nativeScrollbarIsOverlaid[xy] ? _overlayScrollbarDummySize[xy] : _nativeScrollbarSize[xy]); + viewportElementCSS[strDirection] = -(_nativeScrollbarIsOverlaid[xy] ? _overlayScrollbarDummySize[xy] : _nativeScrollbarSize[xy]); _contentBorderSize[scrollbarVarsInverted._w_h] = _nativeScrollbarIsOverlaid[xy] ? _overlayScrollbarDummySize[scrollbarVarsInverted._x_y] : 0; } } else { @@ -3896,13 +3896,13 @@ }; setViewportCSS(true); setViewportCSS(false); - + // if the scroll container is too small and if there is any overflow with no overlay scrollbar (and scrollbar styling isn't possible), // make viewport element greater in size (Firefox hide Scrollbars fix) // because firefox starts hiding scrollbars on too small elements // with this behavior the overflow calculation may be incorrect or the scrollbars would appear suddenly // https://bugzilla.mozilla.org/show_bug.cgi?id=292284 - if (!_nativeScrollbarStyling + if (!_nativeScrollbarStyling && (_viewportSize.h < _nativeScrollbarMinSize.x || _viewportSize.w < _nativeScrollbarMinSize.y) && ((hasOverflow.x && hideOverflow.x && !_nativeScrollbarIsOverlaid.x) || (hasOverflow.y && hideOverflow.y && !_nativeScrollbarIsOverlaid.y))) { viewportElementCSS[_strPaddingMinus + _strTop] = _nativeScrollbarMinSize.x; @@ -3913,19 +3913,19 @@ } else { viewportElementCSS[_strPaddingMinus + _strTop] = - viewportElementCSS[_strMarginMinus + _strTop] = - viewportElementCSS[_strPaddingMinus + isRTLRight] = - viewportElementCSS[_strMarginMinus + isRTLRight] = _strEmpty; + viewportElementCSS[_strMarginMinus + _strTop] = + viewportElementCSS[_strPaddingMinus + isRTLRight] = + viewportElementCSS[_strMarginMinus + isRTLRight] = _strEmpty; } viewportElementCSS[_strPaddingMinus + isRTLLeft] = - viewportElementCSS[_strMarginMinus + isRTLLeft] = _strEmpty; + viewportElementCSS[_strMarginMinus + isRTLLeft] = _strEmpty; //if there is any overflow (x OR y axis) and this overflow shall be hidden, make overflow hidden, else overflow visible if ((hasOverflow.x && hideOverflow.x) || (hasOverflow.y && hideOverflow.y) || hideOverflowForceTextarea) { //only hide if is Textarea if (_isTextarea && hideOverflowForceTextarea) { paddingElementCSS[strOverflowX] = - paddingElementCSS[strOverflowY] = strHidden; + paddingElementCSS[strOverflowY] = strHidden; } } else { @@ -3933,16 +3933,16 @@ //only un-hide if Textarea if (_isTextarea) { paddingElementCSS[strOverflowX] = - paddingElementCSS[strOverflowY] = _strEmpty; + paddingElementCSS[strOverflowY] = _strEmpty; } viewportElementCSS[strOverflowX] = - viewportElementCSS[strOverflowY] = strVisible; + viewportElementCSS[strOverflowY] = strVisible; } } _paddingElement.css(paddingElementCSS); _viewportElement.css(viewportElementCSS); - viewportElementCSS = { }; + viewportElementCSS = {}; //force soft redraw in webkit because without the scrollbars will may appear because DOM wont be redrawn under special conditions if ((hasOverflow.c || boxSizingChanged || widthAutoChanged || heightAutoChanged) && !(_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y)) { @@ -3998,7 +3998,7 @@ var cursorIsLastPosition = (cursorPos >= cursorMax && _textareaHasFocus); var textareaScrollAmount = { x: (!textareaAutoWrapping && (cursorCol === lastCol && cursorRow === widestRow)) ? _overflowAmountCache.x : -1, - y: (textareaAutoWrapping ? cursorIsLastPosition || textareaRowsChanged && (previousOverflow !== undefined ? (currScroll.y === previousOverflow.y) : false) : (cursorIsLastPosition || textareaRowsChanged) && cursorRow === lastRow) ? _overflowAmountCache.y : -1 + y: (textareaAutoWrapping ? cursorIsLastPosition || textareaRowsChanged && (previousOverflowAmount ? (currScroll.y === previousOverflow.y) : false) : (cursorIsLastPosition || textareaRowsChanged) && cursorRow === lastRow) ? _overflowAmountCache.y : -1 }; currScroll.x = textareaScrollAmount.x > -1 ? (_isRTL && _normalizeRTLCache && _rtlScrollBehavior.i ? 0 : textareaScrollAmount.x) : currScroll.x; //if inverted, scroll to 0 -> normalized this means to max scroll offset. currScroll.y = textareaScrollAmount.y > -1 ? textareaScrollAmount.y : currScroll.y; @@ -4007,9 +4007,9 @@ } if (_isRTL && _rtlScrollBehavior.i && _nativeScrollbarIsOverlaid.y && hasOverflow.x && _normalizeRTLCache) currScroll.x += _contentBorderSize.w || 0; - if(widthAuto) + if (widthAuto) _hostElement[_strScrollLeft](0); - if(heightAuto) + if (heightAuto) _hostElement[_strScrollTop](0); _viewportElement[_strScrollLeft](currScroll.x)[_strScrollTop](currScroll.y); @@ -4049,11 +4049,11 @@ if (_isBody) addClass(_hostElement, _classNameHostResizeDisabled); if (resizeChanged) { - removeClass(_scrollbarCornerElement, [ - _classNameScrollbarCornerResize, - _classNameScrollbarCornerResizeB, - _classNameScrollbarCornerResizeH, - _classNameScrollbarCornerResizeV].join(_strSpace)); + removeClass(_scrollbarCornerElement, [ + _classNameScrollbarCornerResize, + _classNameScrollbarCornerResizeB, + _classNameScrollbarCornerResizeH, + _classNameScrollbarCornerResizeV].join(_strSpace)); if (_resizeNone) { addClass(_hostElement, _classNameHostResizeDisabled); } @@ -4185,7 +4185,7 @@ dispatchCallback('onUpdated', { forced: force }); } - + //==== Options ====// /** @@ -4198,7 +4198,7 @@ _currentOptions = extendDeep({}, _currentOptions, validatedOpts._default); _currentPreparedOptions = extendDeep({}, _currentPreparedOptions, validatedOpts._prepared); - + return validatedOpts._prepared; } @@ -4215,12 +4215,12 @@ var classNameTextareaElementFull = _classNameTextareaElement + _strSpace + _classNameTextInherit; var textareaClass = _isTextarea ? _strSpace + _classNameTextInherit : _strEmpty; var adoptAttrs = _currentPreparedOptions.textarea.inheritedAttrs; - var adoptAttrsMap = { }; - var applyAdoptedAttrs = function() { + var adoptAttrsMap = {}; + var applyAdoptedAttrs = function () { var applyAdoptedAttrsElm = destroy ? _targetElement : _hostElement; - each(adoptAttrsMap, function(key, value) { - if(type(value) == TYPES.s) { - if(key == LEXICON.c) + each(adoptAttrsMap, function (key, value) { + if (type(value) == TYPES.s) { + if (key == LEXICON.c) applyAdoptedAttrsElm.addClass(value); else applyAdoptedAttrsElm.attr(key, value); @@ -4243,8 +4243,8 @@ _classNameTextareaElement, _classNameTextInherit, _classNameCache].join(_strSpace); - var hostElementCSS = { }; - + var hostElementCSS = {}; + //get host element as first element, because that's the most upper element and required for the other elements _hostElement = _hostElement || (_isTextarea ? (_domExists ? _targetElement[strParent]()[strParent]()[strParent]()[strParent]() : FRAMEWORK(generateDiv(_classNameHostTextareaElement))) : _targetElement); _contentElement = _contentElement || selectOrGenerateDivByClass(_classNameContentElement + textareaClass); @@ -4252,37 +4252,37 @@ _paddingElement = _paddingElement || selectOrGenerateDivByClass(_classNamePaddingElement + textareaClass); _sizeObserverElement = _sizeObserverElement || selectOrGenerateDivByClass(classNameResizeObserverHost); _textareaCoverElement = _textareaCoverElement || (_isTextarea ? selectOrGenerateDivByClass(_classNameTextareaCoverElement) : undefined); - + //on destroy, remove all generated class names from the host element before collecting the adopted attributes //to prevent adopting generated class names - if(destroy) + if (destroy) removeClass(_hostElement, hostElementClassNames); - + //collect all adopted attributes adoptAttrs = type(adoptAttrs) == TYPES.s ? adoptAttrs.split(_strSpace) : adoptAttrs; - if(type(adoptAttrs) == TYPES.a && _isTextarea) { - each(adoptAttrs, function(i, v) { - if(type(v) == TYPES.s) { + if (type(adoptAttrs) == TYPES.a && _isTextarea) { + each(adoptAttrs, function (i, v) { + if (type(v) == TYPES.s) { adoptAttrsMap[v] = destroy ? _hostElement.attr(v) : _targetElement.attr(v); } }); } - if(!destroy) { - if(_isTextarea) { - if(!_currentPreparedOptions.sizeAutoCapable) { + if (!destroy) { + if (_isTextarea) { + if (!_currentPreparedOptions.sizeAutoCapable) { hostElementCSS[_strWidth] = _targetElement.css(_strWidth); hostElementCSS[_strHeight] = _targetElement.css(_strHeight); } - - if(!_domExists) + + if (!_domExists) _targetElement.addClass(_classNameTextInherit).wrap(_hostElement); - + //jQuery clones elements in wrap functions, so we have to select them again _hostElement = _targetElement[strParent]().css(hostElementCSS); } - - if(!_domExists) { + + if (!_domExists) { //add the correct class to the target element addClass(_targetElement, _isTextarea ? classNameTextareaElementFull : _classNameHostElement); @@ -4291,21 +4291,21 @@ .wrapInner(_viewportElement) .wrapInner(_paddingElement) .prepend(_sizeObserverElement); - + //jQuery clones elements in wrap functions, so we have to select them again _contentElement = findFirst(_hostElement, _strDot + _classNameContentElement); _viewportElement = findFirst(_hostElement, _strDot + _classNameViewportElement); _paddingElement = findFirst(_hostElement, _strDot + _classNamePaddingElement); - - if(_isTextarea) { + + if (_isTextarea) { _contentElement.prepend(_textareaCoverElement); applyAdoptedAttrs(); } } - + if (_nativeScrollbarStyling) addClass(_viewportElement, _classNameViewportNativeScrollbarsInvisible); - if(_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y) + if (_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y) addClass(_viewportElement, _classNameViewportNativeScrollbarsOverlaid); if (_isBody) addClass(_htmlElement, _classNameHTMLElement); @@ -4317,41 +4317,41 @@ _contentElementNative = _contentElement[0]; } else { - if(_domExists && _initialized) { + if (_domExists && _initialized) { //clear size observer _sizeObserverElement.children().remove(); - + //remove the style property and classes from already generated elements - each([ _paddingElement, _viewportElement, _contentElement, _textareaCoverElement ], function(i, elm) { - if(elm) { + each([_paddingElement, _viewportElement, _contentElement, _textareaCoverElement], function (i, elm) { + if (elm) { removeClass(elm.removeAttr(LEXICON.s), _classNamesDynamicDestroy); } }); - + //add classes to the host element which was removed previously to match the expected DOM addClass(_hostElement, _isTextarea ? _classNameHostTextareaElement : _classNameHostElement); } else { //remove size observer remove(_sizeObserverElement); - + //unwrap the content to restore DOM _contentElement.contents() .unwrap() .unwrap() .unwrap(); - - if(_isTextarea) { + + if (_isTextarea) { _targetElement.unwrap(); remove(_hostElement); remove(_textareaCoverElement); applyAdoptedAttrs(); } } - + if (_isTextarea) _targetElement.removeAttr(LEXICON.s); - + if (_isBody) removeClass(_htmlElement, _classNameHTMLElement); } @@ -4368,7 +4368,7 @@ 37, 38, 39, 40, //left, up, right, down arrows 16, 17, 18, 19, 20, 144 //Shift, Ctrl, Alt, Pause, CapsLock, NumLock ]; - var textareaKeyDownKeyCodesList = [ ]; + var textareaKeyDownKeyCodesList = []; var textareaUpdateIntervalID; var scrollStopTimeoutId; var scrollStopDelay = 175; @@ -4377,7 +4377,7 @@ function updateTextarea(doClearInterval) { textareaUpdate(); _base.update(_strAuto); - if(doClearInterval && _autoUpdateRecommended) + if (doClearInterval && _autoUpdateRecommended) clearInterval(textareaUpdateIntervalID); } function textareaOnScroll(event) { @@ -4389,7 +4389,7 @@ } function textareaOnDrop(event) { setTimeout(function () { - if(!_destroyed) + if (!_destroyed) updateTextarea(); }, 50); } @@ -4399,13 +4399,13 @@ } function textareaOnFocusout() { _textareaHasFocus = false; - textareaKeyDownKeyCodesList = [ ]; + textareaKeyDownKeyCodesList = []; removeClass(_hostElement, strFocus); updateTextarea(true); - } + } function textareaOnKeyDown(event) { var keyCode = event.keyCode; - + if (inArray(keyCode, textareaKeyDownRestrictedKeyCodes) < 0) { if (!textareaKeyDownKeyCodesList[LEXICON.l]) { updateTextarea(); @@ -4425,7 +4425,7 @@ if (!textareaKeyDownKeyCodesList[LEXICON.l]) updateTextarea(true); } - } + } function contentOnTransitionEnd(event) { if (_autoUpdateCache === true) return; @@ -4450,14 +4450,14 @@ //if a scrollbars handle gets dragged, the mousemove event is responsible for refreshing the handle offset //because if CSS scroll-snap is used, the handle offset gets only refreshed on every snap point //this looks laggy & clunky, it looks much better if the offset refreshes with the mousemove - if(!_scrollbarsHandlesDefineScrollPos) { + if (!_scrollbarsHandlesDefineScrollPos) { refreshScrollbarHandleOffset(true); refreshScrollbarHandleOffset(false); } dispatchCallback('onScroll', event); scrollStopTimeoutId = setTimeout(function () { - if(!_destroyed) { + if (!_destroyed) { //OnScrollStop: clearTimeout(scrollStopTimeoutId); scrollStopTimeoutId = undefined; @@ -4475,19 +4475,19 @@ } - if (_isTextarea) { + if (_isTextarea) { if (_msieVersion > 9 || !_autoUpdateRecommended) { addDestroyEventListener(_targetElement, 'input', updateTextarea); } else { - addDestroyEventListener(_targetElement, - [ _strKeyDownEvent, _strKeyUpEvent ], - [ textareaOnKeyDown, textareaOnKeyUp ]); + addDestroyEventListener(_targetElement, + [_strKeyDownEvent, _strKeyUpEvent], + [textareaOnKeyDown, textareaOnKeyUp]); } - - addDestroyEventListener(_targetElement, - [ _strScroll, 'drop', strFocus, strFocus + 'out' ], - [ textareaOnScroll, textareaOnDrop, textareaOnFocus, textareaOnFocusout ]); + + addDestroyEventListener(_targetElement, + [_strScroll, 'drop', strFocus, strFocus + 'out'], + [textareaOnScroll, textareaOnDrop, textareaOnFocus, textareaOnFocusout]); } else { addDestroyEventListener(_contentElement, _strTransitionEndEvent, contentOnTransitionEnd); @@ -4503,17 +4503,17 @@ * @param destroy Indicates whether the DOM shall be build or destroyed. */ function setupScrollbarsDOM(destroy) { - var selectOrGenerateScrollbarDOM = function(isHorizontal) { + var selectOrGenerateScrollbarDOM = function (isHorizontal) { var scrollbarClassName = isHorizontal ? _classNameScrollbarHorizontal : _classNameScrollbarVertical; var scrollbar = selectOrGenerateDivByClass(_classNameScrollbar + _strSpace + scrollbarClassName, true); var track = selectOrGenerateDivByClass(_classNameScrollbarTrack, scrollbar); var handle = selectOrGenerateDivByClass(_classNameScrollbarHandle, scrollbar); - if(!_domExists && !destroy) { + if (!_domExists && !destroy) { scrollbar.append(track); track.append(handle); } - + return { _scrollbar: scrollbar, _track: track, @@ -4525,9 +4525,9 @@ var scrollbar = scrollbarVars._scrollbar; var track = scrollbarVars._track; var handle = scrollbarVars._handle; - - if(_domExists && _initialized) { - each([ scrollbar, track, handle ], function(i, elm) { + + if (_domExists && _initialized) { + each([scrollbar, track, handle], function (i, elm) { removeClass(elm.removeAttr(LEXICON.s), _classNamesDynamicDestroy); }); } @@ -4537,11 +4537,11 @@ } var horizontalElements; var verticalElements; - - if(!destroy) { + + if (!destroy) { horizontalElements = selectOrGenerateScrollbarDOM(true); verticalElements = selectOrGenerateScrollbarDOM(); - + _scrollbarHorizontalElement = horizontalElements._scrollbar; _scrollbarHorizontalTrackElement = horizontalElements._track; _scrollbarHorizontalHandleElement = horizontalElements._handle; @@ -4549,7 +4549,7 @@ _scrollbarVerticalTrackElement = verticalElements._track; _scrollbarVerticalHandleElement = verticalElements._handle; - if(!_domExists) { + if (!_domExists) { _paddingElement.after(_scrollbarVerticalElement); _paddingElement.after(_scrollbarHorizontalElement); } @@ -4574,12 +4574,12 @@ var strActive = 'active'; var strSnapHandle = 'snapHandle'; var scrollDurationFactor = 1; - var increaseDecreaseScrollAmountKeyCodes = [ 16, 17 ]; //shift, ctrl + var increaseDecreaseScrollAmountKeyCodes = [16, 17]; //shift, ctrl var trackTimeout; var mouseDownScroll; var mouseDownOffset; var mouseDownInvertedScale; - + function getPointerPosition(event) { return _msieVersion && insideIFrame ? event['screen' + XY] : COMPATIBILITY.page(event)[xy]; //use screen coordinates in EDGE & IE because the page values are incorrect in frames. } @@ -4606,7 +4606,7 @@ return _sleeping || _destroyed || nativeOverlayScrollbarsAreActive() || !_scrollbarsDragScrollingCache || (isTouchEvent && !getPreparedScrollbarsOption('touchSupport')) ? false : COMPATIBILITY.mBtn(event) === 1 || isTouchEvent; } function documentDragMove(event) { - if(onMouseTouchDownContinue(event)) { + if (onMouseTouchDownContinue(event)) { var trackLength = scrollbarVarsInfo._trackLength; var handleLength = scrollbarVarsInfo._handleLength; var scrollRange = scrollbarVarsInfo._maxScroll; @@ -4619,7 +4619,7 @@ _viewportElement[scroll](MATH.round(mouseDownScroll + scrollDelta)); - if(_scrollbarsHandlesDefineScrollPos) + if (_scrollbarsHandlesDefineScrollPos) refreshScrollbarHandleOffset(isHorizontal, mouseDownScroll + scrollDelta); if (!_supportPassiveEvents) @@ -4632,11 +4632,11 @@ event = event || event.originalEvent; setupResponsiveEventListener(_documentElement, - [ _strMouseTouchMoveEvent, _strMouseTouchUpEvent, _strKeyDownEvent, _strKeyUpEvent, _strSelectStartEvent ], - [ documentDragMove, documentMouseTouchUp, documentKeyDown, documentKeyUp, documentOnSelectStart ], + [_strMouseTouchMoveEvent, _strMouseTouchUpEvent, _strKeyDownEvent, _strKeyUpEvent, _strSelectStartEvent], + [documentDragMove, documentMouseTouchUp, documentKeyDown, documentKeyUp, documentOnSelectStart], true); - if(_scrollbarsHandlesDefineScrollPos) + if (_scrollbarsHandlesDefineScrollPos) refreshScrollbarHandleOffset(isHorizontal, true); _scrollbarsHandlesDefineScrollPos = false; @@ -4657,7 +4657,7 @@ trackTimeout = undefined; } - if(event) { + if (event) { var rect = _hostElementNative[LEXICON.bCR](); var mouseInsideHost = event.clientX >= rect.left && event.clientX <= rect.right && event.clientY >= rect.top && event.clientY <= rect.bottom; @@ -4688,10 +4688,10 @@ addClass(scrollbarVars._scrollbar, strActive); setupResponsiveEventListener(_documentElement, - [ _strMouseTouchMoveEvent, _strMouseTouchUpEvent, _strSelectStartEvent ], - [ documentDragMove, documentMouseTouchUp, documentOnSelectStart ]); + [_strMouseTouchMoveEvent, _strMouseTouchUpEvent, _strSelectStartEvent], + [documentDragMove, documentMouseTouchUp, documentOnSelectStart]); - if(_msieVersion || !_documentMixed) + if (_msieVersion || !_documentMixed) COMPATIBILITY.prvD(event); COMPATIBILITY.stpP(event); } @@ -4706,16 +4706,16 @@ var easing = 'linear'; var decreaseScroll; var finishedCondition; - var scrollActionFinsished = function(transition) { - if(_scrollbarsHandlesDefineScrollPos) + var scrollActionFinsished = function (transition) { + if (_scrollbarsHandlesDefineScrollPos) refreshScrollbarHandleOffset(isHorizontal, transition); }; - var scrollActionInstantFinished = function() { + var scrollActionInstantFinished = function () { scrollActionFinsished(); onHandleMouseTouchDownAction(event); }; var scrollAction = function () { - if(!_destroyed) { + if (!_destroyed) { var mouseOffset = (mouseDownOffset - trackOffset) * mouseDownInvertedScale; var handleOffset = scrollbarVarsInfo._handleOffset; var trackLength = scrollbarVarsInfo._trackLength; @@ -4727,11 +4727,11 @@ var instantScrollPosition = scrollRange * ((mouseOffset - (handleLength / 2)) / (trackLength - handleLength)); // 100% * positionPercent var rtlIsNormal = _isRTL && isHorizontal && ((!_rtlScrollBehavior.i && !_rtlScrollBehavior.n) || _normalizeRTLCache); var decreaseScrollCondition = rtlIsNormal ? handleOffset < mouseOffset : handleOffset > mouseOffset; - var scrollObj = { }; + var scrollObj = {}; var animationObj = { - easing : easing, - step : function(now) { - if(_scrollbarsHandlesDefineScrollPos) { + easing: easing, + step: function (now) { + if (_scrollbarsHandlesDefineScrollPos) { _viewportElement[scroll](now); //https://github.com/jquery/jquery/issues/4340 refreshScrollbarHandleOffset(isHorizontal, now); } @@ -4742,9 +4742,9 @@ //_base.scrollStop(); - if(instantScroll) { + if (instantScroll) { _viewportElement[scroll](instantScrollPosition); //scroll instantly to new position - if(instantScrollTransition) { + if (instantScrollTransition) { //get the scroll position after instant scroll (in case CSS Snap Points are used) to get the correct snapped scroll position //and the animation stops at the correct point instantScrollPosition = _viewportElement[scroll](); @@ -4756,8 +4756,8 @@ scrollObj[xy] = instantScrollPosition; _base.scroll(scrollObj, extendDeep(animationObj, { - duration : 130, - complete : scrollActionInstantFinished + duration: 130, + complete: scrollActionInstantFinished })); } else @@ -4799,8 +4799,8 @@ addClass(scrollbarVars._scrollbar, strActive); setupResponsiveEventListener(_documentElement, - [ _strMouseTouchUpEvent, _strKeyDownEvent, _strKeyUpEvent, _strSelectStartEvent ], - [ documentMouseTouchUp, documentKeyDown, documentKeyUp, documentOnSelectStart ]); + [_strMouseTouchUpEvent, _strKeyDownEvent, _strKeyUpEvent, _strSelectStartEvent], + [documentMouseTouchUp, documentKeyDown, documentKeyUp, documentOnSelectStart]); scrollAction(); COMPATIBILITY.prvD(event); @@ -4821,19 +4821,19 @@ function onScrollbarMouseTouchDown(event) { COMPATIBILITY.stpP(event); } - - addDestroyEventListener(scrollbarVars._handle, - _strMouseTouchDownEvent, + + addDestroyEventListener(scrollbarVars._handle, + _strMouseTouchDownEvent, onHandleMouseTouchDown); addDestroyEventListener(scrollbarVars._track, - [_strMouseTouchDownEvent, _strMouseTouchEnter, _strMouseTouchLeave], + [_strMouseTouchDownEvent, _strMouseTouchEnter, _strMouseTouchLeave], [onTrackMouseTouchDown, onTrackMouseTouchEnter, onTrackMouseTouchLeave]); - addDestroyEventListener(scrollbarVars._scrollbar, - _strMouseTouchDownEvent, + addDestroyEventListener(scrollbarVars._scrollbar, + _strMouseTouchDownEvent, onScrollbarMouseTouchDown); if (_supportTransition) { - addDestroyEventListener(scrollbarVars._scrollbar, _strTransitionEndEvent, function(event) { + addDestroyEventListener(scrollbarVars._scrollbar, _strTransitionEndEvent, function (event) { if (event.target !== scrollbarVars._scrollbar[0]) return; refreshScrollbarHandleLength(isHorizontal); @@ -4945,10 +4945,10 @@ // because its a bit behind during the small delay when content size updates //(delay = mutationObserverContentLag, if its 0 then this var could be used) var maxScroll = (_viewportElementNative[_strScroll + scrollbarVars._Width_Height] - _viewportElementNative['client' + scrollbarVars._Width_Height]) * (_rtlScrollBehavior.n && isRTLisHorizontal ? -1 : 1); //* -1 if rtl scroll max is negative - var getScrollRatio = function(base) { + var getScrollRatio = function (base) { return isNaN(base / maxScroll) ? 0 : MATH.max(0, MATH.min(1, base / maxScroll)); }; - var getHandleOffset = function(scrollRatio) { + var getHandleOffset = function (scrollRatio) { var offset = handleTrackDiff * scrollRatio; offset = isNaN(offset) ? 0 : offset; offset = (isRTLisHorizontal && !_rtlScrollBehavior.i) ? (trackLength - handleLength - offset) : offset; @@ -4972,8 +4972,8 @@ handleCSS[strTransform] = translateValue; //apply or clear up transition - if(_supportTransition) - handleCSS[strTransition] = transition && MATH.abs(handleOffset - scrollbarVarsInfo._handleOffset) > 1 ? getCSSTransitionString(scrollbarVars._handle) + ', ' + (strTransform + _strSpace + transitionDuration + 'ms') : _strEmpty; + if (_supportTransition) + handleCSS[strTransition] = transition && MATH.abs(handleOffset - scrollbarVarsInfo._handleOffset) > 1 ? getCSSTransitionString(scrollbarVars._handle) + ', ' + (strTransform + _strSpace + transitionDuration + 'ms') : _strEmpty; } else handleCSS[scrollbarVars._left_top] = handleOffset; @@ -4984,9 +4984,9 @@ scrollbarVars._handle.css(handleCSS); //clear up transition - if(_supportTransform && _supportTransition && transition) { - scrollbarVars._handle.one(_strTransitionEndEvent, function() { - if(!_destroyed) + if (_supportTransform && _supportTransition && transition) { + scrollbarVars._handle.one(_strTransitionEndEvent, function () { + if (!_destroyed) scrollbarVars._handle.css(strTransition, _strEmpty); }); } @@ -5043,36 +5043,36 @@ */ function setupScrollbarCornerDOM(destroy) { _scrollbarCornerElement = _scrollbarCornerElement || selectOrGenerateDivByClass(_classNameScrollbarCorner, true); - - if(!destroy) { - if(!_domExists) { + + if (!destroy) { + if (!_domExists) { _hostElement.append(_scrollbarCornerElement); } } else { - if(_domExists && _initialized) { + if (_domExists && _initialized) { removeClass(_scrollbarCornerElement.removeAttr(LEXICON.s), _classNamesDynamicDestroy); } else { remove(_scrollbarCornerElement); } } - } + } /** * Initializes all scrollbar corner interactivity events. */ function setupScrollbarCornerEvents() { var insideIFrame = _windowElementNative.top !== _windowElementNative; - var mouseDownPosition = { }; - var mouseDownSize = { }; - var mouseDownInvertedScale = { }; + var mouseDownPosition = {}; + var mouseDownSize = {}; + var mouseDownInvertedScale = {}; var reconnectMutationObserver; - + function documentDragMove(event) { if (onMouseTouchDownContinue(event)) { var pageOffset = getCoordinates(event); - var hostElementCSS = { }; + var hostElementCSS = {}; if (_resizeHorizontal || _resizeBoth) hostElementCSS[_strWidth] = (mouseDownSize.w + (pageOffset.x - mouseDownPosition.x) * mouseDownInvertedScale.x); if (_resizeVertical || _resizeBoth) @@ -5088,9 +5088,9 @@ var eventIsTrusted = event !== undefined; setupResponsiveEventListener(_documentElement, - [ _strSelectStartEvent, _strMouseTouchMoveEvent, _strMouseTouchUpEvent ], - [ documentOnSelectStart, documentDragMove, documentMouseTouchUp ], - true); + [_strSelectStartEvent, _strMouseTouchMoveEvent, _strMouseTouchUpEvent], + [documentOnSelectStart, documentDragMove, documentMouseTouchUp], + true); removeClass(_bodyElement, _classNameDragging); if (_scrollbarCornerElement.releaseCapture) @@ -5109,10 +5109,10 @@ return _sleeping || _destroyed ? false : COMPATIBILITY.mBtn(event) === 1 || isTouchEvent; } function getCoordinates(event) { - return _msieVersion && insideIFrame ? { x : event.screenX , y : event.screenY } : COMPATIBILITY.page(event); + return _msieVersion && insideIFrame ? { x: event.screenX, y: event.screenY } : COMPATIBILITY.page(event); } - - addDestroyEventListener(_scrollbarCornerElement, _strMouseTouchDownEvent, function(event) { + + addDestroyEventListener(_scrollbarCornerElement, _strMouseTouchDownEvent, function (event) { if (onMouseTouchDownContinue(event) && !_resizeNone) { if (_mutationObserversConnected) { reconnectMutationObserver = true; @@ -5126,8 +5126,8 @@ mouseDownInvertedScale = getHostElementInvertedScale(); setupResponsiveEventListener(_documentElement, - [ _strSelectStartEvent, _strMouseTouchMoveEvent, _strMouseTouchUpEvent ], - [ documentOnSelectStart, documentDragMove, documentMouseTouchUp ]); + [_strSelectStartEvent, _strMouseTouchMoveEvent, _strMouseTouchUpEvent], + [documentOnSelectStart, documentDragMove, documentMouseTouchUp]); addClass(_bodyElement, _classNameDragging); if (_scrollbarCornerElement.setCapture) @@ -5148,25 +5148,25 @@ * @param args The args with which the callback shall be called. */ function dispatchCallback(name, args) { - if(_initialized) { + if (_initialized) { var callback = _currentPreparedOptions.callbacks[name]; var extensionOnName = name; var ext; - if(extensionOnName.substr(0, 2) === 'on') + if (extensionOnName.substr(0, 2) === 'on') extensionOnName = extensionOnName.substr(2, 1).toLowerCase() + extensionOnName.substr(3); - if(type(callback) == TYPES.f) + if (type(callback) == TYPES.f) callback.call(_base, args); - each(_extensions, function() { + each(_extensions, function () { ext = this; - if(type(ext.on) == TYPES.f) + if (type(ext.on) == TYPES.f) ext.on(extensionOnName, args); }); } - else if(!_destroyed) - _callbacksInitQeueue.push({ n : name, a : args }); + else if (!_destroyed) + _callbacksInitQeueue.push({ n: name, a: args }); } /** @@ -5194,19 +5194,19 @@ function getCSSTransitionString(element) { var transitionStr = VENDORS._cssProperty('transition'); var assembledValue = element.css(transitionStr); - if(assembledValue) + if (assembledValue) return assembledValue; var regExpString = '\\s*(' + '([^,(]+(\\(.+?\\))?)+' + ')[\\s,]*'; var regExpMain = new RegExp(regExpString); var regExpValidate = new RegExp('^(' + regExpString + ')+$'); var properties = 'property duration timing-function delay'.split(' '); - var result = [ ]; + var result = []; var strResult; var valueArray; var i = 0; var j; - var splitCssStyleByComma = function(str) { - strResult = [ ]; + var splitCssStyleByComma = function (str) { + strResult = []; if (!str.match(regExpValidate)) return str; while (str.match(regExpMain)) { @@ -5231,8 +5231,8 @@ function getHostElementInvertedScale() { var rect = _paddingElementNative[LEXICON.bCR](); return { - x : _supportTransform ? 1 / (MATH.round(rect.width) / _paddingElementNative[LEXICON.oW]) || 1 : 1, - y : _supportTransform ? 1 / (MATH.round(rect.height) / _paddingElementNative[LEXICON.oH]) || 1 : 1 + x: _supportTransform ? 1 / (MATH.round(rect.width) / _paddingElementNative[LEXICON.oW]) || 1 : 1, + y: _supportTransform ? 1 / (MATH.round(rect.height) / _paddingElementNative[LEXICON.oH]) || 1 : 1 }; } @@ -5247,7 +5247,7 @@ var wnd = o && o[strOwnerDocument] ? (o[strOwnerDocument].parentWindow || window) : window; return ( typeof wnd[strHTMLElement] == TYPES.o ? o instanceof wnd[strHTMLElement] : //DOM2 - o && typeof o == TYPES.o && o !== null && o.nodeType === 1 && typeof o.nodeName == TYPES.s + o && typeof o == TYPES.o && o !== null && o.nodeType === 1 && typeof o.nodeName == TYPES.s ); } @@ -5258,8 +5258,8 @@ * @returns {Array} The differences between the two arrays. */ function getArrayDifferences(a1, a2) { - var a = [ ]; - var diff = [ ]; + var a = []; + var diff = []; var i; var k; for (i = 0; i < a1.length; i++) @@ -5352,21 +5352,21 @@ function generateDiv(classesOrAttrs, content) { return '
' + (content || _strEmpty) + '
'; } - + /** * Selects or generates a div with the given class attribute. * @param className The class names (divided by spaces) of the div which shall be selected or generated. @@ -5377,14 +5377,14 @@ function selectOrGenerateDivByClass(className, selectParentOrOnlyChildren) { var onlyChildren = type(selectParentOrOnlyChildren) == TYPES.b; var selectParent = onlyChildren ? _hostElement : (selectParentOrOnlyChildren || _hostElement); - - return (_domExists && !selectParent[LEXICON.l]) + + return (_domExists && !selectParent[LEXICON.l]) ? null - : _domExists + : _domExists ? selectParent[onlyChildren ? 'children' : 'find'](_strDot + className.replace(/\s/g, _strDot)).eq(0) : FRAMEWORK(generateDiv(className)) } - + /** * Gets the value of the given property from the given object. * @param obj The object from which the property value shall be got. @@ -5395,11 +5395,11 @@ var splits = path.split(_strDot); var i = 0; var val; - for(; i < splits.length; i++) { - if(!obj[LEXICON.hOP](splits[i])) + for (; i < splits.length; i++) { + if (!obj[LEXICON.hOP](splits[i])) return; val = obj[splits[i]]; - if(i < splits.length && type(val) == TYPES.o) + if (i < splits.length && type(val) == TYPES.o) obj = val; } return val; @@ -5415,10 +5415,10 @@ var splits = path.split(_strDot); var splitsLength = splits.length; var i = 0; - var extendObj = { }; + var extendObj = {}; var extendObjRoot = extendObj; - for(; i < splitsLength; i++) - extendObj = extendObj[splits[i]] = i + 1 < splitsLength ? { } : val; + for (; i < splitsLength; i++) + extendObj = extendObj[splits[i]] = i + 1 < splitsLength ? {} : val; FRAMEWORK.extend(obj, extendObjRoot, true); } @@ -5435,11 +5435,11 @@ function checkCache(current, cache, force) { if (force) return force; - if(type(current) == TYPES.o && type(cache) == TYPES.o) { + if (type(current) == TYPES.o && type(cache) == TYPES.o) { for (var prop in current) { - if(prop !== 'c') { + if (prop !== 'c') { if (current[LEXICON.hOP](prop) && cache[LEXICON.hOP](prop)) { - if(checkCache(current[prop], cache[prop])) + if (checkCache(current[prop], cache[prop])) return true; } else { @@ -5461,7 +5461,7 @@ * jQuery extend method shortcut with a appended "true" as first argument. */ function extendDeep() { - return FRAMEWORK.extend.apply(this, [ true ].concat([].slice.call(arguments))); + return FRAMEWORK.extend.apply(this, [true].concat([].slice.call(arguments))); } /** @@ -5520,9 +5520,9 @@ * undefined otherwise. */ _base.update = function (force) { - if(_destroyed) + if (_destroyed) return; - + var attrsChanged; var contentSizeC; var isString = type(force) == TYPES.s; @@ -5531,21 +5531,21 @@ var doUpdateAuto; var mutHost; var mutContent; - - if(isString) { + + if (isString) { if (force === _strAuto) { attrsChanged = meaningfulAttrsChanged(); contentSizeC = updateAutoContentSizeChanged(); doUpdateAuto = attrsChanged || contentSizeC; if (doUpdateAuto) { update({ - _contentSizeChanged : contentSizeC, - _changedOptions : _initialized ? undefined : _currentPreparedOptions + _contentSizeChanged: contentSizeC, + _changedOptions: _initialized ? undefined : _currentPreparedOptions }); } } else if (force === _strSync) { - if(_mutationObserversConnected) { + if (_mutationObserversConnected) { mutHost = _mutationObserverHostCallback(_mutationObserverHost.takeRecords()); mutContent = _mutationObserverContentCallback(_mutationObserverContent.takeRecords()); } @@ -5555,19 +5555,19 @@ } else if (force === 'zoom') { update({ - _hostSizeChanged : true, - _contentSizeChanged : true + _hostSizeChanged: true, + _contentSizeChanged: true }); } } else { force = _sleeping || force; _sleeping = false; - if(!_base.update(_strSync) || force) - update({ _force : force }); + if (!_base.update(_strSync) || force) + update({ _force: force }); } - if(!_isTextarea) { - _contentElement.find(imgElementSelector).each(function(i, el) { + if (!_isTextarea) { + _contentElement.find(imgElementSelector).each(function (i, el) { var index = COMPATIBILITY.inA(el, _imgs); if (index === -1) FRAMEWORK(el).off(imgElementLoadEvent, imgOnLoad).on(imgElementLoadEvent, imgOnLoad); @@ -5583,9 +5583,9 @@ * @returns {*} */ _base.options = function (newOptions, value) { - var option = { }; + var option = {}; var changedOps; - + //return current options if newOptions are undefined or empty if (FRAMEWORK.isEmptyObject(newOptions) || !FRAMEWORK.isPlainObject(newOptions)) { if (type(newOptions) == TYPES.s) { @@ -5602,19 +5602,19 @@ else { changedOps = setOptions(newOptions); } - - if(!FRAMEWORK.isEmptyObject(changedOps)) { - update({ _changedOptions : changedOps }); - } + + if (!FRAMEWORK.isEmptyObject(changedOps)) { + update({ _changedOptions: changedOps }); + } }; /** * Restore the DOM, disconnects all observers, remove all resize observers and put the instance to sleep. */ _base.destroy = function () { - if(_destroyed) + if (_destroyed) return; - + //remove this instance from auto update loop autoUpdateLoop.remove(_base); @@ -5626,11 +5626,11 @@ setupResizeObserver(_sizeAutoObserverElement); //remove all extensions - for(var extName in _extensions) + for (var extName in _extensions) _base.removeExt(extName); //remove all 'destroy' events - while(_destroyEvents[LEXICON.l] > 0) + while (_destroyEvents[LEXICON.l] > 0) _destroyEvents.pop()(); //remove all events from host element @@ -5650,7 +5650,7 @@ setupStructureDOM(true); //remove all generated image load events - for(var i = 0; i < _imgs[LEXICON.l]; i++) + for (var i = 0; i < _imgs[LEXICON.l]; i++) FRAMEWORK(_imgs[i]).off('load', imgOnLoad); _imgs = undefined; @@ -5751,45 +5751,45 @@ maxScrollX *= normalizeNegate ? -1 : 1; return { - position : { - x : scrollX, - y : infoY._currentScroll + position: { + x: scrollX, + y: infoY._currentScroll }, - ratio : { - x : scrollXRatio, - y : infoY._currentScrollRatio + ratio: { + x: scrollXRatio, + y: infoY._currentScrollRatio }, - max : { - x : maxScrollX, - y : infoY._maxScroll + max: { + x: maxScrollX, + y: infoY._maxScroll }, - handleOffset : { - x : infoX._handleOffset, - y : infoY._handleOffset + handleOffset: { + x: infoX._handleOffset, + y: infoY._handleOffset }, - handleLength : { - x : infoX._handleLength, - y : infoY._handleLength + handleLength: { + x: infoX._handleLength, + y: infoY._handleLength }, - handleLengthRatio : { - x : infoX._handleLengthRatio, - y : infoY._handleLengthRatio + handleLengthRatio: { + x: infoX._handleLengthRatio, + y: infoY._handleLengthRatio }, - trackLength : { - x : infoX._trackLength, - y : infoY._trackLength + trackLength: { + x: infoX._trackLength, + y: infoY._trackLength }, - snappedHandleOffset : { - x : infoX._snappedHandleOffset, - y : infoY._snappedHandleOffset + snappedHandleOffset: { + x: infoX._snappedHandleOffset, + y: infoY._snappedHandleOffset }, isRTL: _isRTL, isRTLNormalized: _normalizeRTLCache }; } - + _base.update(_strSync); - + var normalizeRTL = _normalizeRTLCache; var coordinatesXAxisProps = [_strX, _strLeft, 'l']; var coordinatesYAxisProps = [_strY, _strTop, 't']; @@ -5797,7 +5797,7 @@ var durationIsObject = type(duration) == TYPES.o; var completeCallback = durationIsObject ? duration.complete : complete; var i; - var finalScroll = { }; + var finalScroll = {}; var specialEasing = {}; var doScrollLeft; var doScrollTop; @@ -5822,10 +5822,10 @@ var possibleElement = coordinatesIsElementObj ? coordinates.el : coordinates; var possibleElementIsJQuery = possibleElement instanceof FRAMEWORK || JQUERY ? possibleElement instanceof JQUERY : false; var possibleElementIsHTMLElement = possibleElementIsJQuery ? false : isHTMLElement(possibleElement); - var proxyCompleteCallback = type(completeCallback) != TYPES.f ? undefined : function() { - if(doScrollLeft) + var proxyCompleteCallback = type(completeCallback) != TYPES.f ? undefined : function () { + if (doScrollLeft) refreshScrollbarHandleOffset(true); - if(doScrollTop) + if (doScrollTop) refreshScrollbarHandleOffset(false); completeCallback(); }; @@ -5838,7 +5838,7 @@ } function getRawScroll(isX, coordinates) { var coordinateProps = isX ? coordinatesXAxisProps : coordinatesYAxisProps; - coordinates = type(coordinates) == TYPES.s || type(coordinates) == TYPES.n ? [ coordinates, coordinates ] : coordinates; + coordinates = type(coordinates) == TYPES.s || type(coordinates) == TYPES.n ? [coordinates, coordinates] : coordinates; if (type(coordinates) == TYPES.a) return isX ? coordinates[0] : coordinates[1]; @@ -5868,7 +5868,7 @@ //check operator if (rawScroll[strLength] > 2) { possibleOperator = rawScroll.substr(0, 2); - if(inArray(possibleOperator, coordinatesOperators) > -1) + if (inArray(possibleOperator, coordinatesOperators) > -1) operator = possibleOperator; } @@ -5919,7 +5919,7 @@ return finalValue === currScroll ? undefined : finalValue; } function getPerAxisValue(value, valueInternalType, defaultValue, allowedValues) { - var resultDefault = [ defaultValue, defaultValue ]; + var resultDefault = [defaultValue, defaultValue]; var valueType = type(value); var valueArrLength; var valueArrItem; @@ -5945,22 +5945,22 @@ } } else if (valueType == TYPES.o) - value = [ value[_strX]|| defaultValue, value[_strY] || defaultValue]; + value = [value[_strX] || defaultValue, value[_strY] || defaultValue]; else value = resultDefault; - return { x : value[0], y : value[1] }; + return { x: value[0], y: value[1] }; } function generateMargin(marginTopRightBottomLeftArray) { - var result = [ ]; + var result = []; var currValue; var currValueType; - var valueDirections = [ _strTop, _strRight, _strBottom, _strLeft ]; - for(i = 0; i < marginTopRightBottomLeftArray[strLength]; i++) { - if(i === valueDirections[strLength]) + var valueDirections = [_strTop, _strRight, _strBottom, _strLeft]; + for (i = 0; i < marginTopRightBottomLeftArray[strLength]; i++) { + if (i === valueDirections[strLength]) break; currValue = marginTopRightBottomLeftArray[i]; currValueType = type(currValue); - if(currValueType == TYPES.b) + if (currValueType == TYPES.b) result.push(currValue ? parseToZeroOrNumber(finalElement.css(_strMarginMinus + valueDirections[i])) : 0); else result.push(currValueType == TYPES.n ? currValue : 0); @@ -5974,20 +5974,20 @@ var axis = coordinatesIsElementObj ? coordinates.axis : 0; var scroll = coordinatesIsElementObj ? coordinates.scroll : 0; var block = coordinatesIsElementObj ? coordinates.block : 0; - var marginDefault = [ 0, 0, 0, 0 ]; + var marginDefault = [0, 0, 0, 0]; var marginType = type(margin); var marginLength; finalElement = possibleElementIsJQuery ? possibleElement : FRAMEWORK(possibleElement); - + if (finalElement[strLength] > 0) { //margin can be [ boolean, number, array of 2, array of 4, object ] if (marginType == TYPES.n || marginType == TYPES.b) margin = generateMargin([margin, margin, margin, margin]); else if (marginType == TYPES.a) { marginLength = margin[strLength]; - if(marginLength === 2) + if (marginLength === 2) margin = generateMargin([margin[0], margin[1], margin[0], margin[1]]); - else if(marginLength >= 4) + else if (marginLength >= 4) margin = generateMargin(margin); else margin = marginDefault; @@ -6013,8 +6013,8 @@ //get coordinates var elementOffset = finalElement.offset(); var doNotScroll = { - x : settingsScroll.x == strNever || settingsAxis == _strY, - y : settingsScroll.y == strNever || settingsAxis == _strX + x: settingsScroll.x == strNever || settingsAxis == _strY, + y: settingsScroll.y == strNever || settingsAxis == _strX }; elementOffset[_strTop] -= settingsMargin[0]; elementOffset[_strLeft] -= settingsMargin[3]; @@ -6035,14 +6035,14 @@ if (settingsBlock.x != strBegin || settingsBlock.y != strBegin || settingsScroll.x == strIfNeeded || settingsScroll.y == strIfNeeded || _isRTL) { var measuringElm = finalElement[0]; var rawElementSize = _supportTransform ? measuringElm[LEXICON.bCR]() : { - width : measuringElm[LEXICON.oW], - height : measuringElm[LEXICON.oH] + width: measuringElm[LEXICON.oW], + height: measuringElm[LEXICON.oH] }; var elementSize = { w: rawElementSize[_strWidth] + settingsMargin[3] + settingsMargin[1], h: rawElementSize[_strHeight] + settingsMargin[0] + settingsMargin[2] }; - var finalizeBlock = function(isX) { + var finalizeBlock = function (isX) { var vars = getScrollbarVars(isX); var wh = vars._w_h; var lt = vars._left_top; @@ -6064,9 +6064,9 @@ && elOffset >= vpOffset && elOffset + elSize <= vpOffset + vpSize; - if(scrollNever) + if (scrollNever) doNotScroll[xy] = true; - else if(!doNotScroll[xy]) { + else if (!doNotScroll[xy]) { if (blockIsNearest || scrollIfNeeded) { doNotScroll[xy] = scrollIfNeeded ? isInView : false; blockIsEnd = elSize < vpSize ? elementCenterOffset > viewportCenterOffset : elementCenterOffset < viewportCenterOffset; @@ -6191,7 +6191,7 @@ contentScrollSize: prepare(_contentScrollSizeCache), viewportSize: prepare(_viewportSize), hostSize: prepare(_hostSizeCache), - documentMixed : prepare(_documentMixed) + documentMixed: prepare(_documentMixed) }; return type(stateProperty) == TYPES.s ? getObjectPropVal(obj, stateProperty) : obj; }; @@ -6201,21 +6201,21 @@ * @param extName The name of the extension from which the instance shall be got. * @returns {{}} The instance of the extension with the given name or undefined if the instance couldn't be found. */ - _base.ext = function(extName) { + _base.ext = function (extName) { var result; var privateMethods = _extensionsPrivateMethods.split(' '); var i = 0; - if(type(extName) == TYPES.s) { - if(_extensions[LEXICON.hOP](extName)) { + if (type(extName) == TYPES.s) { + if (_extensions[LEXICON.hOP](extName)) { result = extendDeep({}, _extensions[extName]); for (; i < privateMethods.length; i++) delete result[privateMethods[i]]; } } else { - result = { }; - for(i in _extensions) - result[i] = extendDeep({ }, _base.ext(i)); + result = {}; + for (i in _extensions) + result[i] = extendDeep({}, _base.ext(i)); } return result; }; @@ -6226,17 +6226,17 @@ * @param extensionOptions The extension options which shall be used. * @returns {{}} The instance of the added extension or undefined if the extension couldn't be added properly. */ - _base.addExt = function(extName, extensionOptions) { + _base.addExt = function (extName, extensionOptions) { var registeredExtensionObj = _plugin.extension(extName); var instance; var instanceAdded; var instanceContract; var contractResult; var contractFulfilled = true; - if(registeredExtensionObj) { - if(!_extensions[LEXICON.hOP](extName)) { + if (registeredExtensionObj) { + if (!_extensions[LEXICON.hOP](extName)) { instance = registeredExtensionObj.extensionFactory.call(_base, - extendDeep({ }, registeredExtensionObj.defaultOptions), + extendDeep({}, registeredExtensionObj.defaultOptions), FRAMEWORK, COMPATIBILITY); @@ -6246,10 +6246,10 @@ contractResult = instanceContract(window); contractFulfilled = type(contractResult) == TYPES.b ? contractResult : contractFulfilled; } - if(contractFulfilled) { + if (contractFulfilled) { _extensions[extName] = instance; instanceAdded = instance.added; - if(type(instanceAdded) == TYPES.f) + if (type(instanceAdded) == TYPES.f) instanceAdded(extensionOptions); return _base.ext(extName); @@ -6268,14 +6268,14 @@ * @param extName The name of the extension which shall be removed. * @returns {boolean} True if the extension was removed, false otherwise e.g. if the extension wasn't added before. */ - _base.removeExt = function(extName) { + _base.removeExt = function (extName) { var instance = _extensions[extName]; var instanceRemoved; - if(instance) { + if (instance) { delete _extensions[extName]; instanceRemoved = instance.removed; - if(type(instanceRemoved) == TYPES.f) + if (type(instanceRemoved) == TYPES.f) instanceRemoved(); return true; @@ -6299,7 +6299,7 @@ _rtlScrollBehavior = extendDeep({}, globals.rtlScrollBehavior); //parse & set options but don't update - setOptions(extendDeep({ }, _defaultOptions, options)); + setOptions(extendDeep({}, _defaultOptions, options)); _cssCalc = globals.cssCalc; _msieVersion = globals.msie; @@ -6315,7 +6315,7 @@ _windowElement = FRAMEWORK(_documentElementNative.defaultView || _documentElementNative.parentWindow); _windowElementNative = _windowElement[0]; _htmlElement = findFirst(_documentElement, 'html'); - _bodyElement = findFirst(_htmlElement, 'body'); + _bodyElement = findFirst(_htmlElement, 'body'); _targetElement = FRAMEWORK(targetElement); _targetElementNative = _targetElement[0]; _isTextarea = _targetElement.is('textarea'); @@ -6381,7 +6381,7 @@ *
* */ - _domExists = _isTextarea + _domExists = _isTextarea ? _targetElement.hasClass(_classNameTextareaElement) && _targetElement.parent().hasClass(_classNameContentElement) : _targetElement.hasClass(_classNameHostElement) && _targetElement.children(_strDot + _classNamePaddingElement)[LEXICON.l]; @@ -6391,15 +6391,15 @@ //check if the plugin hasn't to be initialized if (_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y && !_currentPreparedOptions.nativeScrollbarsOverlaid.initialize) { dispatchCallback('onInitializationWithdrawn'); - if(_domExists) { + if (_domExists) { setupStructureDOM(true); setupScrollbarsDOM(true); setupScrollbarCornerDOM(true); } - + _destroyed = true; _sleeping = true; - + return _base; } @@ -6407,8 +6407,8 @@ initBodyScroll = {}; initBodyScroll.l = MATH.max(_targetElement[_strScrollLeft](), _htmlElement[_strScrollLeft](), _windowElement[_strScrollLeft]()); initBodyScroll.t = MATH.max(_targetElement[_strScrollTop](), _htmlElement[_strScrollTop](), _windowElement[_strScrollTop]()); - - bodyMouseTouchDownListener = function() { + + bodyMouseTouchDownListener = function () { _viewportElement.removeAttr('tabindex'); setupResponsiveEventListener(_viewportElement, _strMouseTouchDownEvent, bodyMouseTouchDownListener, true, true); } @@ -6418,7 +6418,7 @@ setupStructureDOM(); setupScrollbarsDOM(); setupScrollbarCornerDOM(); - + //create OverlayScrollbars events setupStructureEvents(); setupScrollbarEvents(true); @@ -6431,16 +6431,16 @@ //build resize observer for the host element setupResizeObserver(_sizeObserverElement, hostOnResized); - if(_isBody) { + if (_isBody) { //apply the body scroll to handle it right in the update method _viewportElement[_strScrollLeft](initBodyScroll.l)[_strScrollTop](initBodyScroll.t); //set the focus on the viewport element so you dont have to click on the page to use keyboard keys (up / down / space) for scrolling - if(document.activeElement == targetElement && _viewportElementNative.focus) { + if (document.activeElement == targetElement && _viewportElementNative.focus) { //set a tabindex to make the viewportElement focusable _viewportElement.attr('tabindex', '-1'); _viewportElementNative.focus(); - + /* the tabindex has to be removed due to; * If you set the tabindex attribute on an
, then its child content cannot be scrolled with the arrow keys unless you set tabindex on the content, too * https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex @@ -6457,15 +6457,15 @@ dispatchCallback('onInitialized'); //call all callbacks which would fire before the initialized was complete - each(_callbacksInitQeueue, function(index, value) { dispatchCallback(value.n, value.a); }); - _callbacksInitQeueue = [ ]; + each(_callbacksInitQeueue, function (index, value) { dispatchCallback(value.n, value.a); }); + _callbacksInitQeueue = []; //add extensions - if(type(extensions) == TYPES.s) - extensions = [ extensions ]; - if(COMPATIBILITY.isA(extensions)) - each(extensions, function (index, value) {_base.addExt(value); }); - else if(FRAMEWORK.isPlainObject(extensions)) + if (type(extensions) == TYPES.s) + extensions = [extensions]; + if (COMPATIBILITY.isA(extensions)) + each(extensions, function (index, value) { _base.addExt(value); }); + else if (FRAMEWORK.isPlainObject(extensions)) each(extensions, function (key, value) { _base.addExt(key, value); }); //add the transition class for transitions AFTER the first update & AFTER the applied extensions (for preventing unwanted transitions) @@ -6477,10 +6477,10 @@ return _base; } - if(_plugin.valid(construct(pluginTargetElement, options, extensions))) { + if (_plugin.valid(construct(pluginTargetElement, options, extensions))) { INSTANCES(pluginTargetElement, _base); } - + return _base; } @@ -6491,17 +6491,17 @@ * @param extensions The extension(s) which shall be added right after initialization. * @returns {*} */ - _plugin = window[PLUGINNAME] = function(pluginTargetElements, options, extensions) { - if(arguments[LEXICON.l] === 0) + _plugin = window[PLUGINNAME] = function (pluginTargetElements, options, extensions) { + if (arguments[LEXICON.l] === 0) return this; - var arr = [ ]; + var arr = []; var optsIsPlainObj = FRAMEWORK.isPlainObject(options); var inst; var result; //pluginTargetElements is null or undefined - if(!pluginTargetElements) + if (!pluginTargetElements) return optsIsPlainObj || !options ? result : arr; /* @@ -6511,23 +6511,23 @@ 3. A Array with a single HTML Element so pluginTargetElements is always a array. */ - pluginTargetElements = pluginTargetElements[LEXICON.l] != undefined ? pluginTargetElements : [ pluginTargetElements[0] || pluginTargetElements ]; + pluginTargetElements = pluginTargetElements[LEXICON.l] != undefined ? pluginTargetElements : [pluginTargetElements[0] || pluginTargetElements]; initOverlayScrollbarsStatics(); - if(pluginTargetElements[LEXICON.l] > 0) { - if(optsIsPlainObj) { + if (pluginTargetElements[LEXICON.l] > 0) { + if (optsIsPlainObj) { FRAMEWORK.each(pluginTargetElements, function (i, v) { inst = v; - if(inst !== undefined) + if (inst !== undefined) arr.push(OverlayScrollbarsInstance(inst, options, extensions, _pluginsGlobals, _pluginsAutoUpdateLoop)); }); } else { - FRAMEWORK.each(pluginTargetElements, function(i, v) { + FRAMEWORK.each(pluginTargetElements, function (i, v) { inst = INSTANCES(v); - if((options === '!' && _plugin.valid(inst)) || (COMPATIBILITY.type(options) == TYPES.f && options(v, inst))) + if ((options === '!' && _plugin.valid(inst)) || (COMPATIBILITY.type(options) == TYPES.f && options(v, inst))) arr.push(inst); - else if(options === undefined) + else if (options === undefined) arr.push(inst); }); } @@ -6542,7 +6542,7 @@ */ _plugin.globals = function () { initOverlayScrollbarsStatics(); - var globals = FRAMEWORK.extend(true, { }, _pluginsGlobals); + var globals = FRAMEWORK.extend(true, {}, _pluginsGlobals); delete globals['msie']; return globals; }; @@ -6551,14 +6551,14 @@ * Gets or Sets the default options for each new plugin initialization. * @param newDefaultOptions The object with which the default options shall be extended. */ - _plugin.defaultOptions = function(newDefaultOptions) { + _plugin.defaultOptions = function (newDefaultOptions) { initOverlayScrollbarsStatics(); var currDefaultOptions = _pluginsGlobals.defaultOptions; - if(newDefaultOptions === undefined) - return FRAMEWORK.extend(true, { }, currDefaultOptions); + if (newDefaultOptions === undefined) + return FRAMEWORK.extend(true, {}, currDefaultOptions); //set the new default options - _pluginsGlobals.defaultOptions = FRAMEWORK.extend(true, { }, currDefaultOptions , _pluginsOptions._validate(newDefaultOptions, _pluginsOptions._template, true, currDefaultOptions)._default); + _pluginsGlobals.defaultOptions = FRAMEWORK.extend(true, {}, currDefaultOptions, _pluginsOptions._validate(newDefaultOptions, _pluginsOptions._template, true, currDefaultOptions)._default); }; /** @@ -6580,30 +6580,30 @@ * @param extension A function which generates the instance of the extension or anything other to remove a already registered extension. * @param defaultOptions The default options which shall be used for the registered extension. */ - _plugin.extension = function(extensionName, extension, defaultOptions) { + _plugin.extension = function (extensionName, extension, defaultOptions) { var extNameTypeString = COMPATIBILITY.type(extensionName) == TYPES.s; var argLen = arguments[LEXICON.l]; var i = 0; - if(argLen < 1 || !extNameTypeString) { + if (argLen < 1 || !extNameTypeString) { //return a copy of all extension objects - return FRAMEWORK.extend(true, { length : _pluginsExtensions[LEXICON.l] }, _pluginsExtensions); + return FRAMEWORK.extend(true, { length: _pluginsExtensions[LEXICON.l] }, _pluginsExtensions); } - else if(extNameTypeString) { - if(COMPATIBILITY.type(extension) == TYPES.f) { + else if (extNameTypeString) { + if (COMPATIBILITY.type(extension) == TYPES.f) { //register extension _pluginsExtensions.push({ - name : extensionName, - extensionFactory : extension, - defaultOptions : defaultOptions + name: extensionName, + extensionFactory: extension, + defaultOptions: defaultOptions }); } else { - for(; i < _pluginsExtensions[LEXICON.l]; i++) { + for (; i < _pluginsExtensions[LEXICON.l]; i++) { if (_pluginsExtensions[i].name === extensionName) { - if(argLen > 1) + if (argLen > 1) _pluginsExtensions.splice(i, 1); //remove extension else - return FRAMEWORK.extend(true, { }, _pluginsExtensions[i]); //return extension with the given name + return FRAMEWORK.extend(true, {}, _pluginsExtensions[i]); //return extension with the given name } } } @@ -6613,7 +6613,7 @@ return _plugin; })(); - if(JQUERY && JQUERY.fn) { + if (JQUERY && JQUERY.fn) { /** * The jQuery initialization interface. * @param options The initial options for the construction of the plugin. To initialize the plugin, this option has to be a object! If it isn't a object, the instance(s) are returned and the plugin wont be initialized. @@ -6622,8 +6622,8 @@ */ JQUERY.fn.overlayScrollbars = function (options, extensions) { var _elements = this; - if(JQUERY.isPlainObject(options)) { - JQUERY.each(_elements, function() { PLUGIN(this, options, extensions); }); + if (JQUERY.isPlainObject(options)) { + JQUERY.each(_elements, function () { PLUGIN(this, options, extensions); }); return _elements; } else diff --git a/js/OverlayScrollbars.min.js b/js/OverlayScrollbars.min.js index 0284b97..b6f984e 100644 --- a/js/OverlayScrollbars.min.js +++ b/js/OverlayScrollbars.min.js @@ -2,7 +2,7 @@ * OverlayScrollbars * https://github.com/KingSora/OverlayScrollbars * - * Version: 1.10.1 + * Version: 1.10.2 * * Copyright KingSora | Rene Haas. * https://github.com/KingSora @@ -10,4 +10,4 @@ * Released under the MIT license. * Date: 30.12.2019 */ -!function(n,t){"function"==typeof define&&define.amd?define(function(){return t(n,n.document,undefined)}):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(n,n.document,undefined):t(n,n.document,undefined)}("undefined"!=typeof window?window:this,function(bt,mt,yi){"use strict";var o,a,c,u,gt="object",wt="function",yt="array",xt="string",_t="boolean",Ot="number",f="undefined",n="null",St="class",xi="style",zt="id",_i="length",kt="prototype",Oi="offsetHeight",Si="clientHeight",zi="scrollHeight",ki="offsetWidth",Ci="clientWidth",Ii="scrollWidth",Ct="hasOwnProperty",Ti="getBoundingClientRect",It=(o={},a={},{e:c=["-webkit-","-moz-","-o-","-ms-"],u:u=["WebKit","Moz","O","MS"],v:function(n){var t=a[n];if(a[Ct](n))return t;for(var r,e,i,o=s(n),u=mt.createElement("div")[xi],f=0;f
'),o=S[0],e=Li(S.children("div").eq(0));O.append(S),S.hide().show();var t,r,u,f,a,c,s,l,v,h=z(o),d={x:0===h.x,y:0===h.y},p=(r=bt.navigator.userAgent,f="substring",a=r[u="indexOf"]("MSIE "),c=r[u]("Trident/"),s=r[u]("Edge/"),l=r[u]("rv:"),v=parseInt,0i&&(t.update("auto"),d[a]=new Date(o+=i)),n=Ei.max(1,Ei.min(n,i)));b=n}}else b=33};this.add=function(n){-1===e(n,h)&&(h.push(n),d.push(s()),0/g,(l?"-":Ie)+Ee)[v](/px/g,Ie)[v](/%/g," * "+c*(s&&Nt.n?-1:1)/100)[v](/vw/g," * "+de.w)[v](/vh/g," * "+de.h),hi(isNaN(t)?hi(h(t),!0).toFixed():t)):t)!==yi&&!isNaN(e)&&sn(e)==Ot){var d=y&&s,p=a*(d&&Nt.n?-1:1),b=d&&Nt.i,m=d&&Nt.n;switch(p=b?c-p:p,r){case"+=":i=p+e;break;case"-=":i=p-e;break;case"*=":i=p*e;break;case"/=":i=p/e;break;default:i=e}i=b?c-i:i,i*=m?-1:1,i=s&&Nt.n?Ei.min(0,Ei.max(c,i)):Ei.max(0,Ei.min(c,i))}return i===a?yi:i}function U(n,t,r,e){var i,o,u=[r,r],f=sn(n);if(f==t)n=[n,n];else if(f==yt){if(2<(i=n[H])||i<1)n=u;else for(1===i&&(n[1]=r),l=0;l=t.left&&n.clientX<=t.right&&n.clientY>=t.top&&n.clientY<=t.bottom||Kn(),(ue||fe)&&ui(!1)}}function L(n){i=ar[I](),i=isNaN(i)?0:i,(Jt&&_&&!Nt.n||!Jt)&&(i=i<0?0:i),z=at()[C],S=a(n),j=!c(u),gi(W,Mn),gi(r.an,o),gi(r["in"],o),qn(M,[X,q,J],[h,H,Zn]),!R&&w||Ai.prvD(n),Ai.stpP(n)}Xn(r.an,V,function d(n){E(n)&&L(n)}),Xn(r.un,[V,Y,$],[function N(n){if(E(n)){var h,d=Ei.round(de[r.j]),p=r.un.offset()[r.B],t=n.ctrlKey,b=n.shiftKey,m=b&&t,g=!0,w=function(n){j&&ai(_,n)},y=function(){w(),L(n)},x=function(){if(!Bt){var n=(S-p)*z,t=k.R,r=k.W,e=k.D,i=k.N,o=k.H,u=270*T,f=g?Ei.max(400,u):u,a=i*((n-e/2)/(r-e)),c=Jt&&_&&(!Nt.i&&!Nt.n||qr),s=c?t"+(n||Ie)+""}function lt(n,t){var r=sn(t)==_t,e=r?ir:t||ir;return v&&!e[_i]?null:v?e[r?"children":"find"](B+n.replace(/\s/g,B)).eq(0):Li(pi(n))}function vt(n,t){for(var r,e=t.split(B),i=0;i
'),o=S[0],e=Li(S.children("div").eq(0));O.append(S),S.hide().show();var t,r,u,f,a,c,s,l,v,h=z(o),d={x:0===h.x,y:0===h.y},p=(r=bt.navigator.userAgent,f="substring",a=r[u="indexOf"]("MSIE "),c=r[u]("Trident/"),s=r[u]("Edge/"),l=r[u]("rv:"),v=parseInt,0i&&(t.update("auto"),d[a]=new Date(o+=i)),n=Ei.max(1,Ei.min(n,i)));b=n}}else b=33};this.add=function(n){-1===e(n,h)&&(h.push(n),d.push(s()),0/g,(l?"-":Ie)+Ee)[v](/px/g,Ie)[v](/%/g," * "+c*(s&&Nt.n?-1:1)/100)[v](/vw/g," * "+de.w)[v](/vh/g," * "+de.h),hi(isNaN(t)?hi(h(t),!0).toFixed():t)):t)!==yi&&!isNaN(e)&&sn(e)==Ot){var d=y&&s,p=a*(d&&Nt.n?-1:1),b=d&&Nt.i,g=d&&Nt.n;switch(p=b?c-p:p,r){case"+=":i=p+e;break;case"-=":i=p-e;break;case"*=":i=p*e;break;case"/=":i=p/e;break;default:i=e}i=b?c-i:i,i*=g?-1:1,i=s&&Nt.n?Ei.min(0,Ei.max(c,i)):Ei.max(0,Ei.min(c,i))}return i===a?yi:i}function U(n,t,r,e){var i,o,u=[r,r],f=sn(n);if(f==t)n=[n,n];else if(f==yt){if(2<(i=n[H])||i<1)n=u;else for(1===i&&(n[1]=r),l=0;l=t.left&&n.clientX<=t.right&&n.clientY>=t.top&&n.clientY<=t.bottom||Kn(),(ue||fe)&&ui(!1)}}function L(n){i=ar[I](),i=isNaN(i)?0:i,(Jt&&_&&!Nt.n||!Jt)&&(i=i<0?0:i),z=at()[C],S=a(n),j=!c(u),mi(W,Mn),mi(r.an,o),mi(r["in"],o),qn(M,[X,q,J],[h,H,Zn]),!R&&w||Ai.prvD(n),Ai.stpP(n)}Xn(r.an,V,function d(n){E(n)&&L(n)}),Xn(r.un,[V,Y,$],[function N(n){if(E(n)){var h,d=Ei.round(de[r.j]),p=r.un.offset()[r.B],t=n.ctrlKey,b=n.shiftKey,g=b&&t,m=!0,w=function(n){j&&ai(_,n)},y=function(){w(),L(n)},x=function(){if(!Bt){var n=(S-p)*z,t=k.R,r=k.W,e=k.D,i=k.N,o=k.H,u=270*T,f=m?Ei.max(400,u):u,a=i*((n-e/2)/(r-e)),c=Jt&&_&&(!Nt.i&&!Nt.n||qr),s=c?t"+(n||Ie)+""}function lt(n,t){var r=sn(t)==_t,e=r?ir:t||ir;return v&&!e[_i]?null:v?e[r?"children":"find"](B+n.replace(/\s/g,B)).eq(0):Li(pi(n))}function vt(n,t){for(var r,e=t.split(B),i=0;i