@tarktech/ngx-context
Version:
Angular Context: Easy property binding for router outlet and nested component trees.
1 lines • 24.2 kB
Source Map (JSON)
{"version":3,"file":"tarktech-ngx-context.mjs","sources":["../../../projects/ngx-context/src/lib/internals.ts","../../../projects/ngx-context/src/lib/provider.component.ts","../../../projects/ngx-context/src/lib/consumer.abstract.ts","../../../projects/ngx-context/src/lib/consumer.component.ts","../../../projects/ngx-context/src/lib/consumer.directive.ts","../../../projects/ngx-context/src/lib/disposer.directive.ts","../../../projects/ngx-context/src/lib/context.module.ts","../../../projects/ngx-context/src/tarktech-ngx-context.ts"],"sourcesContent":["import { Observable, Subject } from 'rxjs';\r\n\r\nexport function isSubscribableOrPromise(obj: any) {\r\n return obj instanceof Observable || obj instanceof Subject || obj instanceof Promise;\r\n}\r\n\r\nexport function parseKeys(input: string | string[]): string[] {\r\n return (Array.isArray(input) ? input : input.split(/\\s+/)).filter(key => key);\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Optional,\r\n SkipSelf,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { ReplaySubject, Subject } from 'rxjs';\r\nimport { isSubscribableOrPromise, parseKeys } from './internals';\r\nimport { ContextMap } from './symbols';\r\n\r\n@Component({\r\n selector: 'context-provider',\r\n template: '<ng-content></ng-content>',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ContextProviderComponent<T = any> implements OnChanges, OnInit {\r\n private initialized = false;\r\n private _contextMap: ContextMap = {};\r\n private _provide: string | string[] = '';\r\n\r\n provided = new Map();\r\n\r\n @Input()\r\n set contextMap(map: ContextMap) {\r\n this._contextMap = map || {};\r\n }\r\n get contextMap(): ContextMap {\r\n return this._contextMap;\r\n }\r\n\r\n @Input()\r\n set provide(value: string | string[]) {\r\n this._provide = value || '';\r\n }\r\n get provide(): string | string[] {\r\n return this._provide;\r\n }\r\n\r\n get component(): T {\r\n return this.source['_view']?.component || this.source['context']\r\n }\r\n\r\n change$ = new ReplaySubject<string>(1);\r\n reset$ = new Subject<void>();\r\n\r\n constructor(\r\n @Optional()\r\n @SkipSelf()\r\n private source: ChangeDetectorRef,\r\n ) {\r\n }\r\n\r\n private init() {\r\n setTimeout(() => {\r\n const THIS = this;\r\n const context = new Map();\r\n const provided = parseKeys(this.provide).filter(\r\n key => key && key in (this.component as object),\r\n );\r\n\r\n provided.forEach(key => {\r\n if (isSubscribableOrPromise(this.component[key])) {\r\n this.change$.next(key);\r\n return;\r\n }\r\n\r\n const propertyDescriptor =\r\n Object.getOwnPropertyDescriptor(this.component, key) ||\r\n Object.getOwnPropertyDescriptor((this.component as any).__proto__, key);\r\n\r\n this.provided.set(key, propertyDescriptor);\r\n\r\n const { value, writable, get: getter, set: setter, ...prop } = propertyDescriptor;\r\n\r\n Object.defineProperty(this.component, key, {\r\n ...prop,\r\n get: getter\r\n ? function (): any {\r\n return getter.call(this);\r\n }\r\n : function (): any {\r\n return context.get(key);\r\n },\r\n set: setter\r\n ? function () {\r\n setter.apply(this, arguments);\r\n THIS.change$.next(key);\r\n }\r\n : function (newValue: any) {\r\n context.set(key, newValue);\r\n THIS.change$.next(key);\r\n },\r\n });\r\n\r\n this.component[key] = value || this.component[key];\r\n });\r\n }, 0);\r\n }\r\n\r\n private reset() {\r\n this.provided.forEach((propertyDescriptor, key) => {\r\n const value = this.component[key];\r\n\r\n Object.defineProperty(this.component, key, propertyDescriptor);\r\n\r\n this.component[key] = value;\r\n });\r\n\r\n this.provided.clear();\r\n this.change$.next('');\r\n this.reset$.next();\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.initialized) {\r\n this.reset();\r\n\r\n if (this.source) this.init();\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.initialized = true;\r\n this.ngOnChanges();\r\n }\r\n}\r\n","import { ChangeDetectorRef, Directive, Input, OnChanges, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, startWith, takeUntil } from 'rxjs/operators';\r\nimport { parseKeys } from './internals';\r\nimport { ContextProviderComponent } from './provider.component';\r\nimport { ContextMap } from './symbols';\r\n\r\n@Directive()\r\nexport class AbstractContextConsumer<T> implements OnChanges, OnDestroy, OnInit {\r\n protected destroy$ = new Subject<void>();\r\n protected initialized: boolean;\r\n protected _contextMap = {};\r\n protected _consume: string | string[] = '';\r\n\r\n consumed = new Map();\r\n\r\n @Input()\r\n set contextMap(map: ContextMap) {\r\n this._contextMap = map || {};\r\n }\r\n get contextMap(): ContextMap {\r\n return this._contextMap;\r\n }\r\n\r\n @Input()\r\n set consume(consume: string | string[]) {\r\n this._consume = consume || '';\r\n }\r\n get consume(): string | string[] {\r\n return this._consume;\r\n }\r\n\r\n get component(): T {\r\n return this.target['_view']?.component || this.target['context']\r\n }\r\n\r\n constructor(\r\n protected provider: ContextProviderComponent,\r\n protected target: ChangeDetectorRef,\r\n ) {}\r\n\r\n protected init(): void {\r\n const consumed: string[] = parseKeys(this.consume);\r\n\r\n this.provider.reset$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => this.ngOnChanges());\r\n\r\n if (this.provider.provide.length)\r\n this.provider.change$\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n startWith(...Array.from(this.provider.provided.keys())),\r\n filter(key => !!key),\r\n )\r\n .subscribe(providerKey => this.syncProperties(consumed, providerKey));\r\n }\r\n\r\n protected reset(): void {\r\n this.consumed.forEach((value, key) => {\r\n this.component[key] = value;\r\n });\r\n\r\n this.consumed.clear();\r\n }\r\n\r\n protected syncProperties(consumed: string[], providerKey: string): void {\r\n let key = this.provider.contextMap[providerKey] || providerKey;\r\n key = this.contextMap[key] || key;\r\n\r\n if (consumed.length && consumed.indexOf(key) < 0) return;\r\n\r\n if (!this.consumed.has(key)) this.consumed.set(key, this.component[key]);\r\n\r\n this.component[key] = this.provider.component[providerKey];\r\n this.target.markForCheck();\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.initialized) {\r\n this.destroy$.next();\r\n\r\n this.reset();\r\n if (this.target && this.provider) this.init();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n }\r\n\r\n ngOnInit() {\r\n this.initialized = true;\r\n this.ngOnChanges();\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Optional,\r\n SkipSelf,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { AbstractContextConsumer } from './consumer.abstract';\r\nimport { ContextProviderComponent } from './provider.component';\r\n\r\n@Component({\r\n selector: 'context-consumer',\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ContextConsumerComponent<T = any> extends AbstractContextConsumer<T> {\r\n constructor(\r\n @Optional()\r\n @SkipSelf()\r\n providerComponent: ContextProviderComponent,\r\n @Optional()\r\n @SkipSelf()\r\n parent: ChangeDetectorRef,\r\n ) {\r\n super(providerComponent, parent);\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n Host,\r\n Input,\r\n Optional,\r\n SkipSelf\r\n} from '@angular/core';\r\nimport { AbstractContextConsumer } from './consumer.abstract';\r\nimport { ContextProviderComponent } from './provider.component';\r\n\r\n@Directive({\r\n selector: '[contextConsumer]',\r\n})\r\nexport class ContextConsumerDirective<T = any> extends AbstractContextConsumer<T> {\r\n @Input('contextConsumer')\r\n set consume(consume: string | string[]) {\r\n this._consume = consume || '';\r\n }\r\n get consume(): string | string[] {\r\n return this._consume;\r\n }\r\n\r\n constructor(\r\n @Optional()\r\n @SkipSelf()\r\n providerComponent: ContextProviderComponent,\r\n @Optional()\r\n @Host()\r\n host: ChangeDetectorRef,\r\n ) {\r\n super(providerComponent, host);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n EmbeddedViewRef,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Optional,\r\n SkipSelf,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, startWith, takeUntil } from 'rxjs/operators';\r\nimport { parseKeys } from './internals';\r\nimport { ContextProviderComponent } from './provider.component';\r\n\r\nexport class Context {\r\n $implicit: { [key: string]: any } = {};\r\n}\r\n\r\n@Directive({\r\n selector: '[contextDisposer]',\r\n})\r\nexport class ContextDisposerDirective implements OnChanges, OnDestroy {\r\n private destroy$ = new Subject<void>();\r\n private _dispose: string | string[] = '';\r\n private view: EmbeddedViewRef<any>;\r\n\r\n @Input('contextDisposer')\r\n set dispose(dispose: string | string[]) {\r\n this._dispose = dispose || '';\r\n }\r\n get dispose(): string | string[] {\r\n return this._dispose;\r\n }\r\n\r\n constructor(\r\n @Optional()\r\n private tempRef: TemplateRef<any>,\r\n @Optional()\r\n private vcRef: ViewContainerRef,\r\n @Optional()\r\n @SkipSelf()\r\n private provider: ContextProviderComponent,\r\n ) {}\r\n\r\n private init(): void {\r\n const disposed: string[] = parseKeys(this.dispose);\r\n\r\n this.provider.reset$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => this.ngOnChanges());\r\n\r\n if (this.provider.provide.length)\r\n this.provider.change$\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n startWith(...Array.from(this.provider.provided.keys())),\r\n filter(key => !!key),\r\n )\r\n .subscribe(providerKey => this.syncProperties(disposed, providerKey));\r\n }\r\n\r\n private reset(): void {\r\n this.view = this.vcRef.createEmbeddedView(this.tempRef, new Context());\r\n }\r\n\r\n private syncProperties(disposed: string[], providerKey: string): void {\r\n const key = this.provider.contextMap[providerKey] || providerKey;\r\n\r\n if (disposed.length && disposed.indexOf(key) < 0) return;\r\n\r\n const value = this.provider.component[providerKey];\r\n\r\n this.view.context.$implicit[key] = value;\r\n this.view.context[key] = value;\r\n this.view.markForCheck();\r\n }\r\n\r\n ngOnChanges() {\r\n this.ngOnDestroy();\r\n this.reset();\r\n\r\n if (this.provider && this.tempRef && this.vcRef) this.init();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n\r\n if (this.view) this.vcRef.clear();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { ContextConsumerComponent } from './consumer.component';\r\nimport { ContextConsumerDirective } from './consumer.directive';\r\nimport { ContextDisposerDirective } from './disposer.directive';\r\nimport { ContextProviderComponent } from './provider.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ContextConsumerComponent,\r\n ContextConsumerDirective,\r\n ContextDisposerDirective,\r\n ContextProviderComponent,\r\n ],\r\n exports: [\r\n ContextConsumerComponent,\r\n ContextConsumerDirective,\r\n ContextDisposerDirective,\r\n ContextProviderComponent,\r\n ],\r\n})\r\nexport class NgxContextModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ContextProviderComponent"],"mappings":"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"}