UNPKG

@fivethree/core

Version:
123 lines 9.96 kB
/** * @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