From 5c9cf44260f4a59201a05e8af56a66a1ca8a9808 Mon Sep 17 00:00:00 2001 From: Joel Arvidsson Date: Wed, 9 Apr 2014 12:59:25 +0200 Subject: [PATCH] Released v0.4.0 --- angular-scroll.js | 160 +++++++++++++++++++++++++++----------- angular-scroll.min.js | 2 +- angular-scroll.min.js.map | 2 +- bower.json | 4 +- package.json | 2 +- 5 files changed, 118 insertions(+), 52 deletions(-) diff --git a/angular-scroll.js b/angular-scroll.js index 810874c..06f534a 100644 --- a/angular-scroll.js +++ b/angular-scroll.js @@ -8,7 +8,7 @@ var duScrollDefaultEasing = function (x) { return 1-Math.pow((1-x)*2, 2)/2; }; -angular.module('duScroll', ['duScroll.scroller', 'duScroll.scrollPosition', 'duScroll.scrollspy', 'duScroll.requestAnimation', 'duScroll.smoothScroll']).value('duScrollDuration', 1000).value('duScrollEasing', duScrollDefaultEasing); +angular.module('duScroll', ['duScroll.scroller', 'duScroll.scrollPosition', 'duScroll.scrollspy', 'duScroll.requestAnimation', 'duScroll.smoothScroll', 'duScroll.scrollContext']).value('duScrollDuration', 1000).value('duScrollEasing', duScrollDefaultEasing); angular.module('duScroll.requestAnimation', []). @@ -27,19 +27,17 @@ angular.module('duScroll.scrollPosition', ['duScroll.requestAnimation']). factory('scrollPosition', function($document, $window, $rootScope, $timeout, requestAnimation) { var getScrollY = function(context) { - if(!context){ - return $window.scrollY || document.documentElement.scrollTop || document.body.scrollTop; - }else{ - return context.scrollTop(); + if(context) { + return context.scrollTop; } + return $window.scrollY || document.documentElement.scrollTop || document.body.scrollTop; }; var getScrollX = function(context) { - if(!context){ - return $window.scrollX || document.documentElement.scrollLeft || document.body.scrollLeft; - }else{ - return context.scrollLeft(); + if(context) { + return context.scrollLeft; } + return $window.scrollX || document.documentElement.scrollLeft || document.body.scrollLeft; }; var observers = []; @@ -86,11 +84,11 @@ factory('scroller', function scrollTo(x, y, duration, context){ if(!duration) { - if(!context){ + if(context){ + context.scrollLeft = x; + context.scrollTop = y; + } else { $window.scrollTo(x, y); - }else{ - context.scrollLeft(x); - context.scrollTop(y); } return; @@ -110,11 +108,11 @@ factory('scroller', var animate = function() { frame++; var percent = (frame === frames ? 1 : duScrollEasing(frame/frames)); - if(!context){ - $window.scrollTo( start.x + Math.ceil(delta.x * percent), start.y + Math.ceil(delta.y * percent)); - }else{ - context.scrollLeft( start.x + Math.ceil(delta.x * percent)); - context.scrollTop(start.y + Math.ceil(delta.y * percent)); + if(context){ + context.scrollLeft = start.x + Math.ceil(delta.x * percent); + context.scrollTop = start.y + Math.ceil(delta.y * percent); + } else { + $window.scrollTo( start.x + Math.ceil(delta.x * percent), start.y + Math.ceil(delta.y * percent)); } if(framea?Math.pow(2*a,2)/2:1-Math.pow(2*(1-a),2)/2};angular.module("duScroll",["duScroll.scroller","duScroll.scrollPosition","duScroll.scrollspy","duScroll.requestAnimation","duScroll.smoothScroll"]).value("duScrollDuration",1e3).value("duScrollEasing",duScrollDefaultEasing),angular.module("duScroll.requestAnimation",[]).factory("requestAnimation",["$window","$timeout",function(a,b){return a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(a){b(a,1e3/60)}}]),angular.module("duScroll.scrollPosition",["duScroll.requestAnimation"]).factory("scrollPosition",["$document","$window","$rootScope","$timeout","requestAnimation",function(a,b,c,d,e){var f,g,h=function(a){return a?a.scrollTop():b.scrollY||document.documentElement.scrollTop||document.body.scrollTop},i=function(a){return a?a.scrollLeft():b.scrollX||document.documentElement.scrollLeft||document.body.scrollLeft},j=[],k=function(){g=f,c.$emit("$duScrollChanged",g);for(var a=0;ak&&b(m)};m()}}function f(a,b,d,f){e(c.x(f)+(a||0),c.y(f)+(b||0),d,f)}function g(a,b,c,d){if(angular.isElement(a)&&(a=a[0]||a,a.getBoundingClientRect)){var e=a.getBoundingClientRect();f(0,e.top+(!b||isNaN(b)?0:-b),c,d)}}return{scrollTo:e,scrollToElement:g,scrollDelta:f}}]),angular.module("duScroll.smoothScroll",["duScroll.scroller"]).directive("duSmoothScroll",["scroller","duScrollDuration",function(a,b){return{link:function(c,d,e){var f=angular.element(d[0]);f.on("click",function(c){if(e.href&&-1!==e.href.indexOf("#")){var d=document.getElementById(e.href.replace(/.*(?=#[^\s]+$)/,"").substring(1));if(d&&d.getBoundingClientRect){c.stopPropagation&&c.stopPropagation(),c.preventDefault&&c.preventDefault();var f=-(e.offset?parseInt(e.offset,10):0),g=e.duration?parseInt(e.duration,10):b,h=d.getBoundingClientRect();a.scrollDelta(0,h.top+(isNaN(f)?0:f),g)}}})}}}]),angular.module("duScroll.scrollspy",["duScroll.scrollPosition"]).factory("duSpyAPI",["$rootScope","scrollPosition",function(a){var b={},c=!1,d=function(a){var c=a.$id;return b[c]={spies:[]},c},e=d(a),f=function(){var c,d,e,f,g,h,i,j;for(d in b){for(e=b[d],h=e.spies,f=e.currentlyActive,g=void 0,c=0;ca?Math.pow(2*a,2)/2:1-Math.pow(2*(1-a),2)/2};angular.module("duScroll",["duScroll.scroller","duScroll.scrollPosition","duScroll.scrollspy","duScroll.requestAnimation","duScroll.smoothScroll","duScroll.scrollContext"]).value("duScrollDuration",1e3).value("duScrollEasing",duScrollDefaultEasing),angular.module("duScroll.requestAnimation",[]).factory("requestAnimation",["$window","$timeout",function(a,b){return a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(a){b(a,1e3/60)}}]),angular.module("duScroll.scrollPosition",["duScroll.requestAnimation"]).factory("scrollPosition",["$document","$window","$rootScope","$timeout","requestAnimation",function(a,b,c,d,e){var f,g,h=function(a){return a?a.scrollTop:b.scrollY||document.documentElement.scrollTop||document.body.scrollTop},i=function(a){return a?a.scrollLeft:b.scrollX||document.documentElement.scrollLeft||document.body.scrollLeft},j=[],k=function(){g=f,c.$emit("$duScrollChanged",g);for(var a=0;ak&&b(m)};m()}}function f(a,b,d,f){e(c.x(f)+(a||0),c.y(f)+(b||0),d,f)}function g(a,b,c,d){if(angular.isElement(a)&&(a=a[0]||a,a.getBoundingClientRect)){b=!b||isNaN(b)?0:-b;var e=a.getBoundingClientRect();if(d){var g=d.getBoundingClientRect();b-=g.top}f(0,e.top+b,c,d)}}return{scrollTo:e,scrollToElement:g,scrollDelta:f}}]),angular.module("duScroll.spyAPI",["duScroll.scrollPosition"]).factory("duSpyAPI",["$rootScope","scrollPosition",function(a){var b={},c=!1,d=function(a){var c=a.$id;return b[c]={spies:[]},c},e=d(a),f=function(){var c,d,e,f,g,h,i,j;for(d in b){for(e=b[d],h=e.spies,f=e.currentlyActive,g=void 0,c=0;c