ngx-cache-if
Version:
Angular *ngIf directive that cache content. *ngxCacheIf directive render content when needed and cache it for reuse.
96 lines (90 loc) • 6.62 kB
JavaScript
import { Directive, Input, TemplateRef, ViewContainerRef, ElementRef, Renderer2, ComponentFactoryResolver, NgModule } from '@angular/core';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
class NgxCacheIfDirective {
/**
* @param {?} templateRef
* @param {?} viewContainer
* @param {?} el
* @param {?} renderer
* @param {?} cfr
*/
constructor(templateRef, viewContainer, el, renderer, cfr) {
this.templateRef = templateRef;
this.viewContainer = viewContainer;
this.el = el;
this.renderer = renderer;
this.cfr = cfr;
this.loaded = {};
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
if (!this.loaded[this.templateRef.elementRef.nativeElement.nodeName]) {
if (changes["ngxCacheIf"].currentValue) {
this.viewContainer.clear();
this.loaded[this.templateRef.elementRef.nativeElement.nodeName] = this.viewContainer.createEmbeddedView(this.templateRef);
}
}
else {
try {
if (changes["ngxCacheIf"].currentValue) {
this.viewContainer.insert(this.loaded[this.templateRef.elementRef.nativeElement.nodeName]);
}
else {
this.viewContainer.detach();
}
}
catch (e) {
console.log(e);
}
}
}
}
NgxCacheIfDirective.decorators = [
{ type: Directive, args: [{
selector: '[ngxCacheIf]'
},] },
];
/** @nocollapse */
NgxCacheIfDirective.ctorParameters = () => [
{ type: TemplateRef },
{ type: ViewContainerRef },
{ type: ElementRef },
{ type: Renderer2 },
{ type: ComponentFactoryResolver }
];
NgxCacheIfDirective.propDecorators = {
ngxCacheIf: [{ type: Input }]
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
class NgxCacheIfModule {
}
NgxCacheIfModule.decorators = [
{ type: NgModule, args: [{
imports: [],
declarations: [
NgxCacheIfDirective
],
exports: [
NgxCacheIfDirective
]
},] },
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
export { NgxCacheIfDirective, NgxCacheIfModule };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNhY2hlLWlmLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtY2FjaGUtaWYvbGliL25neC1jYWNoZS1pZi5kaXJlY3RpdmUudHMiLCJuZzovL25neC1jYWNoZS1pZi9saWIvbmd4LWNhY2hlLWlmLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBFbGVtZW50UmVmLFxuICBSZW5kZXJlcjIsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmd4Q2FjaGVJZl0nXG59KVxuZXhwb3J0IGNsYXNzIE5neENhY2hlSWZEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIG5neENhY2hlSWY6IGFueTtcbiAgbG9hZGVkOiB7W2tleTogc3RyaW5nXTogRW1iZWRkZWRWaWV3UmVmPGFueT59ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoIXRoaXMubG9hZGVkW3RoaXMudGVtcGxhdGVSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lXSkge1xuICAgICAgaWYgKGNoYW5nZXMubmd4Q2FjaGVJZi5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgICAgIHRoaXMubG9hZGVkW3RoaXMudGVtcGxhdGVSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lXSA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGNoYW5nZXMubmd4Q2FjaGVJZi5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuaW5zZXJ0KHRoaXMubG9hZGVkW3RoaXMudGVtcGxhdGVSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmRldGFjaCgpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Tmd4Q2FjaGVJZkRpcmVjdGl2ZX0gZnJvbSAnLi9uZ3gtY2FjaGUtaWYuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBOZ3hDYWNoZUlmRGlyZWN0aXZlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBOZ3hDYWNoZUlmRGlyZWN0aXZlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4Q2FjaGVJZk1vZHVsZSB7IH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7Ozs7Ozs7SUFvQkUsWUFBb0IsV0FBNkIsRUFBVSxhQUErQixFQUN0RSxJQUF3QixRQUFtQixFQUMzQztRQUZBLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUN0RSxPQUFFLEdBQUYsRUFBRTtRQUFzQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQzNDLFFBQUcsR0FBSCxHQUFHO3NCQUp5QixFQUFFO0tBS2pEOzs7OztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDcEUsSUFBSSxPQUFPLGVBQVksWUFBWSxFQUFFO2dCQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN6SDtTQUNKO2FBQU07WUFDTCxJQUFJO2dCQUNGLElBQUksT0FBTyxlQUFZLFlBQVksRUFBRTtvQkFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztpQkFDNUY7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDN0I7YUFDRjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEI7U0FDRjtLQUNGOzs7WUE5QkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2FBQ3pCOzs7O1lBVkMsV0FBVztZQUNYLGdCQUFnQjtZQUNoQixVQUFVO1lBQ1YsU0FBUztZQUNULHdCQUF3Qjs7O3lCQVN2QixLQUFLOzs7Ozs7O0FDakJSOzs7WUFHQyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFLEVBQ1I7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLG1CQUFtQjtpQkFDcEI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLG1CQUFtQjtpQkFDcEI7YUFDRjs7Ozs7Ozs7Ozs7Ozs7OyJ9