forked from kstam/ng-scroll-repeat
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathng-scroll-repeat.min.js
More file actions
9 lines (7 loc) · 1.9 KB
/
Copy pathng-scroll-repeat.min.js
File metadata and controls
9 lines (7 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
/*
Angular Scroll Repeat v0.0.7 by @kstam
Copyright (c) 2014
Full source at https://github.com/kstam/ng-scroll-repeat
MIT License, https://github.com/kstam/ng-scroll-repeat/blob/master/LICENSE
*/
!function(e){e.module("ks.ngScrollRepeat",["ks.WindowService"]).directive("ngScrollRepeat",["$compile","WindowService",function(e,r){"use strict";var t=50,o=200,i="bottom-reached-before",n="bottom-reached-after",c=function(e,r){e.$$phase||e.$root.$$phase?r():e.$apply(r)},l=function(e){if(e.match(/limitTo/)||e.match(/startFrom/))throw new Error('"limitTo" and "startFrom" filters are not allowed in scroll-repeat directive')},s=function(e){var t=r.height(),o=e.offset().top-r.scrollTop()+e.height();return o-t},a=function(a,u){var f=u.ngScrollRepeat,p=f.match(/^\s*(.+)\s+in\s+(.*?)\s*(\s+track\s+by\s+(.+)\s*)?$/),d=p[2],h=u.pageSize?Number(u.pageSize):t,v=u.tolerance?Number(u.tolerance):o;return l(f),a.removeAttr("ng-scroll-repeat"),a.attr("ng-repeat",f+" | limitTo:visibleResults"),function(t,o){var l,a=$(o[0]).parent();t.visibleResults=h,e(o)(t),t.$watch(d,function(e){l=e.length,t.visibleResults=h},!0),t.$on(r.WINDOW_SCROLL,function(){var e=s(a);v>=e&&l>t.visibleResults&&(t.$broadcast(i),c(t,function(){t.visibleResults+=h}),t.$broadcast(n))}),r.registerForScroll(t),t.$on("$destroy",function(){r.deregisterForScroll(t)})}};return{replace:!1,terminal:!0,priority:2e3,restrict:"A",compile:a}}])}(window.angular),function(e){e.module("ks.WindowService",[]).factory("WindowService",["$window",function(r){var t=e.element(r),o="WINDOW_SCROLL",i=[];return t.on("scroll",function(){var e;for(var r in i)e=i[r],e.$broadcast(o)}),{WINDOW_SCROLL:o,height:function(){return t.height()},scrollTop:function(){return t.scrollTop()},registerForScroll:function(r){if(!r||!e.isFunction(r.$broadcast))throw new Error("Cannot register a non-scope object for scroll");i.push(r)},deregisterForScroll:function(e){i.splice(i.indexOf(e),1)}}}])}(window.angular);