Files
region-edoc/ИЭТР-тест/Develop/app/js/jquery.scroolly.min.js

1 line
12 KiB
JavaScript

!function(a,b){"use strict";return"function"==typeof define&&define.amd?void define(["jquery"],function(c){return b(a,c,!1)}):void b(a,a.jQuery||a.Zepto||a.ender||a.$,!0)}(this,function(a,b,c){"use strict";var d;return d={options:{timeout:null,meter:b(".scroolly"),body:document},theCSSPrefix:"",theDashedCSSPrefix:"",isMobile:!1,isInitialized:!1,animFrame:null,direction:0,scrollTop:0,scrollCenter:0,scrollBottom:0,docHeight:0,docMiddle:0,winHeight:b(window).height()},d.scrollLayout={},d._isObject=function(a){return"object"==typeof a},d._isArray=function(a){return a instanceof Array},d._isNumber=function(a){return a instanceof Number||"number"==typeof a},d._isString=function(a){return a instanceof String||"string"==typeof a},d._default=function(a,b,c){void 0===c&&(c=null);var e=(b+"").split(".");if(a&&(d._isObject(a)||d._isArray(a))){var f,g=a;for(var h in e){if(f=e[h],!d._isObject(g)&&!d._isArray(g)||void 0===g[f])return c;g=g[f]}return g}return c},d.parseCoords=function(a){var b=a.split(/\s*=\s*/),c=b[0]||"doc-top",e=d.parseCoord(c),f=b[1]||e.anchor,g=d.parseCoord(f);return[e,g]},d.parseCoord=function(a){var b=/((vp|doc|el|con)-)?(top|center|bottom)?/i,c="(\\+|-)?\\s*(\\d+)(\\%|vp|doc|el|con)?",d=new RegExp(c,"gi"),e=a.match(b),f=a.match(d);if(!e&&!f)return!1;var g=e[1]?e[2]:"vp",h=e[3]||"top",i=[];if(f){d=new RegExp(c,"i");for(var j,k,l,m,n,o=0;o<f.length;o++)j=f[o],k=j.match(d),l=k[1]&&"-"===k[1]?-1:1,m=k[2]&&parseInt(k[2])*l||0,n="px",k[3]&&(n="%"===k[3]?g:k[3]),i.push({offset:m,subject:n})}return{original:a,subject:g,anchor:h,offsets:i}},d.calculateCoord=function(a,b,c){d._isString(a)&&(a=d.parseCoord(a));var e=0;if("vp"===a.subject)switch(a.anchor){case"top":e=d.scrollTop;break;case"center":e=d.scrollCenter;break;case"bottom":e=d.scrollBottom}else if("doc"===a.subject)switch(a.anchor){case"top":e=0;break;case"center":e=d.docMiddle;break;case"bottom":e=d.docHeight}else{var f="con"===a.subject?c:b,g=f.outerHeight(),h=f.offset().top,i=h+g,j=h+Math.floor(g/2);switch(a.anchor){case"top":e=h;break;case"center":e=j;break;case"bottom":e=i}}var k,l,m,n;for(k=0;k<a.offsets.length;k++){if(l=a.offsets[k],m=l.offset,"px"!==l.subject){switch(n=0,l.subject){case"vp":n=d.winHeight;break;case"doc":n=d.docHeight;break;case"el":n=b.outerHeight();break;case"con":n=c.outerHeight()}m=Math.ceil(l.offset/100*n)}e+=m}return e},d.cmpCoords=function(a,b,c){return d.calculateCoord(a[0],b,c)-d.calculateCoord(a[1],b,c)},d.isRuleInActiveWidthRange=function(a){var c,e,f,g=d._default(a,"minWidth",0),h=d._default(a,"maxWidth","infinity"),i=d._default(d.options,"meter"),j=b(window).width();return i.length?(c=i.length?parseInt(i.css("min-width")):0,e=i.length?i.css("max-width"):"none",e="none"===e?"infinity":parseInt(e),f=c>=g&&("infinity"===h||h>=e)):j>g&&("infinity"===h||h>=j)},d.isRuleActive=function(a,b,c){var e=d.isRuleInActiveWidthRange(a);if(!e)return!1;var f=d._default(a,"direction",0),g=d.direction;if(f&&(f>0&&0>g||0>f&&g>=0))return!1;var h=d._default(a,"from","0"),i=d._default(a,"to","finish"),j=d.cmpCoords(h,b,c);if(j>0)return!1;var k=d.cmpCoords(i,b,c);return 0>=k?!1:{offset:-j,length:k-j}},d.getScrollLayoutLength=function(){return Object.keys?Object.keys(d.scrollLayout).length:b.map(d.scrollLayout,function(){return 1}).length},d.addItem=function(a,c,e,f){if(!c.length)return!1;f=f||"self";var g,h,i,j,k,l,m;m=function(a,b,c,e){var f,g,h=b/c,i=d._default(e,"cssFrom"),j=d._default(e,"cssTo"),k={};for(var l in i)f=i[l],g=d._default(j,l,f),k[l]=d.getTransitionValue(f,g,h);a.css(d.extendCssWithPrefix(k))};for(var n in e)g=e[n],h=!f,i=d._default(g,"from","doc-top"),(d._isString(i)||d._isNumber(i))&&(i=d.parseCoords(""+i),g.from=i),j=d._default(g,"to","doc-bottom"),(d._isString(j)||d._isNumber(j))&&(j=d.parseCoords(""+j),g.to=j),k=d._default(g,"cssFrom"),l=d._default(g,"cssTo"),k&&l&&(g.cssOnScroll=m);if(c.length>1)return c.each(function(c){for(var g,h,i=[],j=null,k=0;k<e.length;k++)g=e[k],h={},b.extend(h,g),i.push(h);f&&(j="self"===f?f:f.length>1&&c<f.length?b(f[c]):f),d.addItem(a+"-"+c,b(this),i,j)}),!0;var o=d._default(d.scrollLayout,a);return o?o.rules.concat(e):d.scrollLayout[a]={element:c,container:f,rules:e},!0},d.factory=function(a,b,c,e){return d.init(),a.length&&b?(e=e||a[0].tagName+"_"+d.getScrollLayoutLength(),void d.addItem(e,a,b,c,!1)):!1},d.stickItem=function(a,b,c){d.stickItemXY(a,b,c instanceof Array?c:[c])},d.stickItemXY=function(a,c,e){e=e||[];var f,g,h,i,j,k,l,m,n=[];for(var o in e)f=e[o],g=d._default(f,"$bottomContainer",b("body")),h=d._default(f,"mode"),i=d._default(f,"offsetTop",0),j=d._default(f,"offsetBottom",0),k=d._default(f,"minWidth",0),l=d._default(f,"maxWidth","infinity"),m=d._default(f,"static",!1),"next"===g?(h=h||"margin",g=b(c).next()):"parent"!==g&&g||(h=h||"padding",g=b(c).parent()),m?n.push({source:"sticky",alias:"static",minWidth:k,maxWidth:l,bottomContainer:g}):(n.push({source:"sticky",alias:"top",minWidth:k,maxWidth:l,offsetTop:i,offsetBottom:j,bottomContainer:g,mode:h}),n.push({source:"sticky",alias:"fixed",minWidth:k,maxWidth:l,offsetTop:i,offsetBottom:j,bottomContainer:g,mode:h}),n.push({source:"sticky",alias:"bottom",minWidth:k,maxWidth:l,offsetTop:i,offsetBottom:j,bottomContainer:g,mode:h}));d.addItem(a,b(c),n)},d.processStickyItemRange=function(a,c){c=c||{};var e=d._default(c,"bottomContainer",b("body")),f=(d._default(c,"mode"),d._default(c,"offsetTop",0)),g=d._default(c,"offsetBottom",0),h=parseInt(a.css("margin-top"))+a.height()+parseInt(a.css("margin-bottom"));"border-box"===a.css("box-sizing")&&(h+=parseInt(a.css("padding-top"))+parseInt(a.css("padding-bottom")));var i=parseInt(e.css("margin-top"))+e.height()+parseInt(e.css("margin-bottom"));"border-box"===e.css("box-sizing")&&(i+=parseInt(e.css("padding-top"))+parseInt(e.css("padding-bottom")));var j=Math.round(a.offset().top-parseInt(a.css("margin-top"))),k=Math.round(e.offset().top+(i-h-g));switch(c.alias){case"top":c.from=0,c.to=j-f,c.css={position:"absolute",top:j+"px"},c.itemHeight=h;break;case"fixed":c.from=j-f,c.to=k,c.css={position:"fixed",top:f+"px"},c.itemHeight=h;break;case"bottom":c.from=k,c.css={position:"absolute",top:k+f+"px"},c.itemHeight=h;break;case"static":c.from=0,c.css={position:"",top:""},c.itemHeight=0}return c},d.onResize=function(){d.winHeight=b(window).height(),d.docHeight=d.body.height(),d.docMiddle=Math.floor(d.docHeight/2);var a=!1;for(var c in d.scrollLayout){var e,f,g,h=d.scrollLayout[c];for(var i in h.rules)e=h.rules[i],f=d.isRuleInActiveWidthRange(e),a|=f,f&&void 0===e.from&&(b(h.element).css("position",""),b(h.element).css("top",""),e.bottomContainer&&e.bottomContainer.css("margin-top",""),g=d._default(e,"source"),"sticky"===g&&(h.rules[i]=d.processStickyItemRange(h.element,e)))}return a&&(d.scrollLayout=d.scrollLayout,setTimeout(function(){d.onScroll(!0)},0)),!0},d.getProgress=function(a,b){var c=a/b;return{offset:a,length:b,relative:c,left:b-a,leftRelative:1-c}},d.getTransitionFloatValue=function(a,b,c){return 0>=c?a:c>=1?b:a+(b-a)*c},d.getTransitionIntValue=function(a,b,c){return Math.round(d.getTransitionFloatValue(a,b,c))},d.hashColor2rgb=function(a){var b=a.match(/^#([0-9a-f]{3})$/i);return b?[17*parseInt(b[1].charAt(0),16),17*parseInt(b[1].charAt(1),16),17*parseInt(b[1].charAt(2),16)]:(b=a.match(/^#([0-9a-f]{6})$/i))?[parseInt(b[1].substr(0,2),16),parseInt(b[1].substr(2,2),16),parseInt(b[1].substr(4,2),16)]:[0,0,0]},d.rgb2HashColor=function(a,b,c){var d,e,f="#";for(var g in arguments)d=arguments[g],e=d.toString(16),16>d&&(e="0"+e),f+=e;return f},d.getTransitionColorValue=function(a,b,c){if(0>=c)return a;if(c>=1)return b;var e=d.hashColor2rgb(a),f=d.hashColor2rgb(b),g=d.getTransitionIntValue(e[0],f[0],c),h=d.getTransitionIntValue(e[1],f[1],c),i=d.getTransitionIntValue(e[2],f[2],c);return d.rgb2HashColor(g,h,i)},d.getTransitionValue=function(a,b,c){if(0>=c)return a;if(c>=1)return b;var e=0;if(d._isNumber(a)&&d._isNumber(b))return d.getTransitionFloatValue(a,b,c);var f=/(\d*\.\d+)|(\d+)|(#[0-9a-f]{6})|(#[0-9a-f]{3})/gi,g=(""+b).match(f);return(""+a).replace(f,function(a,b,f,h,i){var j=g[e];return e++,f&&f.length?/\d*\.\d+/.test(j)?d.getTransitionFloatValue(parseFloat(a),parseFloat(j),c):d.getTransitionIntValue(parseInt(a),parseInt(j),c):b&&b.length?d.getTransitionFloatValue(parseFloat(a),parseFloat(j),c):h&&h.length||i&&i.length?d.getTransitionColorValue(a,j,c):a})},d.onScroll=function(a){var b=d.body.scrollTop();if(!a&&b===d.scrollTop)return!1;var c=d.scrollTop,e=d.direction;d.scrollTop=b,d.scrollBottom=b+d.winHeight,d.scrollCenter=b+Math.floor(d.winHeight/2),d.direction=b-c;var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v=!(d.direction===e||d.direction<0&&0>e||d.direction>0&&e>0);for(k in d.scrollLayout){for(f=d.scrollLayout[k],g=f.rules.length,h=[],i=[],j=[],l=0;g>l;l++)o=f.rules[l],p=d._default(o,"minWidth",0),q=d._default(o,"maxWidth","infinity"),r="self"===f.container?f.element:f.container,o.checkin=d.isRuleActive(o,f.element,r),o["class"]=o["class"]||"scroll-pos-"+o.alias+" window-width-"+p+"-to-"+q,o.checkin?(j.push(l),o.isActive||(o.isActive=!0,h.push(l))):o.isActive&&(o.isActive=!1,i.push(l)),f.rules[l]=o;for(n=0;n<i.length;n++)l=i[n],o=f.rules[l],f.element.removeClass(o["class"]),o.cssOnScroll&&(m=o.length||0,o.cssOnScroll(f.element,b>c?m:0,m,o)),o.onScroll&&(m=o.length||0,o.onScroll(f.element,b>c?m:0,m,o)),o.onCheckOut&&o.onCheckOut(f.element,o),o.onTopOut&&c>b?o.onTopOut(f.element,o):o.onBottomOut&&b>c&&o.onBottomOut(f.element,o);for(n=0;n<h.length;n++)l=h[n],o=f.rules[l],o.css&&f.element.css(d.extendCssWithPrefix(o.css)),o.addClass&&f.element.addClass(o.addClass),o.removeClass&&f.element.removeClass(o.removeClass),f.element.addClass(o["class"]),s=d._default(o,"bottomContainer"),t=d._default(o,"mode"),u=d._default(o,"itemHeight"),s&&t&&u&&s.css(t+"-top",u+"px"),o.onCheckIn&&o.onCheckIn(f.element,o),o.onTopIn&&b>c?o.onTopIn(f.element,o):o.onBottomIn&&c>b&&o.onBottomIn(f.element,o),o.length=o.checkin.length;for(n=0;n<j.length;n++)l=j[n],o=f.rules[l],o.cssOnScroll&&o.cssOnScroll(f.element,o.checkin.offset,o.checkin.length,o),o.onScroll&&o.onScroll(f.element,o.checkin.offset,o.checkin.length,o),v&&o.onDirectionChanged&&o.onDirectionChanged(f.element,d.direction,o);d.scrollLayout[k]=f}},d.detectCSSPrefix=function(){var a=/^(?:O|Moz|webkit|ms)|(?:-(?:o|moz|webkit|ms)-)/;if(window.getComputedStyle){var b=window.getComputedStyle(document.body,null);for(var c in b)if(d.theCSSPrefix=c.match(a)||+c===c&&b[c].match(a),d.theCSSPrefix)break;if(!d.theCSSPrefix)return void(d.theCSSPrefix=d.theDashedCSSPrefix="");d.theCSSPrefix=d.theCSSPrefix[0],"-"===d.theCSSPrefix.slice(0,1)?(d.theDashedCSSPrefix=d.theCSSPrefix,d.theCSSPrefix={"-webkit-":"webkit","-moz-":"Moz","-ms-":"ms","-o-":"O"}[d.theCSSPrefix]):d.theDashedCSSPrefix="-"+d.theCSSPrefix.toLowerCase()+"-"}},d.cssPrefix=function(a){return d.theDashedCSSPrefix+a},d.extendCssWithPrefix=function(a){var c,e,f,g,h,i={};for(c in a)e=/^-(moz-|webkit-|o-|ms-)?/i,f=c.match(e),g=c.slice(1),f&&!f[1]&&(h=a[c],i[g]=h,i[d.cssPrefix(g)]=h,delete a[c]);return b.extend(a,i),a},d.now=Date.now||function(){return+new Date},d.getRAF=function(){var a=window.requestAnimationFrame||window[d.theCSSPrefix.toLowerCase()+"RequestAnimationFrame"],b=d.now();return a||(a=function(a){var c=d.now()-b,e=Math.max(0,1e3/60-c);return window.setTimeout(function(){b=d.now(),a()},e)}),a},d.getCAF=function(){var a=window.cancelAnimationFrame||window[d.theCSSPrefix.toLowerCase()+"CancelAnimationFrame"];return(d.isMobile||!a)&&(a=function(a){return window.clearTimeout(a)}),a},d.animLoop=function(){d.onScroll(),d.animFrame=window.requestAnimFrame(d.animLoop)},d.init=function(a){return d.isInitialized?!1:(b.extend(d.options,a),d.isMobile=d._default(d.options,"isMobile",/Android|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent||navigator.vendor||window.opera)),d.detectCSSPrefix(),d.body=b(d.options.body),window.requestAnimFrame=d.getRAF(),window.cancelAnimFrame=d.getCAF(),d.timesCalled=0,b(document).ready(function(){b(window).resize(d.onResize).resize(),d.animLoop()}),void(d.isInitialized=!0))},d.destroy=function(){window.cancelAnimFrame(d.animFrame)},d.factorySticky=function(a,b,c){return c=c||a[0].tagName+"_"+d.getScrollLayoutLength(),d.stickItemXY(c,a,b instanceof Array?b:[b])?c:!1},c&&(b.scroolly=d,b.fn.scroolly=function(a,b,c){return d.factory(this,a,b,c),this},b.fn.scroollySticky=function(a,b){return d.init(),this.length?d.factorySticky(this,a,b):!1}),d});