@fivethree/core
Version:
Fivethree Core Components
124 lines • 6.76 kB
JavaScript
/**
* @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==