1 | System.registerDynamic('src/infinite-scroll', ['@angular/core', './position-resolver', './scroll-register', './scroll-resolver'], true, function ($__require, exports, module) {
|
2 | "use strict";
|
3 |
|
4 | var global = this || self,
|
5 | GLOBAL = global;
|
6 | var core_1 = $__require('@angular/core');
|
7 | var position_resolver_1 = $__require('./position-resolver');
|
8 | var scroll_register_1 = $__require('./scroll-register');
|
9 | var scroll_resolver_1 = $__require('./scroll-resolver');
|
10 | var InfiniteScroll = function () {
|
11 | function InfiniteScroll(element, zone, positionResolverFactory, scrollRegister, scrollerResolver) {
|
12 | this.element = element;
|
13 | this.zone = zone;
|
14 | this.positionResolverFactory = positionResolverFactory;
|
15 | this.scrollRegister = scrollRegister;
|
16 | this.scrollerResolver = scrollerResolver;
|
17 | this.scrolled = new core_1.EventEmitter();
|
18 | this.scrolledUp = new core_1.EventEmitter();
|
19 | this._distanceDown = 2;
|
20 | this._distanceUp = 1.5;
|
21 | this._throttle = 300;
|
22 | this._disabled = false;
|
23 | this._container = null;
|
24 | this.scrollWindow = true;
|
25 | this._immediate = false;
|
26 | this._horizontal = false;
|
27 | this._alwaysCallback = false;
|
28 | this.throttleType = 'throttle';
|
29 | }
|
30 | Object.defineProperty(InfiniteScroll.prototype, "debounce", {
|
31 | set: function (value) {
|
32 | this.throttleType = value === '' || !!value ? 'debounce' : 'throttle';
|
33 | },
|
34 | enumerable: true,
|
35 | configurable: true
|
36 | });
|
37 | InfiniteScroll.prototype.ngOnInit = function () {
|
38 | var _this = this;
|
39 | if (typeof window !== 'undefined') {
|
40 | var containerElement = this.resolveContainerElement();
|
41 | var positionResolver_1 = this.positionResolverFactory.create({
|
42 | windowElement: containerElement,
|
43 | horizontal: this._horizontal
|
44 | });
|
45 | var options = {
|
46 | container: positionResolver_1.container,
|
47 | throttleType: this.throttleType,
|
48 | throttleDuration: this._throttle,
|
49 | filterBefore: function () {
|
50 | return !_this._disabled;
|
51 | },
|
52 | mergeMap: function () {
|
53 | return positionResolver_1.calculatePoints(_this.element);
|
54 | },
|
55 | scrollHandler: function (container) {
|
56 | return _this.handleOnScroll(container);
|
57 | }
|
58 | };
|
59 | this.disposeScroller = this.scrollRegister.attachEvent(options);
|
60 | }
|
61 | };
|
62 | InfiniteScroll.prototype.handleOnScroll = function (container) {
|
63 | var scrollResolverConfig = {
|
64 | distance: {
|
65 | down: this._distanceDown,
|
66 | up: this._distanceUp
|
67 | }
|
68 | };
|
69 | var scrollStats = this.scrollerResolver.getScrollStats(container, scrollResolverConfig);
|
70 | if (this.shouldTriggerEvents(scrollStats.shouldScroll)) {
|
71 | var infiniteScrollEvent = {
|
72 | currentScrollPosition: container.scrolledUntilNow
|
73 | };
|
74 | if (scrollStats.isScrollingDown) {
|
75 | this.onScrollDown(infiniteScrollEvent);
|
76 | } else {
|
77 | this.onScrollUp(infiniteScrollEvent);
|
78 | }
|
79 | }
|
80 | };
|
81 | InfiniteScroll.prototype.shouldTriggerEvents = function (shouldScroll) {
|
82 | return (this._alwaysCallback || shouldScroll) && !this._disabled;
|
83 | };
|
84 | InfiniteScroll.prototype.ngOnDestroy = function () {
|
85 | if (this.disposeScroller) {
|
86 | this.disposeScroller.unsubscribe();
|
87 | }
|
88 | };
|
89 | InfiniteScroll.prototype.onScrollDown = function (data) {
|
90 | var _this = this;
|
91 | if (data === void 0) {
|
92 | data = { currentScrollPosition: 0 };
|
93 | }
|
94 | this.zone.run(function () {
|
95 | return _this.scrolled.emit(data);
|
96 | });
|
97 | };
|
98 | InfiniteScroll.prototype.onScrollUp = function (data) {
|
99 | var _this = this;
|
100 | if (data === void 0) {
|
101 | data = { currentScrollPosition: 0 };
|
102 | }
|
103 | this.zone.run(function () {
|
104 | return _this.scrolledUp.emit(data);
|
105 | });
|
106 | };
|
107 | InfiniteScroll.prototype.resolveContainerElement = function () {
|
108 | if (this._container) {
|
109 | return typeof this._container === 'string' ? window.document.querySelector(this._container) : this._container;
|
110 | } else {
|
111 | return this.scrollWindow ? window : this.element;
|
112 | }
|
113 | };
|
114 | InfiniteScroll.decorators = [{ type: core_1.Directive, args: [{
|
115 | selector: '[infinite-scroll]'
|
116 | }] }];
|
117 |
|
118 | InfiniteScroll.ctorParameters = function () {
|
119 | return [{ type: core_1.ElementRef }, { type: core_1.NgZone }, { type: position_resolver_1.PositionResolverFactory }, { type: scroll_register_1.ScrollRegister }, { type: scroll_resolver_1.ScrollResolver }];
|
120 | };
|
121 | InfiniteScroll.propDecorators = {
|
122 | 'scrolled': [{ type: core_1.Output }],
|
123 | 'scrolledUp': [{ type: core_1.Output }],
|
124 | '_distanceDown': [{ type: core_1.Input, args: ['infiniteScrollDistance'] }],
|
125 | '_distanceUp': [{ type: core_1.Input, args: ['infiniteScrollUpDistance'] }],
|
126 | '_throttle': [{ type: core_1.Input, args: ['infiniteScrollThrottle'] }],
|
127 | '_disabled': [{ type: core_1.Input, args: ['infiniteScrollDisabled'] }],
|
128 | '_container': [{ type: core_1.Input, args: ['infiniteScrollContainer'] }],
|
129 | 'scrollWindow': [{ type: core_1.Input, args: ['scrollWindow'] }],
|
130 | '_immediate': [{ type: core_1.Input, args: ['immediateCheck'] }],
|
131 | '_horizontal': [{ type: core_1.Input, args: ['horizontal'] }],
|
132 | '_alwaysCallback': [{ type: core_1.Input, args: ['alwaysCallback'] }],
|
133 | 'debounce': [{ type: core_1.Input }]
|
134 | };
|
135 | return InfiniteScroll;
|
136 | }();
|
137 | exports.InfiniteScroll = InfiniteScroll;
|
138 | });
|
139 | System.registerDynamic('src/axis-resolver', ['@angular/core'], true, function ($__require, exports, module) {
|
140 | "use strict";
|
141 |
|
142 | var global = this || self,
|
143 | GLOBAL = global;
|
144 | var core_1 = $__require('@angular/core');
|
145 | var AxisResolverFactory = function () {
|
146 | function AxisResolverFactory() {}
|
147 | AxisResolverFactory.prototype.create = function (vertical) {
|
148 | if (vertical === void 0) {
|
149 | vertical = true;
|
150 | }
|
151 | return new AxisResolver(vertical);
|
152 | };
|
153 | AxisResolverFactory.decorators = [{ type: core_1.Injectable }];
|
154 |
|
155 | AxisResolverFactory.ctorParameters = function () {
|
156 | return [];
|
157 | };
|
158 | return AxisResolverFactory;
|
159 | }();
|
160 | exports.AxisResolverFactory = AxisResolverFactory;
|
161 | var AxisResolver = function () {
|
162 | function AxisResolver(vertical) {
|
163 | if (vertical === void 0) {
|
164 | vertical = true;
|
165 | }
|
166 | this.vertical = vertical;
|
167 | }
|
168 | AxisResolver.prototype.clientHeightKey = function () {
|
169 | return this.vertical ? 'clientHeight' : 'clientWidth';
|
170 | };
|
171 | AxisResolver.prototype.offsetHeightKey = function () {
|
172 | return this.vertical ? 'offsetHeight' : 'offsetWidth';
|
173 | };
|
174 | AxisResolver.prototype.scrollHeightKey = function () {
|
175 | return this.vertical ? 'scrollHeight' : 'scrollWidth';
|
176 | };
|
177 | AxisResolver.prototype.pageYOffsetKey = function () {
|
178 | return this.vertical ? 'pageYOffset' : 'pageXOffset';
|
179 | };
|
180 | AxisResolver.prototype.offsetTopKey = function () {
|
181 | return this.vertical ? 'offsetTop' : 'offsetLeft';
|
182 | };
|
183 | AxisResolver.prototype.scrollTopKey = function () {
|
184 | return this.vertical ? 'scrollTop' : 'scrollLeft';
|
185 | };
|
186 | AxisResolver.prototype.topKey = function () {
|
187 | return this.vertical ? 'top' : 'left';
|
188 | };
|
189 | return AxisResolver;
|
190 | }();
|
191 | exports.AxisResolver = AxisResolver;
|
192 | });
|
193 | System.registerDynamic('src/position-resolver', ['@angular/core', './axis-resolver'], true, function ($__require, exports, module) {
|
194 | "use strict";
|
195 |
|
196 | var global = this || self,
|
197 | GLOBAL = global;
|
198 | var core_1 = $__require('@angular/core');
|
199 | var axis_resolver_1 = $__require('./axis-resolver');
|
200 | var PositionResolverFactory = function () {
|
201 | function PositionResolverFactory(axisResolver) {
|
202 | this.axisResolver = axisResolver;
|
203 | }
|
204 | PositionResolverFactory.prototype.create = function (options) {
|
205 | return new PositionResolver(this.axisResolver.create(!options.horizontal), options);
|
206 | };
|
207 | PositionResolverFactory.decorators = [{ type: core_1.Injectable }];
|
208 |
|
209 | PositionResolverFactory.ctorParameters = function () {
|
210 | return [{ type: axis_resolver_1.AxisResolverFactory }];
|
211 | };
|
212 | return PositionResolverFactory;
|
213 | }();
|
214 | exports.PositionResolverFactory = PositionResolverFactory;
|
215 | var PositionResolver = function () {
|
216 | function PositionResolver(axis, options) {
|
217 | this.axis = axis;
|
218 | this.options = options;
|
219 | this.resolveContainer(this.options.windowElement);
|
220 | this.defineContainer(this.options.windowElement);
|
221 | }
|
222 | PositionResolver.prototype.defineContainer = function (windowElement) {
|
223 | if (this.resolveContainer(windowElement) || !windowElement.nativeElement) {
|
224 | this.container = windowElement;
|
225 | } else {
|
226 | this.container = windowElement.nativeElement;
|
227 | }
|
228 | return this.container;
|
229 | };
|
230 | PositionResolver.prototype.resolveContainer = function (windowElement) {
|
231 | var isContainerWindow = Object.prototype.toString.call(windowElement).includes('Window');
|
232 | this.isContainerWindow = isContainerWindow;
|
233 | return isContainerWindow;
|
234 | };
|
235 | PositionResolver.prototype.getDocumentElement = function () {
|
236 | return this.isContainerWindow ? this.options.windowElement.document.documentElement : null;
|
237 | };
|
238 | PositionResolver.prototype.calculatePoints = function (element) {
|
239 | return this.isContainerWindow ? this.calculatePointsForWindow(element) : this.calculatePointsForElement(element);
|
240 | };
|
241 | PositionResolver.prototype.calculatePointsForWindow = function (element) {
|
242 |
|
243 | var height = this.height(this.container);
|
244 |
|
245 | var scrolledUntilNow = height + this.pageYOffset(this.getDocumentElement());
|
246 |
|
247 | var totalToScroll = this.offsetTop(element.nativeElement) + this.height(element.nativeElement);
|
248 | return { height: height, scrolledUntilNow: scrolledUntilNow, totalToScroll: totalToScroll };
|
249 | };
|
250 | PositionResolver.prototype.calculatePointsForElement = function (element) {
|
251 | var scrollTop = this.axis.scrollTopKey();
|
252 | var scrollHeight = this.axis.scrollHeightKey();
|
253 | var container = this.container;
|
254 | var height = this.height(container);
|
255 |
|
256 | var scrolledUntilNow = container[scrollTop];
|
257 | var containerTopOffset = 0;
|
258 | var offsetTop = this.offsetTop(container);
|
259 | if (offsetTop !== void 0) {
|
260 | containerTopOffset = offsetTop;
|
261 | }
|
262 | var totalToScroll = container[scrollHeight];
|
263 | return { height: height, scrolledUntilNow: scrolledUntilNow, totalToScroll: totalToScroll };
|
264 | };
|
265 | PositionResolver.prototype.height = function (elem) {
|
266 | var offsetHeight = this.axis.offsetHeightKey();
|
267 | var clientHeight = this.axis.clientHeightKey();
|
268 |
|
269 | if (isNaN(elem[offsetHeight])) {
|
270 | return this.getDocumentElement()[clientHeight];
|
271 | } else {
|
272 | return elem[offsetHeight];
|
273 | }
|
274 | };
|
275 | PositionResolver.prototype.offsetTop = function (elem) {
|
276 | var top = this.axis.topKey();
|
277 |
|
278 | if (!elem.getBoundingClientRect) {
|
279 | return;
|
280 | }
|
281 | return elem.getBoundingClientRect()[top] + this.pageYOffset(elem);
|
282 | };
|
283 | PositionResolver.prototype.pageYOffset = function (elem) {
|
284 | var pageYOffset = this.axis.pageYOffsetKey();
|
285 | var scrollTop = this.axis.scrollTopKey();
|
286 | var offsetTop = this.axis.offsetTopKey();
|
287 |
|
288 | if (isNaN(window[pageYOffset])) {
|
289 | return this.getDocumentElement()[scrollTop];
|
290 | } else if (elem.ownerDocument) {
|
291 | return elem.ownerDocument.defaultView[pageYOffset];
|
292 | } else {
|
293 | return elem[offsetTop];
|
294 | }
|
295 | };
|
296 | return PositionResolver;
|
297 | }();
|
298 | exports.PositionResolver = PositionResolver;
|
299 | });
|
300 | System.registerDynamic('src/index', ['@angular/core', './infinite-scroll', './axis-resolver', './position-resolver', './scroll-register', './scroll-resolver'], true, function ($__require, exports, module) {
|
301 | "use strict";
|
302 |
|
303 | var global = this || self,
|
304 | GLOBAL = global;
|
305 | var core_1 = $__require('@angular/core');
|
306 | var infinite_scroll_1 = $__require('./infinite-scroll');
|
307 | var axis_resolver_1 = $__require('./axis-resolver');
|
308 | var position_resolver_1 = $__require('./position-resolver');
|
309 | var scroll_register_1 = $__require('./scroll-register');
|
310 | var scroll_resolver_1 = $__require('./scroll-resolver');
|
311 | var InfiniteScrollModule = function () {
|
312 | function InfiniteScrollModule() {}
|
313 | InfiniteScrollModule.decorators = [{ type: core_1.NgModule, args: [{
|
314 | imports: [],
|
315 | declarations: [infinite_scroll_1.InfiniteScroll],
|
316 | exports: [infinite_scroll_1.InfiniteScroll],
|
317 | providers: [axis_resolver_1.AxisResolverFactory, position_resolver_1.PositionResolverFactory, scroll_register_1.ScrollRegister, scroll_resolver_1.ScrollResolver]
|
318 | }] }];
|
319 |
|
320 | InfiniteScrollModule.ctorParameters = function () {
|
321 | return [];
|
322 | };
|
323 | return InfiniteScrollModule;
|
324 | }();
|
325 | exports.InfiniteScrollModule = InfiniteScrollModule;
|
326 | });
|
327 | System.registerDynamic('src/scroll-register', ['@angular/core', 'rxjs/Observable', 'rxjs/add/observable/fromEvent', 'rxjs/add/observable/timer', 'rxjs/add/observable/of', 'rxjs/add/operator/debounce', 'rxjs/add/operator/throttle', 'rxjs/add/operator/filter', 'rxjs/add/operator/mergeMap'], true, function ($__require, exports, module) {
|
328 | "use strict";
|
329 |
|
330 | var global = this || self,
|
331 | GLOBAL = global;
|
332 | var core_1 = $__require('@angular/core');
|
333 | var Observable_1 = $__require('rxjs/Observable');
|
334 | $__require('rxjs/add/observable/fromEvent');
|
335 | $__require('rxjs/add/observable/timer');
|
336 | $__require('rxjs/add/observable/of');
|
337 | $__require('rxjs/add/operator/debounce');
|
338 | $__require('rxjs/add/operator/throttle');
|
339 | $__require('rxjs/add/operator/filter');
|
340 | $__require('rxjs/add/operator/mergeMap');
|
341 | var ScrollRegister = function () {
|
342 | function ScrollRegister() {}
|
343 | ScrollRegister.prototype.attachEvent = function (options) {
|
344 | var scroller$ = Observable_1.Observable.fromEvent(options.container, 'scroll')[options.throttleType](function () {
|
345 | return Observable_1.Observable.timer(options.throttleDuration);
|
346 | }).filter(options.filterBefore).mergeMap(function (ev) {
|
347 | return Observable_1.Observable.of(options.mergeMap(ev));
|
348 | }).subscribe(options.scrollHandler);
|
349 | return scroller$;
|
350 | };
|
351 | ScrollRegister.decorators = [{ type: core_1.Injectable }];
|
352 |
|
353 | ScrollRegister.ctorParameters = function () {
|
354 | return [];
|
355 | };
|
356 | return ScrollRegister;
|
357 | }();
|
358 | exports.ScrollRegister = ScrollRegister;
|
359 | });
|
360 | System.registerDynamic("src/scroll-resolver", ["@angular/core"], true, function ($__require, exports, module) {
|
361 | "use strict";
|
362 |
|
363 | var global = this || self,
|
364 | GLOBAL = global;
|
365 | var core_1 = $__require('@angular/core');
|
366 | var ScrollResolver = function () {
|
367 | function ScrollResolver() {
|
368 | this.lastScrollPosition = 0;
|
369 | }
|
370 | ScrollResolver.prototype.shouldScroll = function (container, config, scrollingDown) {
|
371 | var distance = config.distance;
|
372 | var remaining;
|
373 | var containerBreakpoint;
|
374 | if (scrollingDown) {
|
375 | remaining = container.totalToScroll - container.scrolledUntilNow;
|
376 | containerBreakpoint = container.height * distance.down + 1;
|
377 | } else {
|
378 | remaining = container.scrolledUntilNow;
|
379 | containerBreakpoint = container.height * distance.up + 1;
|
380 | }
|
381 | var shouldScroll = remaining <= containerBreakpoint;
|
382 | this.lastScrollPosition = container.scrolledUntilNow;
|
383 | return shouldScroll;
|
384 | };
|
385 | ScrollResolver.prototype.isScrollingDown = function (container) {
|
386 | return this.lastScrollPosition < container.scrolledUntilNow;
|
387 | };
|
388 | ScrollResolver.prototype.getScrollStats = function (container, config) {
|
389 | var isScrollingDown = this.isScrollingDown(container);
|
390 | var shouldScroll = this.shouldScroll(container, config, isScrollingDown);
|
391 | return { isScrollingDown: isScrollingDown, shouldScroll: shouldScroll };
|
392 | };
|
393 | ScrollResolver.decorators = [{ type: core_1.Injectable }];
|
394 |
|
395 | ScrollResolver.ctorParameters = function () {
|
396 | return [];
|
397 | };
|
398 | return ScrollResolver;
|
399 | }();
|
400 | exports.ScrollResolver = ScrollResolver;
|
401 | });
|
402 | System.registerDynamic('angular2-infinite-scroll', ['./src/infinite-scroll', './src/position-resolver', './src/axis-resolver', './src/index', './src/scroll-register', './src/scroll-resolver'], true, function ($__require, exports, module) {
|
403 | "use strict";
|
404 |
|
405 | var global = this || self,
|
406 | GLOBAL = global;
|
407 | var infinite_scroll_1 = $__require('./src/infinite-scroll');
|
408 | var position_resolver_1 = $__require('./src/position-resolver');
|
409 | var axis_resolver_1 = $__require('./src/axis-resolver');
|
410 | var infinite_scroll_2 = $__require('./src/infinite-scroll');
|
411 | exports.InfiniteScroll = infinite_scroll_2.InfiniteScroll;
|
412 | var position_resolver_2 = $__require('./src/position-resolver');
|
413 | exports.PositionResolver = position_resolver_2.PositionResolver;
|
414 | exports.PositionResolverFactory = position_resolver_2.PositionResolverFactory;
|
415 | var axis_resolver_2 = $__require('./src/axis-resolver');
|
416 | exports.AxisResolver = axis_resolver_2.AxisResolver;
|
417 | exports.AxisResolverFactory = axis_resolver_2.AxisResolverFactory;
|
418 | var index_1 = $__require('./src/index');
|
419 | exports.InfiniteScrollModule = index_1.InfiniteScrollModule;
|
420 | var scroll_register_1 = $__require('./src/scroll-register');
|
421 | exports.ScrollRegister = scroll_register_1.ScrollRegister;
|
422 | var scroll_resolver_1 = $__require('./src/scroll-resolver');
|
423 | exports.ScrollResolver = scroll_resolver_1.ScrollResolver;
|
424 | Object.defineProperty(exports, "__esModule", { value: true });
|
425 | exports.default = {
|
426 | directives: [infinite_scroll_1.InfiniteScroll, axis_resolver_1.AxisResolver, position_resolver_1.PositionResolver]
|
427 | };
|
428 | }); |
\ | No newline at end of file |