Commit 1038c257 by Emile TAVERNE

Build

parent 9ee24f84
/**
* Generated bundle index. Do not edit.
*/
export * from './public_api';
export {InViewportComponent as ɵb} from './lib/components';
export {InViewportDirective as ɵa} from './lib/directives';
export {ViewportService as ɵc} from './lib/services';
{"__symbolic":"module","version":4,"exports":[{"from":"./lib/viewport.service"}],"metadata":{"AitpUtilsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":12}],"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"}],"providers":[{"__symbolic":"reference","name":"ɵc"}],"exports":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"}]}]}],"members":{}}},"origins":{"AitpUtilsModule":"./lib/aitp-utils.module","ɵa":"./lib/directives","ɵb":"./lib/components","ɵc":"./lib/services"},"importAs":"aitp-utils"}
\ No newline at end of file
{
"version": 3,
"file": "aitp-utils.umd.js.map",
"sources": [
"ng://aitp-utils/lib/components/in-viewport/in-viewport.component.ts",
"ng://aitp-utils/lib/services/viewport.service.ts",
"ng://aitp-utils/lib/operators/until-destroy.ts",
"ng://aitp-utils/lib/directives/in-viewport.directive.ts",
"ng://aitp-utils/lib/aitp-utils.module.ts"
],
"sourcesContent": [
"import {ChangeDetectorRef, Component} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'aiut-in-viewport',\r\n templateUrl: './in-viewport.component.html'\r\n})\r\nexport class InViewportComponent {\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n }\r\n\r\n onViewportChange(intersectionObserverEntry: IntersectionObserverEntry) {\r\n if (intersectionObserverEntry.isIntersecting) {\r\n this.changeDetectorRef.reattach();\r\n } else {\r\n this.changeDetectorRef.detach();\r\n }\r\n }\r\n}\r\n",
"import {Injectable} from '@angular/core';\r\nimport {Observable, Subject} from 'rxjs';\r\nimport {filter, finalize} from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class ViewportService {\r\n private readonly options: IntersectionObserverInit = {\r\n rootMargin: '0px 0px 0px 0px',\r\n threshold: [0.5],\r\n };\r\n private observer: IntersectionObserver;\r\n private callback$: Subject<IntersectionObserverEntry> = new Subject();\r\n\r\n constructor() {\r\n this.observer = new IntersectionObserver(this.handler.bind(this), this.options);\r\n }\r\n\r\n observe(element: Element): Observable<IntersectionObserverEntry> {\r\n this.observer.observe(element);\r\n\r\n return this.callback$.asObservable().pipe(\r\n filter((entry: IntersectionObserverEntry) => entry.target === element),\r\n finalize(() => this.observer.unobserve(element)),\r\n );\r\n }\r\n\r\n private handler(entries: Array<IntersectionObserverEntry>): void {\r\n entries.forEach(entry => this.callback$.next(entry));\r\n }\r\n}\r\n",
"import {Observable} from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport { MonoTypeOperatorFunction } from 'rxjs/interfaces';\r\n\r\n// create a symbol identify the observable I add to\r\n// the component so it doesn't conflict with anything.\r\n// I need this so I'm able to add the desired behaviour to the component.\r\nexport const destroy$ = 'destroy$';\r\n\r\n/**\r\n * An operator that takes until destroy it takes a components this a parameter\r\n * returns a pipeable RxJS operator.\r\n */\r\nexport const untilDestroy = <T>(component: any): MonoTypeOperatorFunction<T> => {\r\n if (component[destroy$] === undefined) {\r\n // only hookup each component once.\r\n addDestroyObservableToComponent(component);\r\n }\r\n\r\n // pipe in the takeUntil destroy$ and return the source unaltered\r\n return takeUntil<T>(component[destroy$]);\r\n};\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function addDestroyObservableToComponent(component: any) {\r\n component[destroy$] = new Observable<void>(observer => {\r\n // keep track of the original destroy function,\r\n // the user might do something in there\r\n const orignalDestroy = component.ngOnDestroy;\r\n if (orignalDestroy == null) {\r\n // Angular does not support dynamic added destroy methods\r\n // so make sure there is one.\r\n throw new Error('untilDestroy operator needs the component to have an ngOnDestroy method');\r\n }\r\n // replace the ngOndestroy\r\n component.ngOnDestroy = () => {\r\n // fire off the destroy observable\r\n observer.next();\r\n // complete the observable\r\n observer.complete();\r\n // and at last, call the original destroy\r\n orignalDestroy.call(component);\r\n };\r\n // return cleanup function.\r\n return (_: any) => (component[destroy$] = undefined);\r\n });\r\n}\r\n",
"import {Directive, ElementRef, EventEmitter, Inject, Input, OnDestroy, OnInit, Output, PLATFORM_ID,} from '@angular/core';\r\nimport {isPlatformBrowser} from '@angular/common';\r\nimport {filter, take} from 'rxjs/operators';\r\nimport {ViewportService} from '../services';\r\nimport {untilDestroy} from '../operators';\r\n\r\n@Directive({\r\n selector: '[aiutInViewport]',\r\n})\r\nexport class InViewportDirective implements OnInit, OnDestroy {\r\n @Input() public preRender = true;\r\n @Input() public oneTime = false;\r\n @Output() readonly inViewport = new EventEmitter<Partial<IntersectionObserverEntry>>();\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef,\r\n private viewportService: ViewportService,\r\n @Inject(PLATFORM_ID) private platformId: Object,\r\n ) {\r\n }\r\n\r\n public ngOnInit() {\r\n if (isPlatformBrowser(this.platformId)) {\r\n if (this.oneTime) {\r\n this.viewportService\r\n .observe(this.elementRef.nativeElement)\r\n .pipe(\r\n untilDestroy(this),\r\n filter(entry => entry.intersectionRatio >= 0.5),\r\n take(1),\r\n )\r\n .subscribe((entry: IntersectionObserverEntry) => {\r\n this.inViewport.emit(entry);\r\n });\r\n } else {\r\n this.viewportService\r\n .observe(this.elementRef.nativeElement)\r\n .pipe(untilDestroy(this))\r\n .subscribe((entry: IntersectionObserverEntry) => {\r\n this.inViewport.emit(entry);\r\n });\r\n }\r\n } else {\r\n if (this.preRender) {\r\n this.inViewport.emit({isIntersecting: true, intersectionRatio: 1});\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n}\r\n",
"import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\n\r\nimport * as Components from './components';\r\nimport * as Directives from './directives';\r\nimport * as Services from './services';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [Directives.InViewportDirective, Components.InViewportComponent],\r\n providers: [Services.ViewportService],\r\n exports: [Directives.InViewportDirective, Components.InViewportComponent]\r\n})\r\nexport class AitpUtilsModule { }\r\n"
],
"names": [
"Component",
"ChangeDetectorRef",
"Subject",
"filter",
"finalize",
"Injectable",
"takeUntil",
"Observable",
"EventEmitter",
"isPlatformBrowser",
"take",
"Directive",
"ElementRef",
"Inject",
"PLATFORM_ID",
"Input",
"Output",
"NgModule",
"CommonModule",
"Directives.InViewportDirective",
"Components.InViewportComponent",
"Services.ViewportService"
],
"mappings": "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"
}
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/common"),require("@angular/core"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("aitp-utils",["exports","@angular/common","@angular/core","rxjs","rxjs/operators"],t):t(e["aitp-utils"]={},e.ng.common,e.ng.core,e.rxjs,e.rxjs.operators)}(this,function(e,r,n,t,o){"use strict";var i=function(){function e(e){this.changeDetectorRef=e}return e.prototype.onViewportChange=function(e){e.isIntersecting?this.changeDetectorRef.reattach():this.changeDetectorRef.detach()},e.decorators=[{type:n.Component,args:[{selector:"aiut-in-viewport",template:'<div (inViewport)="onViewportChange($event)" aiutInViewport>\r\n <ng-content></ng-content>\r\n</div>\r\n'}]}],e.ctorParameters=function(){return[{type:n.ChangeDetectorRef}]},e}(),s=function(){function e(){this.options={rootMargin:"0px 0px 0px 0px",threshold:[.5]},this.callback$=new t.Subject,this.observer=new IntersectionObserver(this.handler.bind(this),this.options)}return e.prototype.observe=function(t){var e=this;return this.observer.observe(t),this.callback$.asObservable().pipe(o.filter(function(e){return e.target===t}),o.finalize(function(){return e.observer.unobserve(t)}))},e.prototype.handler=function(e){var t=this;e.forEach(function(e){return t.callback$.next(e)})},e.decorators=[{type:n.Injectable}],e.ctorParameters=function(){return[]},e}(),c="destroy$",a=function(e){return e[c]===undefined&&p(e),o.takeUntil(e[c])};function p(r){r[c]=new t.Observable(function(e){var t=r.ngOnDestroy;if(null==t)throw new Error("untilDestroy operator needs the component to have an ngOnDestroy method");return r.ngOnDestroy=function(){e.next(),e.complete(),t.call(r)},function(e){return r[c]=undefined}})}var u=function(){function e(e,t,r){this.elementRef=e,this.viewportService=t,this.platformId=r,this.preRender=!0,this.oneTime=!1,this.inViewport=new n.EventEmitter}return e.prototype.ngOnInit=function(){var t=this;r.isPlatformBrowser(this.platformId)?this.oneTime?this.viewportService.observe(this.elementRef.nativeElement).pipe(a(this),o.filter(function(e){return.5<=e.intersectionRatio}),o.take(1)).subscribe(function(e){t.inViewport.emit(e)}):this.viewportService.observe(this.elementRef.nativeElement).pipe(a(this)).subscribe(function(e){t.inViewport.emit(e)}):this.preRender&&this.inViewport.emit({isIntersecting:!0,intersectionRatio:1})},e.prototype.ngOnDestroy=function(){},e.decorators=[{type:n.Directive,args:[{selector:"[aiutInViewport]"}]}],e.ctorParameters=function(){return[{type:n.ElementRef},{type:s},{type:Object,decorators:[{type:n.Inject,args:[n.PLATFORM_ID]}]}]},e.propDecorators={preRender:[{type:n.Input}],oneTime:[{type:n.Input}],inViewport:[{type:n.Output}]},e}(),f=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[r.CommonModule],declarations:[u,i],providers:[s],exports:[u,i]}]}],e}();e.AitpUtilsModule=f,e.InViewportComponent=i,e.InViewportDirective=u,e.addDestroyObservableToComponent=p,e.destroy$=c,e.untilDestroy=a,e.ViewportService=s,e.ɵb=i,e.ɵa=u,e.ɵc=s,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=aitp-utils.umd.min.js.map
\ No newline at end of file
{
"version": 3,
"sources": [
"ng://aitp-utils/lib/components/in-viewport/in-viewport.component.ts",
"ng://aitp-utils/lib/services/viewport.service.ts",
"ng://aitp-utils/lib/operators/until-destroy.ts",
"ng://aitp-utils/lib/directives/in-viewport.directive.ts",
"ng://aitp-utils/lib/aitp-utils.module.ts"
],
"names": [
"InViewportComponent",
"changeDetectorRef",
"this",
"prototype",
"onViewportChange",
"intersectionObserverEntry",
"isIntersecting",
"reattach",
"detach",
"Component",
"args",
"selector",
"template",
"ChangeDetectorRef",
"ViewportService",
"options",
"rootMargin",
"threshold",
"callback$",
"Subject",
"observer",
"IntersectionObserver",
"handler",
"bind",
"observe",
"element",
"_this",
"asObservable",
"pipe",
"filter",
"entry",
"target",
"finalize",
"unobserve",
"entries",
"forEach",
"next",
"Injectable",
"destroy$",
"untilDestroy",
"component",
"undefined",
"addDestroyObservableToComponent",
"takeUntil",
"Observable",
"orignalDestroy",
"ngOnDestroy",
"Error",
"complete",
"call",
"_",
"InViewportDirective",
"elementRef",
"viewportService",
"platformId",
"preRender",
"oneTime",
"inViewport",
"EventEmitter",
"ngOnInit",
"isPlatformBrowser",
"nativeElement",
"intersectionRatio",
"take",
"subscribe",
"emit",
"Directive",
"ElementRef",
"Object",
"decorators",
"type",
"Inject",
"PLATFORM_ID",
"Input",
"Output",
"AitpUtilsModule",
"NgModule",
"imports",
"CommonModule",
"declarations",
"Directives.InViewportDirective",
"Components.InViewportComponent",
"providers",
"Services.ViewportService",
"exports"
],
"mappings": "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",
"sourcesContent": [
"import {ChangeDetectorRef, Component} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'aiut-in-viewport',\r\n templateUrl: './in-viewport.component.html'\r\n})\r\nexport class InViewportComponent {\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n }\r\n\r\n onViewportChange(intersectionObserverEntry: IntersectionObserverEntry) {\r\n if (intersectionObserverEntry.isIntersecting) {\r\n this.changeDetectorRef.reattach();\r\n } else {\r\n this.changeDetectorRef.detach();\r\n }\r\n }\r\n}\r\n",
"import {Injectable} from '@angular/core';\r\nimport {Observable, Subject} from 'rxjs';\r\nimport {filter, finalize} from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class ViewportService {\r\n private readonly options: IntersectionObserverInit = {\r\n rootMargin: '0px 0px 0px 0px',\r\n threshold: [0.5],\r\n };\r\n private observer: IntersectionObserver;\r\n private callback$: Subject<IntersectionObserverEntry> = new Subject();\r\n\r\n constructor() {\r\n this.observer = new IntersectionObserver(this.handler.bind(this), this.options);\r\n }\r\n\r\n observe(element: Element): Observable<IntersectionObserverEntry> {\r\n this.observer.observe(element);\r\n\r\n return this.callback$.asObservable().pipe(\r\n filter((entry: IntersectionObserverEntry) => entry.target === element),\r\n finalize(() => this.observer.unobserve(element)),\r\n );\r\n }\r\n\r\n private handler(entries: Array<IntersectionObserverEntry>): void {\r\n entries.forEach(entry => this.callback$.next(entry));\r\n }\r\n}\r\n",
"import {Observable} from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport { MonoTypeOperatorFunction } from 'rxjs/interfaces';\r\n\r\n// create a symbol identify the observable I add to\r\n// the component so it doesn't conflict with anything.\r\n// I need this so I'm able to add the desired behaviour to the component.\r\nexport const destroy$ = 'destroy$';\r\n\r\n/**\r\n * An operator that takes until destroy it takes a components this a parameter\r\n * returns a pipeable RxJS operator.\r\n */\r\nexport const untilDestroy = <T>(component: any): MonoTypeOperatorFunction<T> => {\r\n if (component[destroy$] === undefined) {\r\n // only hookup each component once.\r\n addDestroyObservableToComponent(component);\r\n }\r\n\r\n // pipe in the takeUntil destroy$ and return the source unaltered\r\n return takeUntil<T>(component[destroy$]);\r\n};\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function addDestroyObservableToComponent(component: any) {\r\n component[destroy$] = new Observable<void>(observer => {\r\n // keep track of the original destroy function,\r\n // the user might do something in there\r\n const orignalDestroy = component.ngOnDestroy;\r\n if (orignalDestroy == null) {\r\n // Angular does not support dynamic added destroy methods\r\n // so make sure there is one.\r\n throw new Error('untilDestroy operator needs the component to have an ngOnDestroy method');\r\n }\r\n // replace the ngOndestroy\r\n component.ngOnDestroy = () => {\r\n // fire off the destroy observable\r\n observer.next();\r\n // complete the observable\r\n observer.complete();\r\n // and at last, call the original destroy\r\n orignalDestroy.call(component);\r\n };\r\n // return cleanup function.\r\n return (_: any) => (component[destroy$] = undefined);\r\n });\r\n}\r\n",
"import {Directive, ElementRef, EventEmitter, Inject, Input, OnDestroy, OnInit, Output, PLATFORM_ID,} from '@angular/core';\r\nimport {isPlatformBrowser} from '@angular/common';\r\nimport {filter, take} from 'rxjs/operators';\r\nimport {ViewportService} from '../services';\r\nimport {untilDestroy} from '../operators';\r\n\r\n@Directive({\r\n selector: '[aiutInViewport]',\r\n})\r\nexport class InViewportDirective implements OnInit, OnDestroy {\r\n @Input() public preRender = true;\r\n @Input() public oneTime = false;\r\n @Output() readonly inViewport = new EventEmitter<Partial<IntersectionObserverEntry>>();\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef,\r\n private viewportService: ViewportService,\r\n @Inject(PLATFORM_ID) private platformId: Object,\r\n ) {\r\n }\r\n\r\n public ngOnInit() {\r\n if (isPlatformBrowser(this.platformId)) {\r\n if (this.oneTime) {\r\n this.viewportService\r\n .observe(this.elementRef.nativeElement)\r\n .pipe(\r\n untilDestroy(this),\r\n filter(entry => entry.intersectionRatio >= 0.5),\r\n take(1),\r\n )\r\n .subscribe((entry: IntersectionObserverEntry) => {\r\n this.inViewport.emit(entry);\r\n });\r\n } else {\r\n this.viewportService\r\n .observe(this.elementRef.nativeElement)\r\n .pipe(untilDestroy(this))\r\n .subscribe((entry: IntersectionObserverEntry) => {\r\n this.inViewport.emit(entry);\r\n });\r\n }\r\n } else {\r\n if (this.preRender) {\r\n this.inViewport.emit({isIntersecting: true, intersectionRatio: 1});\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n}\r\n",
"import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\n\r\nimport * as Components from './components';\r\nimport * as Directives from './directives';\r\nimport * as Services from './services';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [Directives.InViewportDirective, Components.InViewportComponent],\r\n providers: [Services.ViewportService],\r\n exports: [Directives.InViewportDirective, Components.InViewportComponent]\r\n})\r\nexport class AitpUtilsModule { }\r\n"
]
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* Generated bundle index. Do not edit.
*/
export {
AitpUtilsModule,
InViewportComponent,
InViewportDirective,
addDestroyObservableToComponent,
destroy$,
untilDestroy,
ViewportService
} from './public_api';
export {InViewportComponent as ɵb} from './lib/components';
export {InViewportDirective as ɵa} from './lib/directives';
export {ViewportService as ɵc} from './lib/services';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWl0cC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FpdHAtdXRpbHMvIiwic291cmNlcyI6WyJhaXRwLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxvSkFBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzNELE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZUFBZSxJQUFJLEVBQUUsRUFBQyxNQUFNLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge0luVmlld3BvcnRDb21wb25lbnQgYXMgybVifSBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcbmV4cG9ydCB7SW5WaWV3cG9ydERpcmVjdGl2ZSBhcyDJtWF9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMnO1xuZXhwb3J0IHtWaWV3cG9ydFNlcnZpY2UgYXMgybVjfSBmcm9tICcuL2xpYi9zZXJ2aWNlcyc7Il19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import * as Components from './components';
import * as Directives from './directives';
import * as Services from './services';
export class AitpUtilsModule {
}
AitpUtilsModule.decorators = [
{
type: NgModule, args: [{
imports: [CommonModule],
declarations: [Directives.InViewportDirective, Components.InViewportComponent],
providers: [Services.ViewportService],
exports: [Directives.InViewportDirective, Components.InViewportComponent]
},]
}
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWl0cC11dGlscy5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9haXRwLXV0aWxzLyIsInNvdXJjZXMiOlsibGliL2FpdHAtdXRpbHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEtBQUssVUFBVSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEtBQUssVUFBVSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLFlBQVksQ0FBQztBQVF2QyxNQUFNLE9BQU8sZUFBZTs7O1lBTjNCLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZCLFlBQVksRUFBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsbUJBQW1CLENBQUM7Z0JBQzlFLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7Z0JBQ3JDLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsbUJBQW1CLENBQUM7YUFDMUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5pbXBvcnQgKiBhcyBDb21wb25lbnRzIGZyb20gJy4vY29tcG9uZW50cyc7XHJcbmltcG9ydCAqIGFzIERpcmVjdGl2ZXMgZnJvbSAnLi9kaXJlY3RpdmVzJztcclxuaW1wb3J0ICogYXMgU2VydmljZXMgZnJvbSAnLi9zZXJ2aWNlcyc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG4gIGRlY2xhcmF0aW9uczogW0RpcmVjdGl2ZXMuSW5WaWV3cG9ydERpcmVjdGl2ZSwgQ29tcG9uZW50cy5JblZpZXdwb3J0Q29tcG9uZW50XSxcclxuICBwcm92aWRlcnM6IFtTZXJ2aWNlcy5WaWV3cG9ydFNlcnZpY2VdLFxyXG4gIGV4cG9ydHM6IFtEaXJlY3RpdmVzLkluVmlld3BvcnREaXJlY3RpdmUsIENvbXBvbmVudHMuSW5WaWV3cG9ydENvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFpdHBVdGlsc01vZHVsZSB7IH1cclxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import {ChangeDetectorRef, Component} from '@angular/core';
export class InViewportComponent {
/**
* @param {?} changeDetectorRef
*/
constructor(changeDetectorRef) {
this.changeDetectorRef = changeDetectorRef;
}
/**
* @param {?} intersectionObserverEntry
* @return {?}
*/
onViewportChange(intersectionObserverEntry) {
if (intersectionObserverEntry.isIntersecting) {
this.changeDetectorRef.reattach();
} else {
this.changeDetectorRef.detach();
}
}
}
InViewportComponent.decorators = [
{
type: Component, args: [{
selector: 'aiut-in-viewport',
template: "<div (inViewport)=\"onViewportChange($event)\" aiutInViewport>\r\n <ng-content></ng-content>\r\n</div>\r\n"
}]
}
];
/** @nocollapse */
InViewportComponent.ctorParameters = () => [
{type: ChangeDetectorRef}
];
if (false) {
/**
* @type {?}
* @private
*/
InViewportComponent.prototype.changeDetectorRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tdmlld3BvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWl0cC11dGlscy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2luLXZpZXdwb3J0L2luLXZpZXdwb3J0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQU0zRCxNQUFNLE9BQU8sbUJBQW1COzs7O0lBQzlCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBQ3hELENBQUM7Ozs7O0lBRUQsZ0JBQWdCLENBQUMseUJBQW9EO1FBQ25FLElBQUkseUJBQXlCLENBQUMsY0FBYyxFQUFFO1lBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNuQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQzs7O1lBZEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLHVIQUEyQzthQUM1Qzs7OztZQUxPLGlCQUFpQjs7Ozs7OztJQU9YLGdEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FpdXQtaW4tdmlld3BvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbi12aWV3cG9ydC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEluVmlld3BvcnRDb21wb25lbnQge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgfVxyXG5cclxuICBvblZpZXdwb3J0Q2hhbmdlKGludGVyc2VjdGlvbk9ic2VydmVyRW50cnk6IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkpIHtcclxuICAgIGlmIChpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYucmVhdHRhY2goKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0YWNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export {InViewportComponent} from './in-viewport/in-viewport.component';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9haXRwLXV0aWxzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG9DQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbi12aWV3cG9ydC9pbi12aWV3cG9ydC5jb21wb25lbnQnO1xyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import {Directive, ElementRef, EventEmitter, Inject, Input, Output, PLATFORM_ID,} from '@angular/core';
import {isPlatformBrowser} from '@angular/common';
import {filter, take} from 'rxjs/operators';
import {ViewportService} from '../services';
import {untilDestroy} from '../operators';
export class InViewportDirective {
/**
* @param {?} elementRef
* @param {?} viewportService
* @param {?} platformId
*/
constructor(elementRef, viewportService, platformId) {
this.elementRef = elementRef;
this.viewportService = viewportService;
this.platformId = platformId;
this.preRender = true;
this.oneTime = false;
this.inViewport = new EventEmitter();
}
/**
* @return {?}
*/
ngOnInit() {
if (isPlatformBrowser(this.platformId)) {
if (this.oneTime) {
this.viewportService
.observe(this.elementRef.nativeElement)
.pipe(untilDestroy(this), filter((/**
* @param {?} entry
* @return {?}
*/
entry => entry.intersectionRatio >= 0.5)), take(1))
.subscribe((/**
* @param {?} entry
* @return {?}
*/
(entry) => {
this.inViewport.emit(entry);
}));
} else {
this.viewportService
.observe(this.elementRef.nativeElement)
.pipe(untilDestroy(this))
.subscribe((/**
* @param {?} entry
* @return {?}
*/
(entry) => {
this.inViewport.emit(entry);
}));
}
} else {
if (this.preRender) {
this.inViewport.emit({isIntersecting: true, intersectionRatio: 1});
}
}
}
/**
* @return {?}
*/
ngOnDestroy() {
}
}
InViewportDirective.decorators = [
{
type: Directive, args: [{
selector: '[aiutInViewport]',
},]
}
];
/** @nocollapse */
InViewportDirective.ctorParameters = () => [
{type: ElementRef},
{type: ViewportService},
{type: Object, decorators: [{type: Inject, args: [PLATFORM_ID,]}]}
];
InViewportDirective.propDecorators = {
preRender: [{type: Input}],
oneTime: [{type: Input}],
inViewport: [{type: Output}]
};
if (false) {
/** @type {?} */
InViewportDirective.prototype.preRender;
/** @type {?} */
InViewportDirective.prototype.oneTime;
/** @type {?} */
InViewportDirective.prototype.inViewport;
/**
* @type {?}
* @private
*/
InViewportDirective.prototype.elementRef;
/**
* @type {?}
* @private
*/
InViewportDirective.prototype.viewportService;
/**
* @type {?}
* @private
*/
InViewportDirective.prototype.platformId;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tdmlld3BvcnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWl0cC11dGlscy8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL2luLXZpZXdwb3J0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxXQUFXLEdBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFLMUMsTUFBTSxPQUFPLG1CQUFtQjs7Ozs7O0lBSzlCLFlBQ21CLFVBQXNCLEVBQy9CLGVBQWdDLEVBQ1gsVUFBa0I7UUFGOUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUMvQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDWCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBUGpDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNiLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBc0MsQ0FBQztJQU92RixDQUFDOzs7O0lBRU0sUUFBUTtRQUNiLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3RDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGVBQWU7cUJBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztxQkFDdEMsSUFBSSxDQUNILFlBQVksQ0FBQyxJQUFJLENBQUMsRUFDbEIsTUFBTTs7OztnQkFBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxHQUFHLEVBQUMsRUFDL0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSO3FCQUNBLFNBQVM7Ozs7Z0JBQUMsQ0FBQyxLQUFnQyxFQUFFLEVBQUU7b0JBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixDQUFDLEVBQUMsQ0FBQzthQUNOO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxlQUFlO3FCQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7cUJBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ3hCLFNBQVM7Ozs7Z0JBQUMsQ0FBQyxLQUFnQyxFQUFFLEVBQUU7b0JBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixDQUFDLEVBQUMsQ0FBQzthQUNOO1NBQ0Y7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7YUFDcEU7U0FDRjtJQUNILENBQUM7Ozs7SUFFRCxXQUFXO0lBQ1gsQ0FBQzs7O1lBNUNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2FBQzdCOzs7O1lBUmtCLFVBQVU7WUFHckIsZUFBZTtZQWNzQixNQUFNLHVCQUE5QyxNQUFNLFNBQUMsV0FBVzs7O3dCQVBwQixLQUFLO3NCQUNMLEtBQUs7eUJBQ0wsTUFBTTs7OztJQUZQLHdDQUFpQzs7SUFDakMsc0NBQWdDOztJQUNoQyx5Q0FBdUY7Ozs7O0lBR3JGLHlDQUF1Qzs7Ozs7SUFDdkMsOENBQXdDOzs7OztJQUN4Qyx5Q0FBK0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBQTEFURk9STV9JRCx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge2lzUGxhdGZvcm1Ccm93c2VyfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge2ZpbHRlciwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1ZpZXdwb3J0U2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQge3VudGlsRGVzdHJveX0gZnJvbSAnLi4vb3BlcmF0b3JzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FpdXRJblZpZXdwb3J0XScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJblZpZXdwb3J0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwcmVSZW5kZXIgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvbmVUaW1lID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGluVmlld3BvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFBhcnRpYWw8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSB2aWV3cG9ydFNlcnZpY2U6IFZpZXdwb3J0U2VydmljZSxcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuICAgICAgaWYgKHRoaXMub25lVGltZSkge1xyXG4gICAgICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlXHJcbiAgICAgICAgICAub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB1bnRpbERlc3Ryb3kodGhpcyksXHJcbiAgICAgICAgICAgIGZpbHRlcihlbnRyeSA9PiBlbnRyeS5pbnRlcnNlY3Rpb25SYXRpbyA+PSAwLjUpLFxyXG4gICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoZW50cnk6IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pblZpZXdwb3J0LmVtaXQoZW50cnkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52aWV3cG9ydFNlcnZpY2VcclxuICAgICAgICAgIC5vYnNlcnZlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KVxyXG4gICAgICAgICAgLnBpcGUodW50aWxEZXN0cm95KHRoaXMpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoZW50cnk6IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pblZpZXdwb3J0LmVtaXQoZW50cnkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnByZVJlbmRlcikge1xyXG4gICAgICAgIHRoaXMuaW5WaWV3cG9ydC5lbWl0KHtpc0ludGVyc2VjdGluZzogdHJ1ZSwgaW50ZXJzZWN0aW9uUmF0aW86IDF9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgfVxyXG59XHJcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export {InViewportDirective} from './in-viewport.directive';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9haXRwLXV0aWxzLyIsInNvdXJjZXMiOlsibGliL2RpcmVjdGl2ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG9DQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbi12aWV3cG9ydC5kaXJlY3RpdmUnO1xyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export {addDestroyObservableToComponent, destroy$, untilDestroy} from './until-destroy';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9haXRwLXV0aWxzLyIsInNvdXJjZXMiOlsibGliL29wZXJhdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsd0VBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3VudGlsLWRlc3Ryb3knO1xyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import {Observable} from 'rxjs';
import {takeUntil} from 'rxjs/operators';
// create a symbol identify the observable I add to
// the component so it doesn't conflict with anything.
// I need this so I'm able to add the desired behaviour to the component.
/** @type {?} */
export const destroy$ = 'destroy$';
/**
* An operator that takes until destroy it takes a components this a parameter
* returns a pipeable RxJS operator.
* @type {?}
*/
export const untilDestroy = (/**
* @template T
* @param {?} component
* @return {?}
*/
(component) => {
if (component[destroy$] === undefined) {
// only hookup each component once.
addDestroyObservableToComponent(component);
}
// pipe in the takeUntil destroy$ and return the source unaltered
return takeUntil(component[destroy$]);
});
/**
* \@internal
* @param {?} component
* @return {?}
*/
export function addDestroyObservableToComponent(component) {
component[destroy$] = new Observable((/**
* @param {?} observer
* @return {?}
*/
observer => {
// keep track of the original destroy function,
// the user might do something in there
/** @type {?} */
const orignalDestroy = component.ngOnDestroy;
if (orignalDestroy == null) {
// Angular does not support dynamic added destroy methods
// so make sure there is one.
throw new Error('untilDestroy operator needs the component to have an ngOnDestroy method');
}
// replace the ngOndestroy
component.ngOnDestroy = (/**
* @return {?}
*/
() => {
// fire off the destroy observable
observer.next();
// complete the observable
observer.complete();
// and at last, call the original destroy
orignalDestroy.call(component);
});
// return cleanup function.
return (/**
* @param {?} _
* @return {?}
*/
(_) => (component[destroy$] = undefined));
}));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW50aWwtZGVzdHJveS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FpdHAtdXRpbHMvIiwic291cmNlcyI6WyJsaWIvb3BlcmF0b3JzL3VudGlsLWRlc3Ryb3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7OztBQU16QyxNQUFNLE9BQU8sUUFBUSxHQUFHLFVBQVU7Ozs7OztBQU1sQyxNQUFNLE9BQU8sWUFBWTs7Ozs7QUFBRyxDQUFJLFNBQWMsRUFBK0IsRUFBRTtJQUM3RSxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxTQUFTLEVBQUU7UUFDckMsbUNBQW1DO1FBQ25DLCtCQUErQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQzVDO0lBRUQsaUVBQWlFO0lBQ2pFLE9BQU8sU0FBUyxDQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQTs7Ozs7O0FBS0QsTUFBTSxVQUFVLCtCQUErQixDQUFDLFNBQWM7SUFDNUQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksVUFBVTs7OztJQUFPLFFBQVEsQ0FBQyxFQUFFOzs7O2NBRzlDLGNBQWMsR0FBRyxTQUFTLENBQUMsV0FBVztRQUM1QyxJQUFJLGNBQWMsSUFBSSxJQUFJLEVBQUU7WUFDMUIseURBQXlEO1lBQ3pELDZCQUE2QjtZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLHlFQUF5RSxDQUFDLENBQUM7U0FDNUY7UUFDRCwwQkFBMEI7UUFDMUIsU0FBUyxDQUFDLFdBQVc7OztRQUFHLEdBQUcsRUFBRTtZQUMzQixrQ0FBa0M7WUFDbEMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hCLDBCQUEwQjtZQUMxQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIseUNBQXlDO1lBQ3pDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFBLENBQUM7UUFDRiwyQkFBMkI7UUFDM0I7Ozs7UUFBTyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQUM7SUFDdkQsQ0FBQyxFQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uIH0gZnJvbSAncnhqcy9pbnRlcmZhY2VzJztcclxuXHJcbi8vIGNyZWF0ZSBhIHN5bWJvbCBpZGVudGlmeSB0aGUgb2JzZXJ2YWJsZSBJIGFkZCB0b1xyXG4vLyB0aGUgY29tcG9uZW50IHNvIGl0IGRvZXNuJ3QgY29uZmxpY3Qgd2l0aCBhbnl0aGluZy5cclxuLy8gSSBuZWVkIHRoaXMgc28gSSdtIGFibGUgdG8gYWRkIHRoZSBkZXNpcmVkIGJlaGF2aW91ciB0byB0aGUgY29tcG9uZW50LlxyXG5leHBvcnQgY29uc3QgZGVzdHJveSQgPSAnZGVzdHJveSQnO1xyXG5cclxuLyoqXHJcbiAqIEFuIG9wZXJhdG9yIHRoYXQgdGFrZXMgdW50aWwgZGVzdHJveSBpdCB0YWtlcyBhIGNvbXBvbmVudHMgdGhpcyBhIHBhcmFtZXRlclxyXG4gKiByZXR1cm5zIGEgcGlwZWFibGUgUnhKUyBvcGVyYXRvci5cclxuICovXHJcbmV4cG9ydCBjb25zdCB1bnRpbERlc3Ryb3kgPSA8VD4oY29tcG9uZW50OiBhbnkpOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248VD4gPT4ge1xyXG4gIGlmIChjb21wb25lbnRbZGVzdHJveSRdID09PSB1bmRlZmluZWQpIHtcclxuICAgIC8vIG9ubHkgaG9va3VwIGVhY2ggY29tcG9uZW50IG9uY2UuXHJcbiAgICBhZGREZXN0cm95T2JzZXJ2YWJsZVRvQ29tcG9uZW50KGNvbXBvbmVudCk7XHJcbiAgfVxyXG5cclxuICAvLyBwaXBlIGluIHRoZSB0YWtlVW50aWwgZGVzdHJveSQgYW5kIHJldHVybiB0aGUgc291cmNlIHVuYWx0ZXJlZFxyXG4gIHJldHVybiB0YWtlVW50aWw8VD4oY29tcG9uZW50W2Rlc3Ryb3kkXSk7XHJcbn07XHJcblxyXG4vKipcclxuICogQGludGVybmFsXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRkRGVzdHJveU9ic2VydmFibGVUb0NvbXBvbmVudChjb21wb25lbnQ6IGFueSkge1xyXG4gIGNvbXBvbmVudFtkZXN0cm95JF0gPSBuZXcgT2JzZXJ2YWJsZTx2b2lkPihvYnNlcnZlciA9PiB7XHJcbiAgICAvLyBrZWVwIHRyYWNrIG9mIHRoZSBvcmlnaW5hbCBkZXN0cm95IGZ1bmN0aW9uLFxyXG4gICAgLy8gdGhlIHVzZXIgbWlnaHQgZG8gc29tZXRoaW5nIGluIHRoZXJlXHJcbiAgICBjb25zdCBvcmlnbmFsRGVzdHJveSA9IGNvbXBvbmVudC5uZ09uRGVzdHJveTtcclxuICAgIGlmIChvcmlnbmFsRGVzdHJveSA9PSBudWxsKSB7XHJcbiAgICAgIC8vIEFuZ3VsYXIgZG9lcyBub3Qgc3VwcG9ydCBkeW5hbWljIGFkZGVkIGRlc3Ryb3kgbWV0aG9kc1xyXG4gICAgICAvLyBzbyBtYWtlIHN1cmUgdGhlcmUgaXMgb25lLlxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VudGlsRGVzdHJveSBvcGVyYXRvciBuZWVkcyB0aGUgY29tcG9uZW50IHRvIGhhdmUgYW4gbmdPbkRlc3Ryb3kgbWV0aG9kJyk7XHJcbiAgICB9XHJcbiAgICAvLyByZXBsYWNlIHRoZSBuZ09uZGVzdHJveVxyXG4gICAgY29tcG9uZW50Lm5nT25EZXN0cm95ID0gKCkgPT4ge1xyXG4gICAgICAvLyBmaXJlIG9mZiB0aGUgZGVzdHJveSBvYnNlcnZhYmxlXHJcbiAgICAgIG9ic2VydmVyLm5leHQoKTtcclxuICAgICAgLy8gY29tcGxldGUgdGhlIG9ic2VydmFibGVcclxuICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgLy8gYW5kIGF0IGxhc3QsIGNhbGwgdGhlIG9yaWdpbmFsIGRlc3Ryb3lcclxuICAgICAgb3JpZ25hbERlc3Ryb3kuY2FsbChjb21wb25lbnQpO1xyXG4gICAgfTtcclxuICAgIC8vIHJldHVybiBjbGVhbnVwIGZ1bmN0aW9uLlxyXG4gICAgcmV0dXJuIChfOiBhbnkpID0+IChjb21wb25lbnRbZGVzdHJveSRdID0gdW5kZWZpbmVkKTtcclxuICB9KTtcclxufVxyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export {ViewportService} from './viewport.service';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9haXRwLXV0aWxzLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnQ0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdmlld3BvcnQuc2VydmljZSc7XHJcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import {Injectable} from '@angular/core';
import {Subject} from 'rxjs';
import {filter, finalize} from 'rxjs/operators';
export class ViewportService {
constructor() {
this.options = {
rootMargin: '0px 0px 0px 0px',
threshold: [0.5],
};
this.callback$ = new Subject();
this.observer = new IntersectionObserver(this.handler.bind(this), this.options);
}
/**
* @param {?} element
* @return {?}
*/
observe(element) {
this.observer.observe(element);
return this.callback$.asObservable().pipe(filter((/**
* @param {?} entry
* @return {?}
*/
(entry) => entry.target === element)), finalize((/**
* @return {?}
*/
() => this.observer.unobserve(element))));
}
/**
* @private
* @param {?} entries
* @return {?}
*/
handler(entries) {
entries.forEach((/**
* @param {?} entry
* @return {?}
*/
entry => this.callback$.next(entry)));
}
}
ViewportService.decorators = [
{type: Injectable}
];
/** @nocollapse */
ViewportService.ctorParameters = () => [];
if (false) {
/**
* @type {?}
* @private
*/
ViewportService.prototype.options;
/**
* @type {?}
* @private
*/
ViewportService.prototype.observer;
/**
* @type {?}
* @private
*/
ViewportService.prototype.callback$;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FpdHAtdXRpbHMvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvdmlld3BvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxNQUFNLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHaEQsTUFBTSxPQUFPLGVBQWU7SUFRMUI7UUFQaUIsWUFBTyxHQUE2QjtZQUNuRCxVQUFVLEVBQUUsaUJBQWlCO1lBQzdCLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNqQixDQUFDO1FBRU0sY0FBUyxHQUF1QyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBR3BFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEYsQ0FBQzs7Ozs7SUFFRCxPQUFPLENBQUMsT0FBZ0I7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FDdkMsTUFBTTs7OztRQUFDLENBQUMsS0FBZ0MsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUMsRUFDdEUsUUFBUTs7O1FBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FDakQsQ0FBQztJQUNKLENBQUM7Ozs7OztJQUVPLE9BQU8sQ0FBQyxPQUF5QztRQUN2RCxPQUFPLENBQUMsT0FBTzs7OztRQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUMsQ0FBQztJQUN2RCxDQUFDOzs7WUF4QkYsVUFBVTs7Ozs7Ozs7O0lBRVQsa0NBR0U7Ozs7O0lBQ0YsbUNBQXVDOzs7OztJQUN2QyxvQ0FBc0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge2ZpbHRlciwgZmluYWxpemV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFZpZXdwb3J0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBJbnRlcnNlY3Rpb25PYnNlcnZlckluaXQgPSB7XHJcbiAgICByb290TWFyZ2luOiAnMHB4IDBweCAwcHggMHB4JyxcclxuICAgIHRocmVzaG9sZDogWzAuNV0sXHJcbiAgfTtcclxuICBwcml2YXRlIG9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcclxuICBwcml2YXRlIGNhbGxiYWNrJDogU3ViamVjdDxJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcih0aGlzLmhhbmRsZXIuYmluZCh0aGlzKSwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIG9ic2VydmUoZWxlbWVudDogRWxlbWVudCk6IE9ic2VydmFibGU8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4ge1xyXG4gICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmNhbGxiYWNrJC5hc09ic2VydmFibGUoKS5waXBlKFxyXG4gICAgICBmaWx0ZXIoKGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KSA9PiBlbnRyeS50YXJnZXQgPT09IGVsZW1lbnQpLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLm9ic2VydmVyLnVub2JzZXJ2ZShlbGVtZW50KSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVyKGVudHJpZXM6IEFycmF5PEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+KTogdm9pZCB7XHJcbiAgICBlbnRyaWVzLmZvckVhY2goZW50cnkgPT4gdGhpcy5jYWxsYmFjayQubmV4dChlbnRyeSkpO1xyXG4gIH1cclxufVxyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* Public API Surface of aitp-utils
*/
export {AitpUtilsModule} from './lib/aitp-utils.module';
export {InViewportComponent} from './lib/components';
export {InViewportDirective} from './lib/directives';
export {addDestroyObservableToComponent, destroy$, untilDestroy} from './lib/operators';
export {ViewportService} from './lib/services';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FpdHAtdXRpbHMvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxnQ0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxvQ0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxvQ0FBYyxrQkFBa0IsQ0FBQztBQUNqQyx3RUFBYyxpQkFBaUIsQ0FBQztBQUNoQyxnQ0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBhaXRwLXV0aWxzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYWl0cC11dGlscy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL29wZXJhdG9ycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcclxuIl19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* Generated bundle index. Do not edit.
*/
export {
AitpUtilsModule,
InViewportComponent,
InViewportDirective,
addDestroyObservableToComponent,
destroy$,
untilDestroy,
ViewportService
} from './public_api';
export {InViewportComponent as ɵb} from './lib/components';
export {InViewportDirective as ɵa} from './lib/directives';
export {ViewportService as ɵc} from './lib/services';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWl0cC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FpdHAtdXRpbHMvIiwic291cmNlcyI6WyJhaXRwLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxvSkFBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzNELE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZUFBZSxJQUFJLEVBQUUsRUFBQyxNQUFNLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge0luVmlld3BvcnRDb21wb25lbnQgYXMgybVifSBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcbmV4cG9ydCB7SW5WaWV3cG9ydERpcmVjdGl2ZSBhcyDJtWF9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMnO1xuZXhwb3J0IHtWaWV3cG9ydFNlcnZpY2UgYXMgybVjfSBmcm9tICcuL2xpYi9zZXJ2aWNlcyc7Il19
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import * as Components from './components';
import * as Directives from './directives';
import * as Services from './services';
var AitpUtilsModule = /** @class */ (function () {
function AitpUtilsModule() {
}
AitpUtilsModule.decorators = [
{
type: NgModule, args: [{
imports: [CommonModule],
declarations: [Directives.InViewportDirective, Components.InViewportComponent],
providers: [Services.ViewportService],
exports: [Directives.InViewportDirective, Components.InViewportComponent]
},]
}
];
return AitpUtilsModule;
}());
export {AitpUtilsModule};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWl0cC11dGlscy5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9haXRwLXV0aWxzLyIsInNvdXJjZXMiOlsibGliL2FpdHAtdXRpbHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEtBQUssVUFBVSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEtBQUssVUFBVSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLFlBQVksQ0FBQztBQUV2QztJQUFBO0lBTStCLENBQUM7O2dCQU4vQixRQUFRLFNBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixZQUFZLEVBQUUsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLG1CQUFtQixDQUFDO29CQUM5RSxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLG1CQUFtQixDQUFDO2lCQUMxRTs7SUFDOEIsc0JBQUM7Q0FBQSxBQU5oQyxJQU1nQztTQUFuQixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0ICogYXMgQ29tcG9uZW50cyBmcm9tICcuL2NvbXBvbmVudHMnO1xyXG5pbXBvcnQgKiBhcyBEaXJlY3RpdmVzIGZyb20gJy4vZGlyZWN0aXZlcyc7XHJcbmltcG9ydCAqIGFzIFNlcnZpY2VzIGZyb20gJy4vc2VydmljZXMnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICBkZWNsYXJhdGlvbnM6IFtEaXJlY3RpdmVzLkluVmlld3BvcnREaXJlY3RpdmUsIENvbXBvbmVudHMuSW5WaWV3cG9ydENvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbU2VydmljZXMuVmlld3BvcnRTZXJ2aWNlXSxcclxuICBleHBvcnRzOiBbRGlyZWN0aXZlcy5JblZpZXdwb3J0RGlyZWN0aXZlLCBDb21wb25lbnRzLkluVmlld3BvcnRDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBaXRwVXRpbHNNb2R1bGUgeyB9XHJcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import {ChangeDetectorRef, Component} from '@angular/core';
var InViewportComponent = /** @class */ (function () {
function InViewportComponent(changeDetectorRef) {
this.changeDetectorRef = changeDetectorRef;
}
/**
* @param {?} intersectionObserverEntry
* @return {?}
*/
InViewportComponent.prototype.onViewportChange = /**
* @param {?} intersectionObserverEntry
* @return {?}
*/
function (intersectionObserverEntry) {
if (intersectionObserverEntry.isIntersecting) {
this.changeDetectorRef.reattach();
} else {
this.changeDetectorRef.detach();
}
};
InViewportComponent.decorators = [
{
type: Component, args: [{
selector: 'aiut-in-viewport',
template: "<div (inViewport)=\"onViewportChange($event)\" aiutInViewport>\r\n <ng-content></ng-content>\r\n</div>\r\n"
}]
}
];
/** @nocollapse */
InViewportComponent.ctorParameters = function () {
return [
{type: ChangeDetectorRef}
];
};
return InViewportComponent;
}());
export {InViewportComponent};
if (false) {
/**
* @type {?}
* @private
*/
InViewportComponent.prototype.changeDetectorRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tdmlld3BvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWl0cC11dGlscy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2luLXZpZXdwb3J0L2luLXZpZXdwb3J0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUzRDtJQUtFLDZCQUFvQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUN4RCxDQUFDOzs7OztJQUVELDhDQUFnQjs7OztJQUFoQixVQUFpQix5QkFBb0Q7UUFDbkUsSUFBSSx5QkFBeUIsQ0FBQyxjQUFjLEVBQUU7WUFDNUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ25DO2FBQU07WUFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDakM7SUFDSCxDQUFDOztnQkFkRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsdUhBQTJDO2lCQUM1Qzs7OztnQkFMTyxpQkFBaUI7O0lBaUJ6QiwwQkFBQztDQUFBLEFBZkQsSUFlQztTQVhZLG1CQUFtQjs7Ozs7O0lBQ2xCLGdEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FpdXQtaW4tdmlld3BvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbi12aWV3cG9ydC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEluVmlld3BvcnRDb21wb25lbnQge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgfVxyXG5cclxuICBvblZpZXdwb3J0Q2hhbmdlKGludGVyc2VjdGlvbk9ic2VydmVyRW50cnk6IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkpIHtcclxuICAgIGlmIChpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYucmVhdHRhY2goKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0YWNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export {InViewportComponent} from './in-viewport/in-viewport.component';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9haXRwLXV0aWxzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG9DQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbi12aWV3cG9ydC9pbi12aWV3cG9ydC5jb21wb25lbnQnO1xyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import {Directive, ElementRef, EventEmitter, Inject, Input, Output, PLATFORM_ID,} from '@angular/core';
import {isPlatformBrowser} from '@angular/common';
import {filter, take} from 'rxjs/operators';
import {ViewportService} from '../services';
import {untilDestroy} from '../operators';
var InViewportDirective = /** @class */ (function () {
function InViewportDirective(elementRef, viewportService, platformId) {
this.elementRef = elementRef;
this.viewportService = viewportService;
this.platformId = platformId;
this.preRender = true;
this.oneTime = false;
this.inViewport = new EventEmitter();
}
/**
* @return {?}
*/
InViewportDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
if (isPlatformBrowser(this.platformId)) {
if (this.oneTime) {
this.viewportService
.observe(this.elementRef.nativeElement)
.pipe(untilDestroy(this), filter((/**
* @param {?} entry
* @return {?}
*/
function (entry) {
return entry.intersectionRatio >= 0.5;
})), take(1))
.subscribe((/**
* @param {?} entry
* @return {?}
*/
function (entry) {
_this.inViewport.emit(entry);
}));
} else {
this.viewportService
.observe(this.elementRef.nativeElement)
.pipe(untilDestroy(this))
.subscribe((/**
* @param {?} entry
* @return {?}
*/
function (entry) {
_this.inViewport.emit(entry);
}));
}
} else {
if (this.preRender) {
this.inViewport.emit({isIntersecting: true, intersectionRatio: 1});
}
}
};
/**
* @return {?}
*/
InViewportDirective.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
};
InViewportDirective.decorators = [
{
type: Directive, args: [{
selector: '[aiutInViewport]',
},]
}
];
/** @nocollapse */
InViewportDirective.ctorParameters = function () {
return [
{type: ElementRef},
{type: ViewportService},
{type: Object, decorators: [{type: Inject, args: [PLATFORM_ID,]}]}
];
};
InViewportDirective.propDecorators = {
preRender: [{type: Input}],
oneTime: [{type: Input}],
inViewport: [{type: Output}]
};
return InViewportDirective;
}());
export {InViewportDirective};
if (false) {
/** @type {?} */
InViewportDirective.prototype.preRender;
/** @type {?} */
InViewportDirective.prototype.oneTime;
/** @type {?} */
InViewportDirective.prototype.inViewport;
/**
* @type {?}
* @private
*/
InViewportDirective.prototype.elementRef;
/**
* @type {?}
* @private
*/
InViewportDirective.prototype.viewportService;
/**
* @type {?}
* @private
*/
InViewportDirective.prototype.platformId;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tdmlld3BvcnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWl0cC11dGlscy8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL2luLXZpZXdwb3J0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxXQUFXLEdBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFMUM7SUFRRSw2QkFDbUIsVUFBc0IsRUFDL0IsZUFBZ0MsRUFDWCxVQUFrQjtRQUY5QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQy9CLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNYLGVBQVUsR0FBVixVQUFVLENBQVE7UUFQakMsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2IsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFzQyxDQUFDO0lBT3ZGLENBQUM7Ozs7SUFFTSxzQ0FBUTs7O0lBQWY7UUFBQSxpQkEwQkM7UUF6QkMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdEMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNoQixJQUFJLENBQUMsZUFBZTtxQkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO3FCQUN0QyxJQUFJLENBQ0gsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUNsQixNQUFNOzs7O2dCQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSyxDQUFDLGlCQUFpQixJQUFJLEdBQUcsRUFBOUIsQ0FBOEIsRUFBQyxFQUMvQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1I7cUJBQ0EsU0FBUzs7OztnQkFBQyxVQUFDLEtBQWdDO29CQUMxQyxLQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsQ0FBQyxFQUFDLENBQUM7YUFDTjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsZUFBZTtxQkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO3FCQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUN4QixTQUFTOzs7O2dCQUFDLFVBQUMsS0FBZ0M7b0JBQzFDLEtBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixDQUFDLEVBQUMsQ0FBQzthQUNOO1NBQ0Y7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7YUFDcEU7U0FDRjtJQUNILENBQUM7Ozs7SUFFRCx5Q0FBVzs7O0lBQVg7SUFDQSxDQUFDOztnQkE1Q0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCOzs7O2dCQVJrQixVQUFVO2dCQUdyQixlQUFlO2dCQWNzQixNQUFNLHVCQUE5QyxNQUFNLFNBQUMsV0FBVzs7OzRCQVBwQixLQUFLOzBCQUNMLEtBQUs7NkJBQ0wsTUFBTTs7SUF1Q1QsMEJBQUM7Q0FBQSxBQTdDRCxJQTZDQztTQTFDWSxtQkFBbUI7OztJQUM5Qix3Q0FBaUM7O0lBQ2pDLHNDQUFnQzs7SUFDaEMseUNBQXVGOzs7OztJQUdyRix5Q0FBdUM7Ozs7O0lBQ3ZDLDhDQUF3Qzs7Ozs7SUFDeEMseUNBQStDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUExBVEZPUk1fSUQsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtpc1BsYXRmb3JtQnJvd3Nlcn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtmaWx0ZXIsIHRha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtWaWV3cG9ydFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHt1bnRpbERlc3Ryb3l9IGZyb20gJy4uL29wZXJhdG9ycyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thaXV0SW5WaWV3cG9ydF0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5WaWV3cG9ydERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBwdWJsaWMgcHJlUmVuZGVyID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgb25lVGltZSA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBpblZpZXdwb3J0ID0gbmV3IEV2ZW50RW1pdHRlcjxQYXJ0aWFsPEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+PigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgdmlld3BvcnRTZXJ2aWNlOiBWaWV3cG9ydFNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIGlmICh0aGlzLm9uZVRpbWUpIHtcclxuICAgICAgICB0aGlzLnZpZXdwb3J0U2VydmljZVxyXG4gICAgICAgICAgLm9ic2VydmUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdW50aWxEZXN0cm95KHRoaXMpLFxyXG4gICAgICAgICAgICBmaWx0ZXIoZW50cnkgPT4gZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPj0gMC41KSxcclxuICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5WaWV3cG9ydC5lbWl0KGVudHJ5KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlXHJcbiAgICAgICAgICAub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcclxuICAgICAgICAgIC5waXBlKHVudGlsRGVzdHJveSh0aGlzKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5WaWV3cG9ydC5lbWl0KGVudHJ5KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5wcmVSZW5kZXIpIHtcclxuICAgICAgICB0aGlzLmluVmlld3BvcnQuZW1pdCh7aXNJbnRlcnNlY3Rpbmc6IHRydWUsIGludGVyc2VjdGlvblJhdGlvOiAxfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gIH1cclxufVxyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export {InViewportDirective} from './in-viewport.directive';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9haXRwLXV0aWxzLyIsInNvdXJjZXMiOlsibGliL2RpcmVjdGl2ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG9DQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbi12aWV3cG9ydC5kaXJlY3RpdmUnO1xyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export {addDestroyObservableToComponent, destroy$, untilDestroy} from './until-destroy';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9haXRwLXV0aWxzLyIsInNvdXJjZXMiOlsibGliL29wZXJhdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsd0VBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3VudGlsLWRlc3Ryb3knO1xyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import {Observable} from 'rxjs';
import {takeUntil} from 'rxjs/operators';
// create a symbol identify the observable I add to
// the component so it doesn't conflict with anything.
// I need this so I'm able to add the desired behaviour to the component.
/** @type {?} */
export var destroy$ = 'destroy$';
/**
* An operator that takes until destroy it takes a components this a parameter
* returns a pipeable RxJS operator.
* @type {?}
*/
export var untilDestroy = (/**
* @template T
* @param {?} component
* @return {?}
*/
function (component) {
if (component[destroy$] === undefined) {
// only hookup each component once.
addDestroyObservableToComponent(component);
}
// pipe in the takeUntil destroy$ and return the source unaltered
return takeUntil(component[destroy$]);
});
/**
* \@internal
* @param {?} component
* @return {?}
*/
export function addDestroyObservableToComponent(component) {
component[destroy$] = new Observable((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
// keep track of the original destroy function,
// the user might do something in there
/** @type {?} */
var orignalDestroy = component.ngOnDestroy;
if (orignalDestroy == null) {
// Angular does not support dynamic added destroy methods
// so make sure there is one.
throw new Error('untilDestroy operator needs the component to have an ngOnDestroy method');
}
// replace the ngOndestroy
component.ngOnDestroy = (/**
* @return {?}
*/
function () {
// fire off the destroy observable
observer.next();
// complete the observable
observer.complete();
// and at last, call the original destroy
orignalDestroy.call(component);
});
// return cleanup function.
return (/**
* @param {?} _
* @return {?}
*/
function (_) {
return (component[destroy$] = undefined);
});
}));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW50aWwtZGVzdHJveS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FpdHAtdXRpbHMvIiwic291cmNlcyI6WyJsaWIvb3BlcmF0b3JzL3VudGlsLWRlc3Ryb3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7OztBQU16QyxNQUFNLEtBQU8sUUFBUSxHQUFHLFVBQVU7Ozs7OztBQU1sQyxNQUFNLEtBQU8sWUFBWTs7Ozs7QUFBRyxVQUFJLFNBQWM7SUFDNUMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssU0FBUyxFQUFFO1FBQ3JDLG1DQUFtQztRQUNuQywrQkFBK0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUM1QztJQUVELGlFQUFpRTtJQUNqRSxPQUFPLFNBQVMsQ0FBSSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUE7Ozs7OztBQUtELE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxTQUFjO0lBQzVELFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLFVBQVU7Ozs7SUFBTyxVQUFBLFFBQVE7Ozs7WUFHM0MsY0FBYyxHQUFHLFNBQVMsQ0FBQyxXQUFXO1FBQzVDLElBQUksY0FBYyxJQUFJLElBQUksRUFBRTtZQUMxQix5REFBeUQ7WUFDekQsNkJBQTZCO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMseUVBQXlFLENBQUMsQ0FBQztTQUM1RjtRQUNELDBCQUEwQjtRQUMxQixTQUFTLENBQUMsV0FBVzs7O1FBQUc7WUFDdEIsa0NBQWtDO1lBQ2xDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQiwwQkFBMEI7WUFDMUIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BCLHlDQUF5QztZQUN6QyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQSxDQUFDO1FBQ0YsMkJBQTJCO1FBQzNCOzs7O1FBQU8sVUFBQyxDQUFNLElBQUssT0FBQSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBakMsQ0FBaUMsRUFBQztJQUN2RCxDQUFDLEVBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge3Rha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICdyeGpzL2ludGVyZmFjZXMnO1xyXG5cclxuLy8gY3JlYXRlIGEgc3ltYm9sIGlkZW50aWZ5IHRoZSBvYnNlcnZhYmxlIEkgYWRkIHRvXHJcbi8vIHRoZSBjb21wb25lbnQgc28gaXQgZG9lc24ndCBjb25mbGljdCB3aXRoIGFueXRoaW5nLlxyXG4vLyBJIG5lZWQgdGhpcyBzbyBJJ20gYWJsZSB0byBhZGQgdGhlIGRlc2lyZWQgYmVoYXZpb3VyIHRvIHRoZSBjb21wb25lbnQuXHJcbmV4cG9ydCBjb25zdCBkZXN0cm95JCA9ICdkZXN0cm95JCc7XHJcblxyXG4vKipcclxuICogQW4gb3BlcmF0b3IgdGhhdCB0YWtlcyB1bnRpbCBkZXN0cm95IGl0IHRha2VzIGEgY29tcG9uZW50cyB0aGlzIGEgcGFyYW1ldGVyXHJcbiAqIHJldHVybnMgYSBwaXBlYWJsZSBSeEpTIG9wZXJhdG9yLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHVudGlsRGVzdHJveSA9IDxUPihjb21wb25lbnQ6IGFueSk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiA9PiB7XHJcbiAgaWYgKGNvbXBvbmVudFtkZXN0cm95JF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgLy8gb25seSBob29rdXAgZWFjaCBjb21wb25lbnQgb25jZS5cclxuICAgIGFkZERlc3Ryb3lPYnNlcnZhYmxlVG9Db21wb25lbnQoY29tcG9uZW50KTtcclxuICB9XHJcblxyXG4gIC8vIHBpcGUgaW4gdGhlIHRha2VVbnRpbCBkZXN0cm95JCBhbmQgcmV0dXJuIHRoZSBzb3VyY2UgdW5hbHRlcmVkXHJcbiAgcmV0dXJuIHRha2VVbnRpbDxUPihjb21wb25lbnRbZGVzdHJveSRdKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGREZXN0cm95T2JzZXJ2YWJsZVRvQ29tcG9uZW50KGNvbXBvbmVudDogYW55KSB7XHJcbiAgY29tcG9uZW50W2Rlc3Ryb3kkXSA9IG5ldyBPYnNlcnZhYmxlPHZvaWQ+KG9ic2VydmVyID0+IHtcclxuICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIG9yaWdpbmFsIGRlc3Ryb3kgZnVuY3Rpb24sXHJcbiAgICAvLyB0aGUgdXNlciBtaWdodCBkbyBzb21ldGhpbmcgaW4gdGhlcmVcclxuICAgIGNvbnN0IG9yaWduYWxEZXN0cm95ID0gY29tcG9uZW50Lm5nT25EZXN0cm95O1xyXG4gICAgaWYgKG9yaWduYWxEZXN0cm95ID09IG51bGwpIHtcclxuICAgICAgLy8gQW5ndWxhciBkb2VzIG5vdCBzdXBwb3J0IGR5bmFtaWMgYWRkZWQgZGVzdHJveSBtZXRob2RzXHJcbiAgICAgIC8vIHNvIG1ha2Ugc3VyZSB0aGVyZSBpcyBvbmUuXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW50aWxEZXN0cm95IG9wZXJhdG9yIG5lZWRzIHRoZSBjb21wb25lbnQgdG8gaGF2ZSBhbiBuZ09uRGVzdHJveSBtZXRob2QnKTtcclxuICAgIH1cclxuICAgIC8vIHJlcGxhY2UgdGhlIG5nT25kZXN0cm95XHJcbiAgICBjb21wb25lbnQubmdPbkRlc3Ryb3kgPSAoKSA9PiB7XHJcbiAgICAgIC8vIGZpcmUgb2ZmIHRoZSBkZXN0cm95IG9ic2VydmFibGVcclxuICAgICAgb2JzZXJ2ZXIubmV4dCgpO1xyXG4gICAgICAvLyBjb21wbGV0ZSB0aGUgb2JzZXJ2YWJsZVxyXG4gICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAvLyBhbmQgYXQgbGFzdCwgY2FsbCB0aGUgb3JpZ2luYWwgZGVzdHJveVxyXG4gICAgICBvcmlnbmFsRGVzdHJveS5jYWxsKGNvbXBvbmVudCk7XHJcbiAgICB9O1xyXG4gICAgLy8gcmV0dXJuIGNsZWFudXAgZnVuY3Rpb24uXHJcbiAgICByZXR1cm4gKF86IGFueSkgPT4gKGNvbXBvbmVudFtkZXN0cm95JF0gPSB1bmRlZmluZWQpO1xyXG4gIH0pO1xyXG59XHJcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export {ViewportService} from './viewport.service';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9haXRwLXV0aWxzLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnQ0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdmlld3BvcnQuc2VydmljZSc7XHJcbiJdfQ==
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import {Injectable} from '@angular/core';
import {Subject} from 'rxjs';
import {filter, finalize} from 'rxjs/operators';
var ViewportService = /** @class */ (function () {
function ViewportService() {
this.options = {
rootMargin: '0px 0px 0px 0px',
threshold: [0.5],
};
this.callback$ = new Subject();
this.observer = new IntersectionObserver(this.handler.bind(this), this.options);
}
/**
* @param {?} element
* @return {?}
*/
ViewportService.prototype.observe = /**
* @param {?} element
* @return {?}
*/
function (element) {
var _this = this;
this.observer.observe(element);
return this.callback$.asObservable().pipe(filter((/**
* @param {?} entry
* @return {?}
*/
function (entry) {
return entry.target === element;
})), finalize((/**
* @return {?}
*/
function () {
return _this.observer.unobserve(element);
})));
};
/**
* @private
* @param {?} entries
* @return {?}
*/
ViewportService.prototype.handler = /**
* @private
* @param {?} entries
* @return {?}
*/
function (entries) {
var _this = this;
entries.forEach((/**
* @param {?} entry
* @return {?}
*/
function (entry) {
return _this.callback$.next(entry);
}));
};
ViewportService.decorators = [
{type: Injectable}
];
/** @nocollapse */
ViewportService.ctorParameters = function () {
return [];
};
return ViewportService;
}());
export {ViewportService};
if (false) {
/**
* @type {?}
* @private
*/
ViewportService.prototype.options;
/**
* @type {?}
* @private
*/
ViewportService.prototype.observer;
/**
* @type {?}
* @private
*/
ViewportService.prototype.callback$;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FpdHAtdXRpbHMvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvdmlld3BvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxNQUFNLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQ7SUFTRTtRQVBpQixZQUFPLEdBQTZCO1lBQ25ELFVBQVUsRUFBRSxpQkFBaUI7WUFDN0IsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO1NBQ2pCLENBQUM7UUFFTSxjQUFTLEdBQXVDLElBQUksT0FBTyxFQUFFLENBQUM7UUFHcEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRixDQUFDOzs7OztJQUVELGlDQUFPOzs7O0lBQVAsVUFBUSxPQUFnQjtRQUF4QixpQkFPQztRQU5DLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRS9CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQ3ZDLE1BQU07Ozs7UUFBQyxVQUFDLEtBQWdDLElBQUssT0FBQSxLQUFLLENBQUMsTUFBTSxLQUFLLE9BQU8sRUFBeEIsQ0FBd0IsRUFBQyxFQUN0RSxRQUFROzs7UUFBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQWhDLENBQWdDLEVBQUMsQ0FDakQsQ0FBQztJQUNKLENBQUM7Ozs7OztJQUVPLGlDQUFPOzs7OztJQUFmLFVBQWdCLE9BQXlDO1FBQXpELGlCQUVDO1FBREMsT0FBTyxDQUFDLE9BQU87Ozs7UUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUExQixDQUEwQixFQUFDLENBQUM7SUFDdkQsQ0FBQzs7Z0JBeEJGLFVBQVU7Ozs7SUF5Qlgsc0JBQUM7Q0FBQSxBQXpCRCxJQXlCQztTQXhCWSxlQUFlOzs7Ozs7SUFDMUIsa0NBR0U7Ozs7O0lBQ0YsbUNBQXVDOzs7OztJQUN2QyxvQ0FBc0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge2ZpbHRlciwgZmluYWxpemV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFZpZXdwb3J0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBJbnRlcnNlY3Rpb25PYnNlcnZlckluaXQgPSB7XHJcbiAgICByb290TWFyZ2luOiAnMHB4IDBweCAwcHggMHB4JyxcclxuICAgIHRocmVzaG9sZDogWzAuNV0sXHJcbiAgfTtcclxuICBwcml2YXRlIG9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcclxuICBwcml2YXRlIGNhbGxiYWNrJDogU3ViamVjdDxJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcih0aGlzLmhhbmRsZXIuYmluZCh0aGlzKSwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIG9ic2VydmUoZWxlbWVudDogRWxlbWVudCk6IE9ic2VydmFibGU8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4ge1xyXG4gICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmNhbGxiYWNrJC5hc09ic2VydmFibGUoKS5waXBlKFxyXG4gICAgICBmaWx0ZXIoKGVudHJ5OiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KSA9PiBlbnRyeS50YXJnZXQgPT09IGVsZW1lbnQpLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLm9ic2VydmVyLnVub2JzZXJ2ZShlbGVtZW50KSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVyKGVudHJpZXM6IEFycmF5PEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+KTogdm9pZCB7XHJcbiAgICBlbnRyaWVzLmZvckVhY2goZW50cnkgPT4gdGhpcy5jYWxsYmFjayQubmV4dChlbnRyeSkpO1xyXG4gIH1cclxufVxyXG4iXX0=
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* Public API Surface of aitp-utils
*/
export {AitpUtilsModule} from './lib/aitp-utils.module';
export {InViewportComponent} from './lib/components';
export {InViewportDirective} from './lib/directives';
export {addDestroyObservableToComponent, destroy$, untilDestroy} from './lib/operators';
export {ViewportService} from './lib/services';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FpdHAtdXRpbHMvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxnQ0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxvQ0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxvQ0FBYyxrQkFBa0IsQ0FBQztBQUNqQyx3RUFBYyxpQkFBaUIsQ0FBQztBQUNoQyxnQ0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBhaXRwLXV0aWxzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYWl0cC11dGlscy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL29wZXJhdG9ycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcclxuIl19
import {CommonModule, isPlatformBrowser} from '@angular/common';
import {
ChangeDetectorRef,
Component,
Directive,
ElementRef,
EventEmitter,
Inject,
Injectable,
Input,
NgModule,
Output,
PLATFORM_ID
} from '@angular/core';
import {Observable, Subject} from 'rxjs';
import {filter, finalize, take, takeUntil} from 'rxjs/operators';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class InViewportComponent {
/**
* @param {?} changeDetectorRef
*/
constructor(changeDetectorRef) {
this.changeDetectorRef = changeDetectorRef;
}
/**
* @param {?} intersectionObserverEntry
* @return {?}
*/
onViewportChange(intersectionObserverEntry) {
if (intersectionObserverEntry.isIntersecting) {
this.changeDetectorRef.reattach();
} else {
this.changeDetectorRef.detach();
}
}
}
InViewportComponent.decorators = [
{
type: Component, args: [{
selector: 'aiut-in-viewport',
template: "<div (inViewport)=\"onViewportChange($event)\" aiutInViewport>\r\n <ng-content></ng-content>\r\n</div>\r\n"
}]
}
];
/** @nocollapse */
InViewportComponent.ctorParameters = () => [
{type: ChangeDetectorRef}
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class ViewportService {
constructor() {
this.options = {
rootMargin: '0px 0px 0px 0px',
threshold: [0.5],
};
this.callback$ = new Subject();
this.observer = new IntersectionObserver(this.handler.bind(this), this.options);
}
/**
* @param {?} element
* @return {?}
*/
observe(element) {
this.observer.observe(element);
return this.callback$.asObservable().pipe(filter((/**
* @param {?} entry
* @return {?}
*/
(entry) => entry.target === element)), finalize((/**
* @return {?}
*/
() => this.observer.unobserve(element))));
}
/**
* @private
* @param {?} entries
* @return {?}
*/
handler(entries) {
entries.forEach((/**
* @param {?} entry
* @return {?}
*/
entry => this.callback$.next(entry)));
}
}
ViewportService.decorators = [
{type: Injectable}
];
/** @nocollapse */
ViewportService.ctorParameters = () => [];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
// create a symbol identify the observable I add to
// the component so it doesn't conflict with anything.
// I need this so I'm able to add the desired behaviour to the component.
/** @type {?} */
const destroy$ = 'destroy$';
/**
* An operator that takes until destroy it takes a components this a parameter
* returns a pipeable RxJS operator.
* @type {?}
*/
const untilDestroy = (/**
* @template T
* @param {?} component
* @return {?}
*/
(component) => {
if (component[destroy$] === undefined) {
// only hookup each component once.
addDestroyObservableToComponent(component);
}
// pipe in the takeUntil destroy$ and return the source unaltered
return takeUntil(component[destroy$]);
});
/**
* \@internal
* @param {?} component
* @return {?}
*/
function addDestroyObservableToComponent(component) {
component[destroy$] = new Observable((/**
* @param {?} observer
* @return {?}
*/
observer => {
// keep track of the original destroy function,
// the user might do something in there
/** @type {?} */
const orignalDestroy = component.ngOnDestroy;
if (orignalDestroy == null) {
// Angular does not support dynamic added destroy methods
// so make sure there is one.
throw new Error('untilDestroy operator needs the component to have an ngOnDestroy method');
}
// replace the ngOndestroy
component.ngOnDestroy = (/**
* @return {?}
*/
() => {
// fire off the destroy observable
observer.next();
// complete the observable
observer.complete();
// and at last, call the original destroy
orignalDestroy.call(component);
});
// return cleanup function.
return (/**
* @param {?} _
* @return {?}
*/
(_) => (component[destroy$] = undefined));
}));
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class InViewportDirective {
/**
* @param {?} elementRef
* @param {?} viewportService
* @param {?} platformId
*/
constructor(elementRef, viewportService, platformId) {
this.elementRef = elementRef;
this.viewportService = viewportService;
this.platformId = platformId;
this.preRender = true;
this.oneTime = false;
this.inViewport = new EventEmitter();
}
/**
* @return {?}
*/
ngOnInit() {
if (isPlatformBrowser(this.platformId)) {
if (this.oneTime) {
this.viewportService
.observe(this.elementRef.nativeElement)
.pipe(untilDestroy(this), filter((/**
* @param {?} entry
* @return {?}
*/
entry => entry.intersectionRatio >= 0.5)), take(1))
.subscribe((/**
* @param {?} entry
* @return {?}
*/
(entry) => {
this.inViewport.emit(entry);
}));
} else {
this.viewportService
.observe(this.elementRef.nativeElement)
.pipe(untilDestroy(this))
.subscribe((/**
* @param {?} entry
* @return {?}
*/
(entry) => {
this.inViewport.emit(entry);
}));
}
} else {
if (this.preRender) {
this.inViewport.emit({isIntersecting: true, intersectionRatio: 1});
}
}
}
/**
* @return {?}
*/
ngOnDestroy() {
}
}
InViewportDirective.decorators = [
{
type: Directive, args: [{
selector: '[aiutInViewport]',
},]
}
];
/** @nocollapse */
InViewportDirective.ctorParameters = () => [
{type: ElementRef},
{type: ViewportService},
{type: Object, decorators: [{type: Inject, args: [PLATFORM_ID,]}]}
];
InViewportDirective.propDecorators = {
preRender: [{type: Input}],
oneTime: [{type: Input}],
inViewport: [{type: Output}]
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class AitpUtilsModule {
}
AitpUtilsModule.decorators = [
{
type: NgModule, args: [{
imports: [CommonModule],
declarations: [InViewportDirective, InViewportComponent],
providers: [ViewportService],
exports: [InViewportDirective, InViewportComponent]
},]
}
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export {
AitpUtilsModule,
InViewportComponent,
InViewportDirective,
addDestroyObservableToComponent,
destroy$,
untilDestroy,
ViewportService,
InViewportComponent as ɵb,
InViewportDirective as ɵa,
ViewportService as ɵc
};
//# sourceMappingURL=aitp-utils.js.map
{
"version": 3,
"file": "aitp-utils.js.map",
"sources": [
"ng://aitp-utils/lib/components/in-viewport/in-viewport.component.ts",
"ng://aitp-utils/lib/services/viewport.service.ts",
"ng://aitp-utils/lib/operators/until-destroy.ts",
"ng://aitp-utils/lib/directives/in-viewport.directive.ts",
"ng://aitp-utils/lib/aitp-utils.module.ts"
],
"sourcesContent": [
"import {ChangeDetectorRef, Component} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'aiut-in-viewport',\r\n templateUrl: './in-viewport.component.html'\r\n})\r\nexport class InViewportComponent {\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n }\r\n\r\n onViewportChange(intersectionObserverEntry: IntersectionObserverEntry) {\r\n if (intersectionObserverEntry.isIntersecting) {\r\n this.changeDetectorRef.reattach();\r\n } else {\r\n this.changeDetectorRef.detach();\r\n }\r\n }\r\n}\r\n",
"import {Injectable} from '@angular/core';\r\nimport {Observable, Subject} from 'rxjs';\r\nimport {filter, finalize} from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class ViewportService {\r\n private readonly options: IntersectionObserverInit = {\r\n rootMargin: '0px 0px 0px 0px',\r\n threshold: [0.5],\r\n };\r\n private observer: IntersectionObserver;\r\n private callback$: Subject<IntersectionObserverEntry> = new Subject();\r\n\r\n constructor() {\r\n this.observer = new IntersectionObserver(this.handler.bind(this), this.options);\r\n }\r\n\r\n observe(element: Element): Observable<IntersectionObserverEntry> {\r\n this.observer.observe(element);\r\n\r\n return this.callback$.asObservable().pipe(\r\n filter((entry: IntersectionObserverEntry) => entry.target === element),\r\n finalize(() => this.observer.unobserve(element)),\r\n );\r\n }\r\n\r\n private handler(entries: Array<IntersectionObserverEntry>): void {\r\n entries.forEach(entry => this.callback$.next(entry));\r\n }\r\n}\r\n",
"import {Observable} from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport { MonoTypeOperatorFunction } from 'rxjs/interfaces';\r\n\r\n// create a symbol identify the observable I add to\r\n// the component so it doesn't conflict with anything.\r\n// I need this so I'm able to add the desired behaviour to the component.\r\nexport const destroy$ = 'destroy$';\r\n\r\n/**\r\n * An operator that takes until destroy it takes a components this a parameter\r\n * returns a pipeable RxJS operator.\r\n */\r\nexport const untilDestroy = <T>(component: any): MonoTypeOperatorFunction<T> => {\r\n if (component[destroy$] === undefined) {\r\n // only hookup each component once.\r\n addDestroyObservableToComponent(component);\r\n }\r\n\r\n // pipe in the takeUntil destroy$ and return the source unaltered\r\n return takeUntil<T>(component[destroy$]);\r\n};\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function addDestroyObservableToComponent(component: any) {\r\n component[destroy$] = new Observable<void>(observer => {\r\n // keep track of the original destroy function,\r\n // the user might do something in there\r\n const orignalDestroy = component.ngOnDestroy;\r\n if (orignalDestroy == null) {\r\n // Angular does not support dynamic added destroy methods\r\n // so make sure there is one.\r\n throw new Error('untilDestroy operator needs the component to have an ngOnDestroy method');\r\n }\r\n // replace the ngOndestroy\r\n component.ngOnDestroy = () => {\r\n // fire off the destroy observable\r\n observer.next();\r\n // complete the observable\r\n observer.complete();\r\n // and at last, call the original destroy\r\n orignalDestroy.call(component);\r\n };\r\n // return cleanup function.\r\n return (_: any) => (component[destroy$] = undefined);\r\n });\r\n}\r\n",
"import {Directive, ElementRef, EventEmitter, Inject, Input, OnDestroy, OnInit, Output, PLATFORM_ID,} from '@angular/core';\r\nimport {isPlatformBrowser} from '@angular/common';\r\nimport {filter, take} from 'rxjs/operators';\r\nimport {ViewportService} from '../services';\r\nimport {untilDestroy} from '../operators';\r\n\r\n@Directive({\r\n selector: '[aiutInViewport]',\r\n})\r\nexport class InViewportDirective implements OnInit, OnDestroy {\r\n @Input() public preRender = true;\r\n @Input() public oneTime = false;\r\n @Output() readonly inViewport = new EventEmitter<Partial<IntersectionObserverEntry>>();\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef,\r\n private viewportService: ViewportService,\r\n @Inject(PLATFORM_ID) private platformId: Object,\r\n ) {\r\n }\r\n\r\n public ngOnInit() {\r\n if (isPlatformBrowser(this.platformId)) {\r\n if (this.oneTime) {\r\n this.viewportService\r\n .observe(this.elementRef.nativeElement)\r\n .pipe(\r\n untilDestroy(this),\r\n filter(entry => entry.intersectionRatio >= 0.5),\r\n take(1),\r\n )\r\n .subscribe((entry: IntersectionObserverEntry) => {\r\n this.inViewport.emit(entry);\r\n });\r\n } else {\r\n this.viewportService\r\n .observe(this.elementRef.nativeElement)\r\n .pipe(untilDestroy(this))\r\n .subscribe((entry: IntersectionObserverEntry) => {\r\n this.inViewport.emit(entry);\r\n });\r\n }\r\n } else {\r\n if (this.preRender) {\r\n this.inViewport.emit({isIntersecting: true, intersectionRatio: 1});\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n}\r\n",
"import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\n\r\nimport * as Components from './components';\r\nimport * as Directives from './directives';\r\nimport * as Services from './services';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [Directives.InViewportDirective, Components.InViewportComponent],\r\n providers: [Services.ViewportService],\r\n exports: [Directives.InViewportDirective, Components.InViewportComponent]\r\n})\r\nexport class AitpUtilsModule { }\r\n"
],
"names": [
"Directives.InViewportDirective",
"Components.InViewportComponent",
"Services.ViewportService"
],
"mappings": "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"
}
import {CommonModule, isPlatformBrowser} from '@angular/common';
import {
ChangeDetectorRef,
Component,
Directive,
ElementRef,
EventEmitter,
Inject,
Injectable,
Input,
NgModule,
Output,
PLATFORM_ID
} from '@angular/core';
import {Observable, Subject} from 'rxjs';
import {filter, finalize, take, takeUntil} from 'rxjs/operators';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var InViewportComponent = /** @class */ (function () {
function InViewportComponent(changeDetectorRef) {
this.changeDetectorRef = changeDetectorRef;
}
/**
* @param {?} intersectionObserverEntry
* @return {?}
*/
InViewportComponent.prototype.onViewportChange = /**
* @param {?} intersectionObserverEntry
* @return {?}
*/
function (intersectionObserverEntry) {
if (intersectionObserverEntry.isIntersecting) {
this.changeDetectorRef.reattach();
} else {
this.changeDetectorRef.detach();
}
};
InViewportComponent.decorators = [
{
type: Component, args: [{
selector: 'aiut-in-viewport',
template: "<div (inViewport)=\"onViewportChange($event)\" aiutInViewport>\r\n <ng-content></ng-content>\r\n</div>\r\n"
}]
}
];
/** @nocollapse */
InViewportComponent.ctorParameters = function () {
return [
{type: ChangeDetectorRef}
];
};
return InViewportComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var ViewportService = /** @class */ (function () {
function ViewportService() {
this.options = {
rootMargin: '0px 0px 0px 0px',
threshold: [0.5],
};
this.callback$ = new Subject();
this.observer = new IntersectionObserver(this.handler.bind(this), this.options);
}
/**
* @param {?} element
* @return {?}
*/
ViewportService.prototype.observe = /**
* @param {?} element
* @return {?}
*/
function (element) {
var _this = this;
this.observer.observe(element);
return this.callback$.asObservable().pipe(filter((/**
* @param {?} entry
* @return {?}
*/
function (entry) {
return entry.target === element;
})), finalize((/**
* @return {?}
*/
function () {
return _this.observer.unobserve(element);
})));
};
/**
* @private
* @param {?} entries
* @return {?}
*/
ViewportService.prototype.handler = /**
* @private
* @param {?} entries
* @return {?}
*/
function (entries) {
var _this = this;
entries.forEach((/**
* @param {?} entry
* @return {?}
*/
function (entry) {
return _this.callback$.next(entry);
}));
};
ViewportService.decorators = [
{type: Injectable}
];
/** @nocollapse */
ViewportService.ctorParameters = function () {
return [];
};
return ViewportService;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
// create a symbol identify the observable I add to
// the component so it doesn't conflict with anything.
// I need this so I'm able to add the desired behaviour to the component.
/** @type {?} */
var destroy$ = 'destroy$';
/**
* An operator that takes until destroy it takes a components this a parameter
* returns a pipeable RxJS operator.
* @type {?}
*/
var untilDestroy = (/**
* @template T
* @param {?} component
* @return {?}
*/
function (component) {
if (component[destroy$] === undefined) {
// only hookup each component once.
addDestroyObservableToComponent(component);
}
// pipe in the takeUntil destroy$ and return the source unaltered
return takeUntil(component[destroy$]);
});
/**
* \@internal
* @param {?} component
* @return {?}
*/
function addDestroyObservableToComponent(component) {
component[destroy$] = new Observable((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
// keep track of the original destroy function,
// the user might do something in there
/** @type {?} */
var orignalDestroy = component.ngOnDestroy;
if (orignalDestroy == null) {
// Angular does not support dynamic added destroy methods
// so make sure there is one.
throw new Error('untilDestroy operator needs the component to have an ngOnDestroy method');
}
// replace the ngOndestroy
component.ngOnDestroy = (/**
* @return {?}
*/
function () {
// fire off the destroy observable
observer.next();
// complete the observable
observer.complete();
// and at last, call the original destroy
orignalDestroy.call(component);
});
// return cleanup function.
return (/**
* @param {?} _
* @return {?}
*/
function (_) {
return (component[destroy$] = undefined);
});
}));
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var InViewportDirective = /** @class */ (function () {
function InViewportDirective(elementRef, viewportService, platformId) {
this.elementRef = elementRef;
this.viewportService = viewportService;
this.platformId = platformId;
this.preRender = true;
this.oneTime = false;
this.inViewport = new EventEmitter();
}
/**
* @return {?}
*/
InViewportDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
if (isPlatformBrowser(this.platformId)) {
if (this.oneTime) {
this.viewportService
.observe(this.elementRef.nativeElement)
.pipe(untilDestroy(this), filter((/**
* @param {?} entry
* @return {?}
*/
function (entry) {
return entry.intersectionRatio >= 0.5;
})), take(1))
.subscribe((/**
* @param {?} entry
* @return {?}
*/
function (entry) {
_this.inViewport.emit(entry);
}));
} else {
this.viewportService
.observe(this.elementRef.nativeElement)
.pipe(untilDestroy(this))
.subscribe((/**
* @param {?} entry
* @return {?}
*/
function (entry) {
_this.inViewport.emit(entry);
}));
}
} else {
if (this.preRender) {
this.inViewport.emit({isIntersecting: true, intersectionRatio: 1});
}
}
};
/**
* @return {?}
*/
InViewportDirective.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
};
InViewportDirective.decorators = [
{
type: Directive, args: [{
selector: '[aiutInViewport]',
},]
}
];
/** @nocollapse */
InViewportDirective.ctorParameters = function () {
return [
{type: ElementRef},
{type: ViewportService},
{type: Object, decorators: [{type: Inject, args: [PLATFORM_ID,]}]}
];
};
InViewportDirective.propDecorators = {
preRender: [{type: Input}],
oneTime: [{type: Input}],
inViewport: [{type: Output}]
};
return InViewportDirective;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var AitpUtilsModule = /** @class */ (function () {
function AitpUtilsModule() {
}
AitpUtilsModule.decorators = [
{
type: NgModule, args: [{
imports: [CommonModule],
declarations: [InViewportDirective, InViewportComponent],
providers: [ViewportService],
exports: [InViewportDirective, InViewportComponent]
},]
}
];
return AitpUtilsModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export {
AitpUtilsModule,
InViewportComponent,
InViewportDirective,
addDestroyObservableToComponent,
destroy$,
untilDestroy,
ViewportService,
InViewportComponent as ɵb,
InViewportDirective as ɵa,
ViewportService as ɵc
};
//# sourceMappingURL=aitp-utils.js.map
{
"version": 3,
"file": "aitp-utils.js.map",
"sources": [
"ng://aitp-utils/lib/components/in-viewport/in-viewport.component.ts",
"ng://aitp-utils/lib/services/viewport.service.ts",
"ng://aitp-utils/lib/operators/until-destroy.ts",
"ng://aitp-utils/lib/directives/in-viewport.directive.ts",
"ng://aitp-utils/lib/aitp-utils.module.ts"
],
"sourcesContent": [
"import {ChangeDetectorRef, Component} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'aiut-in-viewport',\r\n templateUrl: './in-viewport.component.html'\r\n})\r\nexport class InViewportComponent {\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {\r\n }\r\n\r\n onViewportChange(intersectionObserverEntry: IntersectionObserverEntry) {\r\n if (intersectionObserverEntry.isIntersecting) {\r\n this.changeDetectorRef.reattach();\r\n } else {\r\n this.changeDetectorRef.detach();\r\n }\r\n }\r\n}\r\n",
"import {Injectable} from '@angular/core';\r\nimport {Observable, Subject} from 'rxjs';\r\nimport {filter, finalize} from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class ViewportService {\r\n private readonly options: IntersectionObserverInit = {\r\n rootMargin: '0px 0px 0px 0px',\r\n threshold: [0.5],\r\n };\r\n private observer: IntersectionObserver;\r\n private callback$: Subject<IntersectionObserverEntry> = new Subject();\r\n\r\n constructor() {\r\n this.observer = new IntersectionObserver(this.handler.bind(this), this.options);\r\n }\r\n\r\n observe(element: Element): Observable<IntersectionObserverEntry> {\r\n this.observer.observe(element);\r\n\r\n return this.callback$.asObservable().pipe(\r\n filter((entry: IntersectionObserverEntry) => entry.target === element),\r\n finalize(() => this.observer.unobserve(element)),\r\n );\r\n }\r\n\r\n private handler(entries: Array<IntersectionObserverEntry>): void {\r\n entries.forEach(entry => this.callback$.next(entry));\r\n }\r\n}\r\n",
"import {Observable} from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport { MonoTypeOperatorFunction } from 'rxjs/interfaces';\r\n\r\n// create a symbol identify the observable I add to\r\n// the component so it doesn't conflict with anything.\r\n// I need this so I'm able to add the desired behaviour to the component.\r\nexport const destroy$ = 'destroy$';\r\n\r\n/**\r\n * An operator that takes until destroy it takes a components this a parameter\r\n * returns a pipeable RxJS operator.\r\n */\r\nexport const untilDestroy = <T>(component: any): MonoTypeOperatorFunction<T> => {\r\n if (component[destroy$] === undefined) {\r\n // only hookup each component once.\r\n addDestroyObservableToComponent(component);\r\n }\r\n\r\n // pipe in the takeUntil destroy$ and return the source unaltered\r\n return takeUntil<T>(component[destroy$]);\r\n};\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function addDestroyObservableToComponent(component: any) {\r\n component[destroy$] = new Observable<void>(observer => {\r\n // keep track of the original destroy function,\r\n // the user might do something in there\r\n const orignalDestroy = component.ngOnDestroy;\r\n if (orignalDestroy == null) {\r\n // Angular does not support dynamic added destroy methods\r\n // so make sure there is one.\r\n throw new Error('untilDestroy operator needs the component to have an ngOnDestroy method');\r\n }\r\n // replace the ngOndestroy\r\n component.ngOnDestroy = () => {\r\n // fire off the destroy observable\r\n observer.next();\r\n // complete the observable\r\n observer.complete();\r\n // and at last, call the original destroy\r\n orignalDestroy.call(component);\r\n };\r\n // return cleanup function.\r\n return (_: any) => (component[destroy$] = undefined);\r\n });\r\n}\r\n",
"import {Directive, ElementRef, EventEmitter, Inject, Input, OnDestroy, OnInit, Output, PLATFORM_ID,} from '@angular/core';\r\nimport {isPlatformBrowser} from '@angular/common';\r\nimport {filter, take} from 'rxjs/operators';\r\nimport {ViewportService} from '../services';\r\nimport {untilDestroy} from '../operators';\r\n\r\n@Directive({\r\n selector: '[aiutInViewport]',\r\n})\r\nexport class InViewportDirective implements OnInit, OnDestroy {\r\n @Input() public preRender = true;\r\n @Input() public oneTime = false;\r\n @Output() readonly inViewport = new EventEmitter<Partial<IntersectionObserverEntry>>();\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef,\r\n private viewportService: ViewportService,\r\n @Inject(PLATFORM_ID) private platformId: Object,\r\n ) {\r\n }\r\n\r\n public ngOnInit() {\r\n if (isPlatformBrowser(this.platformId)) {\r\n if (this.oneTime) {\r\n this.viewportService\r\n .observe(this.elementRef.nativeElement)\r\n .pipe(\r\n untilDestroy(this),\r\n filter(entry => entry.intersectionRatio >= 0.5),\r\n take(1),\r\n )\r\n .subscribe((entry: IntersectionObserverEntry) => {\r\n this.inViewport.emit(entry);\r\n });\r\n } else {\r\n this.viewportService\r\n .observe(this.elementRef.nativeElement)\r\n .pipe(untilDestroy(this))\r\n .subscribe((entry: IntersectionObserverEntry) => {\r\n this.inViewport.emit(entry);\r\n });\r\n }\r\n } else {\r\n if (this.preRender) {\r\n this.inViewport.emit({isIntersecting: true, intersectionRatio: 1});\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n}\r\n",
"import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\n\r\nimport * as Components from './components';\r\nimport * as Directives from './directives';\r\nimport * as Services from './services';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [Directives.InViewportDirective, Components.InViewportComponent],\r\n providers: [Services.ViewportService],\r\n exports: [Directives.InViewportDirective, Components.InViewportComponent]\r\n})\r\nexport class AitpUtilsModule { }\r\n"
],
"names": [
"Directives.InViewportDirective",
"Components.InViewportComponent",
"Services.ViewportService"
],
"mappings": "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"
}
export declare class AitpUtilsModule {
}
import {ChangeDetectorRef} from '@angular/core';
export declare class InViewportComponent {
private changeDetectorRef;
constructor(changeDetectorRef: ChangeDetectorRef);
onViewportChange(intersectionObserverEntry: IntersectionObserverEntry): void;
}
export * from './in-viewport/in-viewport.component';
import {ElementRef, EventEmitter, OnDestroy, OnInit} from '@angular/core';
import {ViewportService} from '../services';
export declare class InViewportDirective implements OnInit, OnDestroy {
preRender: boolean;
oneTime: boolean;
readonly inViewport: EventEmitter<Partial<IntersectionObserverEntry>>;
private readonly elementRef;
private viewportService;
private platformId;
constructor(elementRef: ElementRef, viewportService: ViewportService, platformId: Object);
ngOnInit(): void;
ngOnDestroy(): void;
}
export * from './in-viewport.directive';
export * from './until-destroy';
import {MonoTypeOperatorFunction} from 'rxjs/interfaces';
export declare const destroy$ = 'destroy$';
/**
* An operator that takes until destroy it takes a components this a parameter
* returns a pipeable RxJS operator.
*/
export declare const untilDestroy: <T>(component: any) => MonoTypeOperatorFunction<T>;
/**
* @internal
*/
export declare function addDestroyObservableToComponent(component: any): void;
export * from './viewport.service';
import {Observable} from 'rxjs';
export declare class ViewportService {
private readonly options;
private observer;
private callback$;
private handler;
constructor();
observe(element: Element): Observable<IntersectionObserverEntry>;
}
{
"name": "aitp-utils",
"version": "0.0.1",
"peerDependencies": {
"@angular/common": "^4.0.0",
"@angular/core": "^4.0.0",
"rxjs": "^5.0.0"
},
"main": "bundles/aitp-utils.umd.js",
"metadata": "aitp-utils.metadata.json",
"module": "fesm5/aitp-utils.js",
"es2015": "fesm2015/aitp-utils.js",
"esm5": "esm5/aitp-utils.js",
"esm2015": "esm2015/aitp-utils.js",
"fesm5": "fesm5/aitp-utils.js",
"fesm2015": "fesm2015/aitp-utils.js",
"typings": "aitp-utils.d.ts",
"sideEffects": false,
"dependencies": {
"tslib": "^1.9.0"
}
}
export * from './lib/aitp-utils.module';
export * from './lib/components';
export * from './lib/directives';
export * from './lib/operators';
export * from './lib/services';
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment