UNPKG

theme-lib

Version:

This is a simple example Angular Library published to npm.

194 lines 14.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Directive, ContentChildren, QueryList, Input, ElementRef, Output, EventEmitter, } from '@angular/core'; import { takeWhile } from 'rxjs/operators'; import 'intersection-observer'; import { NbListItemComponent } from './list.component'; /* * List pager directive * * Directive allows you to determine page of currently viewing items. * */ var NbListPageTrackerDirective = /** @class */ (function () { function NbListPageTrackerDirective() { var _this = this; this.alive = true; /* * Page to start counting with. */ this.startPage = 1; /* * Emits when another page become visible. */ this.pageChange = new EventEmitter(); this.observer = new IntersectionObserver(function (entries) { return _this.checkForPageChange(entries); }, { threshold: 0.5 }); } /** * @return {?} */ NbListPageTrackerDirective.prototype.ngAfterViewInit = /** * @return {?} */ function () { var _this = this; if (this.listItems && this.listItems.length) { this.observeItems(); } this.listItems.changes .pipe(takeWhile(function () { return _this.alive; })) .subscribe(function () { return _this.observeItems(); }); }; /** * @return {?} */ NbListPageTrackerDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { this.observer.disconnect && this.observer.disconnect(); }; /** * @private * @return {?} */ NbListPageTrackerDirective.prototype.observeItems = /** * @private * @return {?} */ function () { var _this = this; this.listItems.forEach(function (i) { return _this.observer.observe(i.nativeElement); }); }; /** * @private * @param {?} entries * @return {?} */ NbListPageTrackerDirective.prototype.checkForPageChange = /** * @private * @param {?} entries * @return {?} */ function (entries) { /** @type {?} */ var mostVisiblePage = this.findMostVisiblePage(entries); if (mostVisiblePage && this.currentPage !== mostVisiblePage) { this.currentPage = mostVisiblePage; this.pageChange.emit(this.currentPage); } }; /** * @private * @param {?} entries * @return {?} */ NbListPageTrackerDirective.prototype.findMostVisiblePage = /** * @private * @param {?} entries * @return {?} */ function (entries) { var e_1, _a; /** @type {?} */ var intersectionRatioByPage = new Map(); try { for (var entries_1 = tslib_1.__values(entries), entries_1_1 = entries_1.next(); !entries_1_1.done; entries_1_1 = entries_1.next()) { var entry = entries_1_1.value; if (entry.intersectionRatio < 0.5) { continue; } /** @type {?} */ var elementIndex = this.elementIndex(entry.target); if (elementIndex === -1) { continue; } /** @type {?} */ var page = this.startPage + Math.floor(elementIndex / this.pageSize); /** @type {?} */ var ratio = entry.intersectionRatio; if (intersectionRatioByPage.has(page)) { ratio += intersectionRatioByPage.get(page); } intersectionRatioByPage.set(page, ratio); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (entries_1_1 && !entries_1_1.done && (_a = entries_1.return)) _a.call(entries_1); } finally { if (e_1) throw e_1.error; } } /** @type {?} */ var maxRatio = 0; /** @type {?} */ var mostVisiblePage; intersectionRatioByPage.forEach(function (ratio, page) { if (ratio > maxRatio) { maxRatio = ratio; mostVisiblePage = page; } }); return mostVisiblePage; }; /** * @private * @param {?} element * @return {?} */ NbListPageTrackerDirective.prototype.elementIndex = /** * @private * @param {?} element * @return {?} */ function (element) { return element.parentElement && element.parentElement.children ? Array.from(element.parentElement.children).indexOf(element) : -1; }; NbListPageTrackerDirective.decorators = [ { type: Directive, args: [{ selector: '[nbListPageTracker]', },] } ]; /** @nocollapse */ NbListPageTrackerDirective.ctorParameters = function () { return []; }; NbListPageTrackerDirective.propDecorators = { pageSize: [{ type: Input }], startPage: [{ type: Input }], pageChange: [{ type: Output }], listItems: [{ type: ContentChildren, args: [NbListItemComponent, { read: ElementRef },] }] }; return NbListPageTrackerDirective; }()); export { NbListPageTrackerDirective }; if (false) { /** * @type {?} * @private */ NbListPageTrackerDirective.prototype.alive; /** * @type {?} * @private */ NbListPageTrackerDirective.prototype.observer; /** * @type {?} * @private */ NbListPageTrackerDirective.prototype.currentPage; /** @type {?} */ NbListPageTrackerDirective.prototype.pageSize; /** @type {?} */ NbListPageTrackerDirective.prototype.startPage; /** @type {?} */ NbListPageTrackerDirective.prototype.pageChange; /** @type {?} */ NbListPageTrackerDirective.prototype.listItems; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wYWdlLXRyYWNrZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vdGhlbWUtbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvbGlzdC9saXN0LXBhZ2UtdHJhY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsRUFHVixNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0FBUXZEO0lBK0JFO1FBQUEsaUJBS0M7UUEvQk8sVUFBSyxHQUFHLElBQUksQ0FBQzs7OztRQWVyQixjQUFTLEdBQVcsQ0FBQyxDQUFDOzs7O1FBTXRCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBTXRDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxvQkFBb0IsQ0FDdEMsVUFBQSxPQUFPLElBQUksT0FBQSxLQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQWhDLENBQWdDLEVBQzNDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUNuQixDQUFDO0lBQ0osQ0FBQzs7OztJQUVELG9EQUFlOzs7SUFBZjtRQUFBLGlCQVFDO1FBUEMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQzNDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTzthQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQU0sT0FBQSxLQUFJLENBQUMsS0FBSyxFQUFWLENBQVUsQ0FBQyxDQUFDO2FBQ2pDLFNBQVMsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLFlBQVksRUFBRSxFQUFuQixDQUFtQixDQUFDLENBQUM7SUFDMUMsQ0FBQzs7OztJQUVELGdEQUFXOzs7SUFBWDtRQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDekQsQ0FBQzs7Ozs7SUFFTyxpREFBWTs7OztJQUFwQjtRQUFBLGlCQUVDO1FBREMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQXRDLENBQXNDLENBQUMsQ0FBQztJQUN0RSxDQUFDOzs7Ozs7SUFFTyx1REFBa0I7Ozs7O0lBQTFCLFVBQTJCLE9BQW9DOztZQUN2RCxlQUFlLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztRQUV6RCxJQUFJLGVBQWUsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLGVBQWUsRUFBRTtZQUMzRCxJQUFJLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQztZQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDOzs7Ozs7SUFFTyx3REFBbUI7Ozs7O0lBQTNCLFVBQTRCLE9BQW9DOzs7WUFDeEQsdUJBQXVCLEdBQUcsSUFBSSxHQUFHLEVBQWtCOztZQUV6RCxLQUFvQixJQUFBLFlBQUEsaUJBQUEsT0FBTyxDQUFBLGdDQUFBLHFEQUFFO2dCQUF4QixJQUFNLEtBQUssb0JBQUE7Z0JBQ2QsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxFQUFFO29CQUNqQyxTQUFTO2lCQUNWOztvQkFFSyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUNwRCxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUMsRUFBRTtvQkFDdkIsU0FBUztpQkFDVjs7b0JBQ0ssSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQzs7b0JBRWxFLEtBQUssR0FBRyxLQUFLLENBQUMsaUJBQWlCO2dCQUNuQyxJQUFJLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDckMsS0FBSyxJQUFJLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDNUM7Z0JBQ0QsdUJBQXVCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzthQUMxQzs7Ozs7Ozs7OztZQUVHLFFBQVEsR0FBRyxDQUFDOztZQUNaLGVBQWU7UUFDbkIsdUJBQXVCLENBQUMsT0FBTyxDQUFDLFVBQUMsS0FBSyxFQUFFLElBQUk7WUFDMUMsSUFBSSxLQUFLLEdBQUcsUUFBUSxFQUFFO2dCQUNwQixRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNqQixlQUFlLEdBQUcsSUFBSSxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDOzs7Ozs7SUFFTyxpREFBWTs7Ozs7SUFBcEIsVUFBcUIsT0FBZ0I7UUFDbkMsT0FBTyxPQUFPLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUTtZQUM1RCxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQzs7Z0JBdEdGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO2lCQUNoQzs7Ozs7MkJBV0UsS0FBSzs0QkFNTCxLQUFLOzZCQU1MLE1BQU07NEJBR04sZUFBZSxTQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTs7SUEyRTVELGlDQUFDO0NBQUEsQUF2R0QsSUF1R0M7U0FwR1ksMEJBQTBCOzs7Ozs7SUFFckMsMkNBQXFCOzs7OztJQUVyQiw4Q0FBdUM7Ozs7O0lBQ3ZDLGlEQUE0Qjs7SUFLNUIsOENBQ2lCOztJQUtqQiwrQ0FDc0I7O0lBS3RCLGdEQUN3Qzs7SUFFeEMsK0NBQ2lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBJbnB1dCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0ICdpbnRlcnNlY3Rpb24tb2JzZXJ2ZXInO1xyXG5pbXBvcnQgeyBOYkxpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LmNvbXBvbmVudCc7XHJcblxyXG4vKlxyXG4gKiBMaXN0IHBhZ2VyIGRpcmVjdGl2ZVxyXG4gKlxyXG4gKiBEaXJlY3RpdmUgYWxsb3dzIHlvdSB0byBkZXRlcm1pbmUgcGFnZSBvZiBjdXJyZW50bHkgdmlld2luZyBpdGVtcy5cclxuICpcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW25iTGlzdFBhZ2VUcmFja2VyXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYkxpc3RQYWdlVHJhY2tlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHByaXZhdGUgYWxpdmUgPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIG9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcclxuICBwcml2YXRlIGN1cnJlbnRQYWdlOiBudW1iZXI7XHJcblxyXG4gIC8qXHJcbiAgICogSXRlbXMgcGVyIHBhZ2UuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwYWdlU2l6ZTogbnVtYmVyO1xyXG5cclxuICAvKlxyXG4gICAqIFBhZ2UgdG8gc3RhcnQgY291bnRpbmcgd2l0aC5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHN0YXJ0UGFnZTogbnVtYmVyID0gMTtcclxuXHJcbiAgLypcclxuICAgKiBFbWl0cyB3aGVuIGFub3RoZXIgcGFnZSBiZWNvbWUgdmlzaWJsZS5cclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBwYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oTmJMaXN0SXRlbUNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgbGlzdEl0ZW1zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcclxuICAgICAgZW50cmllcyA9PiB0aGlzLmNoZWNrRm9yUGFnZUNoYW5nZShlbnRyaWVzKSxcclxuICAgICAgeyB0aHJlc2hvbGQ6IDAuNSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmxpc3RJdGVtcyAmJiB0aGlzLmxpc3RJdGVtcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5vYnNlcnZlSXRlbXMoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxpc3RJdGVtcy5jaGFuZ2VzXHJcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLmFsaXZlKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9ic2VydmVJdGVtcygpKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0ICYmIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvYnNlcnZlSXRlbXMoKSB7XHJcbiAgICB0aGlzLmxpc3RJdGVtcy5mb3JFYWNoKGkgPT4gdGhpcy5vYnNlcnZlci5vYnNlcnZlKGkubmF0aXZlRWxlbWVudCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0ZvclBhZ2VDaGFuZ2UoZW50cmllczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdKSB7XHJcbiAgICBjb25zdCBtb3N0VmlzaWJsZVBhZ2UgPSB0aGlzLmZpbmRNb3N0VmlzaWJsZVBhZ2UoZW50cmllcyk7XHJcblxyXG4gICAgaWYgKG1vc3RWaXNpYmxlUGFnZSAmJiB0aGlzLmN1cnJlbnRQYWdlICE9PSBtb3N0VmlzaWJsZVBhZ2UpIHtcclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IG1vc3RWaXNpYmxlUGFnZTtcclxuICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQodGhpcy5jdXJyZW50UGFnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRNb3N0VmlzaWJsZVBhZ2UoZW50cmllczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBjb25zdCBpbnRlcnNlY3Rpb25SYXRpb0J5UGFnZSA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XHJcblxyXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XHJcbiAgICAgIGlmIChlbnRyeS5pbnRlcnNlY3Rpb25SYXRpbyA8IDAuNSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBlbGVtZW50SW5kZXggPSB0aGlzLmVsZW1lbnRJbmRleChlbnRyeS50YXJnZXQpO1xyXG4gICAgICBpZiAoZWxlbWVudEluZGV4ID09PSAtMSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLnN0YXJ0UGFnZSArIE1hdGguZmxvb3IoZWxlbWVudEluZGV4IC8gdGhpcy5wYWdlU2l6ZSk7XHJcblxyXG4gICAgICBsZXQgcmF0aW8gPSBlbnRyeS5pbnRlcnNlY3Rpb25SYXRpbztcclxuICAgICAgaWYgKGludGVyc2VjdGlvblJhdGlvQnlQYWdlLmhhcyhwYWdlKSkge1xyXG4gICAgICAgIHJhdGlvICs9IGludGVyc2VjdGlvblJhdGlvQnlQYWdlLmdldChwYWdlKTtcclxuICAgICAgfVxyXG4gICAgICBpbnRlcnNlY3Rpb25SYXRpb0J5UGFnZS5zZXQocGFnZSwgcmF0aW8pO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBtYXhSYXRpbyA9IDA7XHJcbiAgICBsZXQgbW9zdFZpc2libGVQYWdlO1xyXG4gICAgaW50ZXJzZWN0aW9uUmF0aW9CeVBhZ2UuZm9yRWFjaCgocmF0aW8sIHBhZ2UpID0+IHtcclxuICAgICAgaWYgKHJhdGlvID4gbWF4UmF0aW8pIHtcclxuICAgICAgICBtYXhSYXRpbyA9IHJhdGlvO1xyXG4gICAgICAgIG1vc3RWaXNpYmxlUGFnZSA9IHBhZ2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBtb3N0VmlzaWJsZVBhZ2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVsZW1lbnRJbmRleChlbGVtZW50OiBFbGVtZW50KTogbnVtYmVyIHtcclxuICAgIHJldHVybiBlbGVtZW50LnBhcmVudEVsZW1lbnQgJiYgZWxlbWVudC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuXHJcbiAgICAgID8gQXJyYXkuZnJvbShlbGVtZW50LnBhcmVudEVsZW1lbnQuY2hpbGRyZW4pLmluZGV4T2YoZWxlbWVudClcclxuICAgICAgOiAtMTtcclxuICB9XHJcbn1cclxuIl19