@fivethree/core
Version:
Fivethree Core Components
123 lines • 9.96 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/lazy-image/lazy-image.directive.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { FivGalleryImage } from '../gallery/gallery-image/gallery-image.component';
import { Directive, Input, EventEmitter, Output, Host, Self, Optional, ElementRef } from '@angular/core';
export class FivLazyImage {
/**
* @param {?} fivImage
* @param {?} image
*/
constructor(fivImage, image) {
this.fivImage = fivImage;
this.image = image;
this.virtual = false;
this.inViewport = false;
this.willShow = new EventEmitter();
this.willHide = new EventEmitter();
}
/**
* @return {?}
*/
ngOnInit() {
/** @type {?} */
const io = new IntersectionObserver((/**
* @param {?} entries
* @param {?} observer
* @return {?}
*/
(entries, observer) => {
entries.forEach((/**
* @param {?} entry
* @return {?}
*/
entry => {
if (entry.isIntersecting) {
if (!this.inViewport) {
this.handleIntersection();
if (!this.virtual) {
io.disconnect();
}
}
}
else {
if (this.inViewport) {
this.inViewport = false;
if (this.fivImage) {
this.willHide.emit(this.fivImage);
}
else if (this.image) {
this.willHide.emit(this.image.nativeElement);
}
}
}
}));
}));
io['POLL_INTERVAL'] = 100;
if (this.fivImage) {
io.observe(this.fivImage.thumbnail.nativeElement);
}
else if (this.image) {
io.observe(this.image.nativeElement);
}
}
/**
* @return {?}
*/
handleIntersection() {
this.inViewport = true;
if (this.fivLazyImage) {
if (this.fivImage) {
this.fivImage.src = this.fivLazyImage;
this.willShow.emit(this.fivImage);
}
else if (this.image) {
this.image.nativeElement.src = this.fivLazyImage;
this.willShow.emit(this.image.nativeElement);
}
}
else {
if (this.fivImage) {
this.willShow.emit(this.fivImage);
}
else if (this.image) {
this.willShow.emit(this.image.nativeElement);
}
}
}
}
FivLazyImage.decorators = [
{ type: Directive, args: [{
selector: '[fivLazyImage]'
},] }
];
/** @nocollapse */
FivLazyImage.ctorParameters = () => [
{ type: FivGalleryImage, decorators: [{ type: Host }, { type: Self }, { type: Optional }] },
{ type: ElementRef, decorators: [{ type: Host }, { type: Self }, { type: Optional }] }
];
FivLazyImage.propDecorators = {
fivLazyImage: [{ type: Input }],
virtual: [{ type: Input }],
willShow: [{ type: Output }],
willHide: [{ type: Output }]
};
if (false) {
/** @type {?} */
FivLazyImage.prototype.fivLazyImage;
/** @type {?} */
FivLazyImage.prototype.virtual;
/** @type {?} */
FivLazyImage.prototype.inViewport;
/** @type {?} */
FivLazyImage.prototype.willShow;
/** @type {?} */
FivLazyImage.prototype.willHide;
/** @type {?} */
FivLazyImage.prototype.fivImage;
/** @type {?} */
FivLazyImage.prototype.image;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1pbWFnZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZml2ZXRocmVlL2NvcmUvIiwic291cmNlcyI6WyJsaWIvbGF6eS1pbWFnZS9sYXp5LWltYWdlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNuRixPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxZQUFZLEVBQ1osTUFBTSxFQUNOLElBQUksRUFDSixJQUFJLEVBQ0osUUFBUSxFQUNSLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUt2QixNQUFNLE9BQU8sWUFBWTs7Ozs7SUFPdkIsWUFDcUMsUUFBeUIsRUFDekIsS0FBaUI7UUFEakIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQVA3QyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDVCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXNDLENBQUM7UUFDbEUsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFzQyxDQUFDO0lBS3pFLENBQUM7Ozs7SUFFSixRQUFROztjQUNBLEVBQUUsR0FBRyxJQUFJLG9CQUFvQjs7Ozs7UUFBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUN4RCxPQUFPLENBQUMsT0FBTzs7OztZQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN0QixJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO3dCQUNwQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzt3QkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7NEJBQ2pCLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQzt5QkFDakI7cUJBQ0Y7aUJBQ0Y7cUJBQU07b0JBQ0wsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO3dCQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzt3QkFDeEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFOzRCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7eUJBQ25DOzZCQUFNLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTs0QkFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQzt5QkFDOUM7cUJBQ0Y7aUJBQ0Y7WUFDSCxDQUFDLEVBQUMsQ0FBQztRQUNMLENBQUMsRUFBQztRQUNGLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDbkQ7YUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDckIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQzs7OztJQUNELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDbkM7aUJBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUM5QztTQUNGO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNuQztpQkFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDOUM7U0FDRjtJQUNILENBQUM7OztZQTdERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjthQUMzQjs7OztZQWZRLGVBQWUsdUJBd0JuQixJQUFJLFlBQUksSUFBSSxZQUFJLFFBQVE7WUFkM0IsVUFBVSx1QkFlUCxJQUFJLFlBQUksSUFBSSxZQUFJLFFBQVE7OzsyQkFSMUIsS0FBSztzQkFDTCxLQUFLO3VCQUVMLE1BQU07dUJBQ04sTUFBTTs7OztJQUpQLG9DQUE4Qjs7SUFDOUIsK0JBQXlCOztJQUN6QixrQ0FBbUI7O0lBQ25CLGdDQUE0RTs7SUFDNUUsZ0NBQTRFOztJQUcxRSxnQ0FBNEQ7O0lBQzVELDZCQUFvRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpdkdhbGxlcnlJbWFnZSB9IGZyb20gJy4uL2dhbGxlcnkvZ2FsbGVyeS1pbWFnZS9nYWxsZXJ5LWltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIE9uSW5pdCxcbiAgSW5wdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBIb3N0LFxuICBTZWxmLFxuICBPcHRpb25hbCxcbiAgRWxlbWVudFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZpdkxhenlJbWFnZV0nXG59KVxuZXhwb3J0IGNsYXNzIEZpdkxhenlJbWFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGZpdkxhenlJbWFnZTogc3RyaW5nO1xuICBASW5wdXQoKSB2aXJ0dWFsID0gZmFsc2U7XG4gIGluVmlld3BvcnQgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHdpbGxTaG93ID0gbmV3IEV2ZW50RW1pdHRlcjxGaXZHYWxsZXJ5SW1hZ2UgfCBIVE1MSW1hZ2VFbGVtZW50PigpO1xuICBAT3V0cHV0KCkgd2lsbEhpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPEZpdkdhbGxlcnlJbWFnZSB8IEhUTUxJbWFnZUVsZW1lbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEhvc3QoKSBAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBmaXZJbWFnZTogRml2R2FsbGVyeUltYWdlLFxuICAgIEBIb3N0KCkgQFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgaW1hZ2U6IEVsZW1lbnRSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzLCBvYnNlcnZlcikgPT4ge1xuICAgICAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmluVmlld3BvcnQpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSW50ZXJzZWN0aW9uKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMudmlydHVhbCkge1xuICAgICAgICAgICAgICBpby5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLmluVmlld3BvcnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5WaWV3cG9ydCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuZml2SW1hZ2UpIHtcbiAgICAgICAgICAgICAgdGhpcy53aWxsSGlkZS5lbWl0KHRoaXMuZml2SW1hZ2UpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmltYWdlKSB7XG4gICAgICAgICAgICAgIHRoaXMud2lsbEhpZGUuZW1pdCh0aGlzLmltYWdlLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaW9bJ1BPTExfSU5URVJWQUwnXSA9IDEwMDtcbiAgICBpZiAodGhpcy5maXZJbWFnZSkge1xuICAgICAgaW8ub2JzZXJ2ZSh0aGlzLmZpdkltYWdlLnRodW1ibmFpbC5uYXRpdmVFbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW1hZ2UpIHtcbiAgICAgIGlvLm9ic2VydmUodGhpcy5pbWFnZS5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgaGFuZGxlSW50ZXJzZWN0aW9uKCkge1xuICAgIHRoaXMuaW5WaWV3cG9ydCA9IHRydWU7XG4gICAgaWYgKHRoaXMuZml2TGF6eUltYWdlKSB7XG4gICAgICBpZiAodGhpcy5maXZJbWFnZSkge1xuICAgICAgICB0aGlzLmZpdkltYWdlLnNyYyA9IHRoaXMuZml2TGF6eUltYWdlO1xuICAgICAgICB0aGlzLndpbGxTaG93LmVtaXQodGhpcy5maXZJbWFnZSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaW1hZ2UpIHtcbiAgICAgICAgdGhpcy5pbWFnZS5uYXRpdmVFbGVtZW50LnNyYyA9IHRoaXMuZml2TGF6eUltYWdlO1xuICAgICAgICB0aGlzLndpbGxTaG93LmVtaXQodGhpcy5pbWFnZS5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZml2SW1hZ2UpIHtcbiAgICAgICAgdGhpcy53aWxsU2hvdy5lbWl0KHRoaXMuZml2SW1hZ2UpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmltYWdlKSB7XG4gICAgICAgIHRoaXMud2lsbFNob3cuZW1pdCh0aGlzLmltYWdlLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19