UNPKG

ngx-context-store

Version:

An alternative yet advanced mechanism for Angular components to share data.

48 lines 6.62 kB
import { Directive, Optional } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "./ngx-context-store-set.directive"; export class NgxContextStoreGetDirective { constructor(templateRef, viewContainer, parentContextHolder) { this.templateRef = templateRef; this.viewContainer = viewContainer; this.parentContextHolder = parentContextHolder; } ngOnInit() { var _a, _b, _c; const context = (_b = (_a = this.parentContextHolder) === null || _a === void 0 ? void 0 : _a.context$.value) !== null && _b !== void 0 ? _b : undefined; this._parentSubsciption = (_c = this.parentContextHolder) === null || _c === void 0 ? void 0 : _c.context$.subscribe(ctx => this.updateContext(ctx)); if (this.templateRef && this.viewContainer) { this._view = this.viewContainer.createEmbeddedView(this.templateRef, context); } } ngOnDestroy() { if (this._view) { this.viewContainer.clear(); this._view = undefined; } if (this._parentSubsciption) { this._parentSubsciption.unsubscribe(); } } updateContext(context) { var _a; if (((_a = this._view) === null || _a === void 0 ? void 0 : _a.context) != null) { for (const key in context) { if (Object.prototype.hasOwnProperty.call(context, key)) { this._view.context[key] = context[key]; } } } } } NgxContextStoreGetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: NgxContextStoreGetDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.NgxContextStoreSetDirective, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); NgxContextStoreGetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.10", type: NgxContextStoreGetDirective, selector: "[getContext]", ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: NgxContextStoreGetDirective, decorators: [{ type: Directive, args: [{ selector: '[getContext]', }] }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.NgxContextStoreSetDirective, decorators: [{ type: Optional }] }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNvbnRleHQtc3RvcmUtZ2V0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb250ZXh0LXN0b3JlL3NyYy9saWIvbmd4LWNvbnRleHQtc3RvcmUtZ2V0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFzQyxRQUFRLEVBQWlDLE1BQU0sZUFBZSxDQUFDOzs7QUFRdkgsTUFBTSxPQUFPLDJCQUEyQjtJQUl0QyxZQUNVLFdBQTZCLEVBQzdCLGFBQStCLEVBQ25CLG1CQUFnRDtRQUY1RCxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQ25CLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBNkI7SUFDbEUsQ0FBQztJQUVMLFFBQVE7O1FBQ04sTUFBTSxPQUFPLEdBQUcsTUFBQSxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxDQUFDLEtBQUssbUNBQUksU0FBUyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2RyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMvRTtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztTQUN4QjtRQUNELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsT0FBNkI7O1FBQ3pDLElBQUksQ0FBQSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLE9BQU8sS0FBSSxJQUFJLEVBQUU7WUFDL0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUU7Z0JBQ3pCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN4QzthQUNGO1NBQ0Y7SUFDSCxDQUFDOzt5SEFwQ1UsMkJBQTJCOzZHQUEzQiwyQkFBMkI7NEZBQTNCLDJCQUEyQjtrQkFIdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztpQkFDekI7OzBCQVFJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVtYmVkZGVkVmlld1JlZiwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ3hDb250ZXh0U3RvcmVNb2RlbCB9IGZyb20gJy4vbmd4LWNvbnRleHQtc3RvcmUtbW9kZWwnO1xuaW1wb3J0IHsgTmd4Q29udGV4dFN0b3JlU2V0RGlyZWN0aXZlIH0gZnJvbSAnLi9uZ3gtY29udGV4dC1zdG9yZS1zZXQuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2dldENvbnRleHRdJyxcbn0pXG5leHBvcnQgY2xhc3MgTmd4Q29udGV4dFN0b3JlR2V0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF92aWV3OiBFbWJlZGRlZFZpZXdSZWY8Tmd4Q29udGV4dFN0b3JlTW9kZWw+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9wYXJlbnRTdWJzY2lwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnRDb250ZXh0SG9sZGVyOiBOZ3hDb250ZXh0U3RvcmVTZXREaXJlY3RpdmVcbiAgKSB7IH1cbiAgXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBhcmVudENvbnRleHRIb2xkZXI/LmNvbnRleHQkLnZhbHVlID8/IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9wYXJlbnRTdWJzY2lwdGlvbiA9IHRoaXMucGFyZW50Q29udGV4dEhvbGRlcj8uY29udGV4dCQuc3Vic2NyaWJlKGN0eCA9PiB0aGlzLnVwZGF0ZUNvbnRleHQoY3R4KSk7XG4gICAgaWYgKHRoaXMudGVtcGxhdGVSZWYgJiYgdGhpcy52aWV3Q29udGFpbmVyKSB7XG4gICAgICB0aGlzLl92aWV3ID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmLCBjb250ZXh0KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5fdmlldykge1xuICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgICB0aGlzLl92aWV3ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGhpcy5fcGFyZW50U3Vic2NpcHRpb24pIHtcbiAgICAgIHRoaXMuX3BhcmVudFN1YnNjaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ29udGV4dChjb250ZXh0OiBOZ3hDb250ZXh0U3RvcmVNb2RlbCkge1xuICAgIGlmICh0aGlzLl92aWV3Py5jb250ZXh0ICE9IG51bGwpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGNvbnRleHQpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjb250ZXh0LCBrZXkpKSB7XG4gICAgICAgICAgdGhpcy5fdmlldy5jb250ZXh0W2tleV0gPSBjb250ZXh0W2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuIl19