ngx-cache-if
Version:
Angular *ngIf directive that cache content. *ngxCacheIf directive render content when needed and cache it for reuse.
80 lines (79 loc) • 6.24 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Directive, Input, TemplateRef, ViewContainerRef, ElementRef, Renderer2, ComponentFactoryResolver } from '@angular/core';
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;
}());
export { NgxCacheIfDirective };
if (false) {
/** @type {?} */
NgxCacheIfDirective.prototype.ngxCacheIf;
/** @type {?} */
NgxCacheIfDirective.prototype.loaded;
/** @type {?} */
NgxCacheIfDirective.prototype.templateRef;
/** @type {?} */
NgxCacheIfDirective.prototype.viewContainer;
/** @type {?} */
NgxCacheIfDirective.prototype.el;
/** @type {?} */
NgxCacheIfDirective.prototype.renderer;
/** @type {?} */
NgxCacheIfDirective.prototype.cfr;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNhY2hlLWlmLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1jYWNoZS1pZi8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtY2FjaGUtaWYuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixTQUFTLEVBQ1Qsd0JBQXdCLEVBRXpCLE1BQU0sZUFBZSxDQUFDOztJQVVyQiw2QkFBb0IsV0FBNkIsRUFBVSxhQUErQixFQUN0RSxJQUF3QixRQUFtQixFQUMzQztRQUZBLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUN0RSxPQUFFLEdBQUYsRUFBRTtRQUFzQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQzNDLFFBQUcsR0FBSCxHQUFHO3NCQUp5QixFQUFFO0tBS2pEOzs7OztJQUVELHlDQUFXOzs7O0lBQVgsVUFBWSxPQUFzQjtRQUNoQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxFQUFFLENBQUMsQ0FBQyxPQUFPLGVBQVksWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDekg7U0FDSjtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sSUFBSSxDQUFDO2dCQUNILEVBQUUsQ0FBQyxDQUFDLE9BQU8sZUFBWSxZQUFZLENBQUMsQ0FBQyxDQUFDO29CQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2lCQUM1RjtnQkFBQyxJQUFJLENBQUMsQ0FBQztvQkFDTixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO2lCQUM3QjthQUNGO1lBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQjtTQUNGO0tBQ0Y7O2dCQTlCRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7aUJBQ3pCOzs7O2dCQVZDLFdBQVc7Z0JBQ1gsZ0JBQWdCO2dCQUNoQixVQUFVO2dCQUNWLFNBQVM7Z0JBQ1Qsd0JBQXdCOzs7NkJBU3ZCLEtBQUs7OzhCQWpCUjs7U0FlYSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBFbGVtZW50UmVmLFxuICBSZW5kZXJlcjIsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmd4Q2FjaGVJZl0nXG59KVxuZXhwb3J0IGNsYXNzIE5neENhY2hlSWZEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIG5neENhY2hlSWY6IGFueTtcbiAgbG9hZGVkOiB7W2tleTogc3RyaW5nXTogRW1iZWRkZWRWaWV3UmVmPGFueT59ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoIXRoaXMubG9hZGVkW3RoaXMudGVtcGxhdGVSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lXSkge1xuICAgICAgaWYgKGNoYW5nZXMubmd4Q2FjaGVJZi5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgICAgIHRoaXMubG9hZGVkW3RoaXMudGVtcGxhdGVSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lXSA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGNoYW5nZXMubmd4Q2FjaGVJZi5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuaW5zZXJ0KHRoaXMubG9hZGVkW3RoaXMudGVtcGxhdGVSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmRldGFjaCgpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19