UNPKG

@fivethree/core

Version:
109 lines 6.18 kB
/** * @fileoverview added by tsickle * Generated from: lib/viewport/viewport.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, ElementRef, EventEmitter, Output } from '@angular/core'; export class FivViewport { /** * @param {?} elementRef */ constructor(elementRef) { this.elementRef = elementRef; this.fivAppear = new EventEmitter(); this.fivDisappear = new EventEmitter(); this.visible = false; } /** * @return {?} */ ngOnInit() { this.io = new IntersectionObserver((/** * @param {?} entries * @param {?} observer * @return {?} */ (entries, observer) => { entries.forEach((/** * @param {?} entry * @return {?} */ entry => { if (entry.isIntersecting) { this.handleIntersection(); } else { this.handleNonIntersection(); } })); })); this.io['POLL_INTERVAL'] = 100; this.io.observe(this.elementRef.nativeElement); } /** * @return {?} */ handleNonIntersection() { if (this.visible) { this.fivDisappear.emit(this); } this.visible = false; } /** * @return {?} */ handleIntersection() { if (!this.visible) { this.fivAppear.emit(this); } this.visible = true; } /** * @return {?} */ ngOnDestroy() { this.io.disconnect(); } /** * @return {?} */ isVisible() { return this.visible; } } FivViewport.decorators = [ { type: Directive, args: [{ selector: '[fivViewport]', exportAs: 'viewport' },] } ]; /** @nocollapse */ FivViewport.ctorParameters = () => [ { type: ElementRef } ]; FivViewport.propDecorators = { fivAppear: [{ type: Output }], fivDisappear: [{ type: Output }] }; if (false) { /** @type {?} */ FivViewport.prototype.fivAppear; /** @type {?} */ FivViewport.prototype.fivDisappear; /** * @type {?} * @private */ FivViewport.prototype.visible; /** * @type {?} * @private */ FivViewport.prototype.io; /** * @type {?} * @private */ FivViewport.prototype.elementRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpdmV0aHJlZS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3ZpZXdwb3J0L3ZpZXdwb3J0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFHWixNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFNdkIsTUFBTSxPQUFPLFdBQVc7Ozs7SUFNdEIsWUFBNkIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUx6QyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNwQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekMsWUFBTyxHQUFHLEtBQUssQ0FBQztJQUc4QixDQUFDOzs7O0lBRXZELFFBQVE7UUFDTixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksb0JBQW9COzs7OztRQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ3ZELE9BQU8sQ0FBQyxPQUFPOzs7O1lBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3RCLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtvQkFDeEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7aUJBQzNCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2lCQUM5QjtZQUNILENBQUMsRUFBQyxDQUFDO1FBQ0wsQ0FBQyxFQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUMvQixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7Ozs7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQzs7OztJQUNELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQjtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7Ozs7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN2QixDQUFDOzs7O0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDOzs7WUE3Q0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixRQUFRLEVBQUUsVUFBVTthQUNyQjs7OztZQVhDLFVBQVU7Ozt3QkFhVCxNQUFNOzJCQUNOLE1BQU07Ozs7SUFEUCxnQ0FBOEM7O0lBQzlDLG1DQUFpRDs7Ozs7SUFDakQsOEJBQXdCOzs7OztJQUN4Qix5QkFBaUM7Ozs7O0lBRXJCLGlDQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZpdlZpZXdwb3J0XScsXG4gIGV4cG9ydEFzOiAndmlld3BvcnQnXG59KVxuZXhwb3J0IGNsYXNzIEZpdlZpZXdwb3J0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAT3V0cHV0KCkgZml2QXBwZWFyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBmaXZEaXNhcHBlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHJpdmF0ZSB2aXNpYmxlID0gZmFsc2U7XG4gIHByaXZhdGUgaW86IEludGVyc2VjdGlvbk9ic2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzLCBvYnNlcnZlcikgPT4ge1xuICAgICAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVJbnRlcnNlY3Rpb24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZU5vbkludGVyc2VjdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLmlvWydQT0xMX0lOVEVSVkFMJ10gPSAxMDA7XG4gICAgdGhpcy5pby5vYnNlcnZlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIGhhbmRsZU5vbkludGVyc2VjdGlvbigpIHtcbiAgICBpZiAodGhpcy52aXNpYmxlKSB7XG4gICAgICB0aGlzLmZpdkRpc2FwcGVhci5lbWl0KHRoaXMpO1xuICAgIH1cbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgfVxuICBoYW5kbGVJbnRlcnNlY3Rpb24oKSB7XG4gICAgaWYgKCF0aGlzLnZpc2libGUpIHtcbiAgICAgIHRoaXMuZml2QXBwZWFyLmVtaXQodGhpcyk7XG4gICAgfVxuICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmlvLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIGlzVmlzaWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlO1xuICB9XG59XG4iXX0=