UNPKG

ngx-cache-if

Version:

Angular *ngIf directive that cache content. *ngxCacheIf directive render content when needed and cache it for reuse.

97 lines (91 loc) 6.92 kB
import { Directive, Input, TemplateRef, ViewContainerRef, ElementRef, Renderer2, ComponentFactoryResolver, NgModule } from '@angular/core'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ var NgxCacheIfDirective = /** @class */ (function () { function NgxCacheIfDirective(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 {?} */ NgxCacheIfDirective.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (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 = function () { return [ { type: TemplateRef }, { type: ViewContainerRef }, { type: ElementRef }, { type: Renderer2 }, { type: ComponentFactoryResolver } ]; }; NgxCacheIfDirective.propDecorators = { ngxCacheIf: [{ type: Input }] }; return NgxCacheIfDirective; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ var NgxCacheIfModule = /** @class */ (function () { function NgxCacheIfModule() { } NgxCacheIfModule.decorators = [ { type: NgModule, args: [{ imports: [], declarations: [ NgxCacheIfDirective ], exports: [ NgxCacheIfDirective ] },] }, ]; return NgxCacheIfModule; }()); /** * @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNhY2hlLWlmLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtY2FjaGUtaWYvbGliL25neC1jYWNoZS1pZi5kaXJlY3RpdmUudHMiLCJuZzovL25neC1jYWNoZS1pZi9saWIvbmd4LWNhY2hlLWlmLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBFbGVtZW50UmVmLFxuICBSZW5kZXJlcjIsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmd4Q2FjaGVJZl0nXG59KVxuZXhwb3J0IGNsYXNzIE5neENhY2hlSWZEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIG5neENhY2hlSWY6IGFueTtcbiAgbG9hZGVkOiB7W2tleTogc3RyaW5nXTogRW1iZWRkZWRWaWV3UmVmPGFueT59ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoIXRoaXMubG9hZGVkW3RoaXMudGVtcGxhdGVSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lXSkge1xuICAgICAgaWYgKGNoYW5nZXMubmd4Q2FjaGVJZi5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgICAgIHRoaXMubG9hZGVkW3RoaXMudGVtcGxhdGVSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lXSA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGNoYW5nZXMubmd4Q2FjaGVJZi5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuaW5zZXJ0KHRoaXMubG9hZGVkW3RoaXMudGVtcGxhdGVSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmRldGFjaCgpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Tmd4Q2FjaGVJZkRpcmVjdGl2ZX0gZnJvbSAnLi9uZ3gtY2FjaGUtaWYuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBOZ3hDYWNoZUlmRGlyZWN0aXZlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBOZ3hDYWNoZUlmRGlyZWN0aXZlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4Q2FjaGVJZk1vZHVsZSB7IH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtJQW9CRSw2QkFBb0IsV0FBNkIsRUFBVSxhQUErQixFQUN0RSxJQUF3QixRQUFtQixFQUMzQztRQUZBLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUN0RSxPQUFFLEdBQUYsRUFBRTtRQUFzQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQzNDLFFBQUcsR0FBSCxHQUFHO3NCQUp5QixFQUFFO0tBS2pEOzs7OztJQUVELHlDQUFXOzs7O0lBQVgsVUFBWSxPQUFzQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDcEUsSUFBSSxPQUFPLGVBQVksWUFBWSxFQUFFO2dCQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN6SDtTQUNKO2FBQU07WUFDTCxJQUFJO2dCQUNGLElBQUksT0FBTyxlQUFZLFlBQVksRUFBRTtvQkFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztpQkFDNUY7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDN0I7YUFDRjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEI7U0FDRjtLQUNGOztnQkE5QkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO2lCQUN6Qjs7OztnQkFWQyxXQUFXO2dCQUNYLGdCQUFnQjtnQkFDaEIsVUFBVTtnQkFDVixTQUFTO2dCQUNULHdCQUF3Qjs7OzZCQVN2QixLQUFLOzs4QkFqQlI7Ozs7Ozs7QUNBQTs7OztnQkFHQyxRQUFRLFNBQUM7b0JBQ1IsT0FBTyxFQUFFLEVBQ1I7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLG1CQUFtQjtxQkFDcEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG1CQUFtQjtxQkFDcEI7aUJBQ0Y7OzJCQVpEOzs7Ozs7Ozs7Ozs7Ozs7In0=