UNPKG

@fivethree/core

Version:
124 lines 6.76 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'; var FivViewport = /** @class */ (function () { function FivViewport(elementRef) { this.elementRef = elementRef; this.fivAppear = new EventEmitter(); this.fivDisappear = new EventEmitter(); this.visible = false; } /** * @return {?} */ FivViewport.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; this.io = new IntersectionObserver((/** * @param {?} entries * @param {?} observer * @return {?} */ function (entries, observer) { entries.forEach((/** * @param {?} entry * @return {?} */ function (entry) { if (entry.isIntersecting) { _this.handleIntersection(); } else { _this.handleNonIntersection(); } })); })); this.io['POLL_INTERVAL'] = 100; this.io.observe(this.elementRef.nativeElement); }; /** * @return {?} */ FivViewport.prototype.handleNonIntersection = /** * @return {?} */ function () { if (this.visible) { this.fivDisappear.emit(this); } this.visible = false; }; /** * @return {?} */ FivViewport.prototype.handleIntersection = /** * @return {?} */ function () { if (!this.visible) { this.fivAppear.emit(this); } this.visible = true; }; /** * @return {?} */ FivViewport.prototype.ngOnDestroy = /** * @return {?} */ function () { this.io.disconnect(); }; /** * @return {?} */ FivViewport.prototype.isVisible = /** * @return {?} */ function () { return this.visible; }; FivViewport.decorators = [ { type: Directive, args: [{ selector: '[fivViewport]', exportAs: 'viewport' },] } ]; /** @nocollapse */ FivViewport.ctorParameters = function () { return [ { type: ElementRef } ]; }; FivViewport.propDecorators = { fivAppear: [{ type: Output }], fivDisappear: [{ type: Output }] }; return FivViewport; }()); export { FivViewport }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpdmV0aHJlZS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3ZpZXdwb3J0L3ZpZXdwb3J0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFHWixNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkI7SUFVRSxxQkFBNkIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUx6QyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNwQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekMsWUFBTyxHQUFHLEtBQUssQ0FBQztJQUc4QixDQUFDOzs7O0lBRXZELDhCQUFROzs7SUFBUjtRQUFBLGlCQVlDO1FBWEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLG9CQUFvQjs7Ozs7UUFBQyxVQUFDLE9BQU8sRUFBRSxRQUFRO1lBQ25ELE9BQU8sQ0FBQyxPQUFPOzs7O1lBQUMsVUFBQSxLQUFLO2dCQUNuQixJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUU7b0JBQ3hCLEtBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2lCQUMzQjtxQkFBTTtvQkFDTCxLQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztpQkFDOUI7WUFDSCxDQUFDLEVBQUMsQ0FBQztRQUNMLENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDL0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs7O0lBRUQsMkNBQXFCOzs7SUFBckI7UUFDRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDOzs7O0lBQ0Qsd0NBQWtCOzs7SUFBbEI7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQjtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7Ozs7SUFFRCxpQ0FBVzs7O0lBQVg7UUFDRSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7Ozs7SUFFRCwrQkFBUzs7O0lBQVQ7UUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQzs7Z0JBN0NGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsUUFBUSxFQUFFLFVBQVU7aUJBQ3JCOzs7O2dCQVhDLFVBQVU7Ozs0QkFhVCxNQUFNOytCQUNOLE1BQU07O0lBd0NULGtCQUFDO0NBQUEsQUE5Q0QsSUE4Q0M7U0ExQ1ksV0FBVzs7O0lBQ3RCLGdDQUE4Qzs7SUFDOUMsbUNBQWlEOzs7OztJQUNqRCw4QkFBd0I7Ozs7O0lBQ3hCLHlCQUFpQzs7Ozs7SUFFckIsaUNBQXVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgT25EZXN0cm95XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZml2Vmlld3BvcnRdJyxcbiAgZXhwb3J0QXM6ICd2aWV3cG9ydCdcbn0pXG5leHBvcnQgY2xhc3MgRml2Vmlld3BvcnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBPdXRwdXQoKSBmaXZBcHBlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGZpdkRpc2FwcGVhciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwcml2YXRlIHZpc2libGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpbzogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMsIG9ic2VydmVyKSA9PiB7XG4gICAgICBlbnRyaWVzLmZvckVhY2goZW50cnkgPT4ge1xuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUludGVyc2VjdGlvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaGFuZGxlTm9uSW50ZXJzZWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuaW9bJ1BPTExfSU5URVJWQUwnXSA9IDEwMDtcbiAgICB0aGlzLmlvLm9ic2VydmUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgaGFuZGxlTm9uSW50ZXJzZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgIHRoaXMuZml2RGlzYXBwZWFyLmVtaXQodGhpcyk7XG4gICAgfVxuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICB9XG4gIGhhbmRsZUludGVyc2VjdGlvbigpIHtcbiAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgdGhpcy5maXZBcHBlYXIuZW1pdCh0aGlzKTtcbiAgICB9XG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaW8uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgaXNWaXNpYmxlKCkge1xuICAgIHJldHVybiB0aGlzLnZpc2libGU7XG4gIH1cbn1cbiJdfQ==