@fivethree/core
Version:
Fivethree Core Components
109 lines • 6.18 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';
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=