UNPKG

@igo2/common

Version:
1 lines 20 kB
{"version":3,"file":"igo2-common-dynamic-component.mjs","sources":["../../../packages/common/dynamic-component/src/shared/dynamic-component.ts","../../../packages/common/dynamic-component/src/shared/dynamic-component.service.ts","../../../packages/common/dynamic-component/src/dynamic-outlet/dynamic-outlet.component.ts","../../../packages/common/dynamic-component/src/dynamic-outlet/dynamic-outlet.component.html","../../../packages/common/dynamic-component/src/dynamic-component.module.ts","../../../packages/common/dynamic-component/src/dynamic-outlet/dynamic-outlet.module.ts","../../../packages/common/dynamic-component/src/igo2-common-dynamic-component.ts"],"sourcesContent":["import {\n ComponentFactory,\n ComponentRef,\n ViewContainerRef\n} from '@angular/core';\n\nimport { Observable, Subscription } from 'rxjs';\n\n/**\n * This class is used in the DynamicComponentOutlet component. It holds\n * a reference to a component factory and can render that component\n * in a target element on demand. It's also possible to set inputs\n * and to subscribe to outputs.\n */\nexport class DynamicComponent<C> {\n /**\n * Component reference\n */\n private componentRef: ComponentRef<C>;\n\n /**\n * Subscriptions to the component's outputs. Those need\n * to be unsubscribed when the component is destroyed.\n */\n private subscriptions: Subscription[] = [];\n\n /**\n * Component target element\n */\n private target: ViewContainerRef;\n\n /**\n * Component inputs\n */\n private inputs: Record<string, any> = {};\n\n /**\n * Subscriptions to the component's async inputs\n */\n private inputs$$: Record<string, Subscription> = {};\n\n /**\n * Subscribers to the component's outputs\n */\n private subscribers: Record<string, (event: any) => void> = {};\n\n constructor(private componentFactory: ComponentFactory<C>) {}\n\n /**\n * Render the component to a target element.\n * Set it's inputs and subscribe to it's outputs.\n * @param target Target element\n */\n setTarget(target: ViewContainerRef) {\n this.target = target;\n this.componentRef = target.createComponent(this.componentFactory);\n this.updateInputs(this.inputs);\n this.updateSubscribers(this.subscribers);\n }\n\n /**\n * Destroy this component. That means, removing from it's target\n * element and unsubscribing to it's outputs.\n */\n destroy() {\n if (this.target !== undefined) {\n this.target.clear();\n }\n if (this.componentRef !== undefined) {\n this.componentRef.destroy();\n this.componentRef = undefined;\n }\n this.unobserveAllInputs();\n this.unsubscribeAll();\n }\n\n /**\n * Update the component inputs. This is an update so any\n * key not defined won't be overwritten.\n */\n updateInputs(inputs: Record<string, any>) {\n this.inputs = inputs;\n if (this.componentRef === undefined) {\n return;\n }\n\n const instance = this.componentRef.instance;\n const allowedInputs = this.componentFactory.inputs;\n allowedInputs.forEach(\n (value: { propName: string; templateName: string }) => {\n const key = value.propName;\n\n this.unobserveInput(key);\n\n const inputValue = inputs[key];\n if (Object.prototype.hasOwnProperty.call(inputs, key)) {\n if (inputValue instanceof Observable) {\n this.observeInput(key, inputValue);\n } else {\n this.setInputValue(instance, key, inputValue);\n }\n }\n }\n );\n\n if (typeof (instance as any).onUpdateInputs === 'function') {\n (instance as any).onUpdateInputs();\n }\n }\n\n /**\n * Set an instance's input value\n * @param instance Component instance\n * @param key Input key\n * @param value Input value\n */\n private setInputValue(instance: C, key: string, value: any) {\n const currentValue = instance[key];\n if (value === currentValue) {\n return;\n }\n\n const prototype = Object.getPrototypeOf(instance);\n const descriptor = Object.getOwnPropertyDescriptor(prototype, key);\n if (descriptor !== undefined && descriptor.set !== undefined) {\n descriptor.set.call(instance, value);\n } else {\n instance[key] = value;\n }\n }\n\n /**\n * Update the component subscribers. This is an update so any\n * key not defined won't be overwritten.\n */\n updateSubscribers(subscribers: Record<string, (event: any) => void>) {\n this.subscribers = subscribers;\n if (this.componentRef === undefined) {\n return;\n }\n\n const instance = this.componentRef.instance;\n const allowedSubscribers = this.componentFactory.outputs;\n allowedSubscribers.forEach(\n (value: { propName: string; templateName: string }) => {\n const key = value.propName;\n if (Object.prototype.hasOwnProperty.call(subscribers, key)) {\n const emitter = instance[key];\n const subscriber = subscribers[key];\n if (Array.isArray(subscriber)) {\n subscriber.forEach((_subscriber) => {\n this.subscriptions.push(emitter.subscribe(_subscriber));\n });\n } else {\n this.subscriptions.push(emitter.subscribe(subscriber));\n }\n }\n }\n );\n }\n\n /**\n * Subscribe to an observable input and update the component's input value\n * accordingly\n * @param key Input key\n * @param observable Observable\n */\n private observeInput(key: string, observable: Observable<any>) {\n this.inputs$$[key] = observable.subscribe((value: any) => {\n const instance = this.componentRef.instance;\n this.setInputValue(instance, key, value);\n\n if (typeof (instance as any).onUpdateInputs === 'function') {\n (instance as any).onUpdateInputs();\n }\n });\n }\n\n /**\n * Unsubscribe to an observable input\n * @param key Input key\n */\n private unobserveInput(key: string) {\n if (this.inputs$$[key] !== undefined) {\n this.inputs$$[key].unsubscribe();\n this.inputs$$[key] = undefined;\n }\n }\n\n /**\n * Unsubscribe to all outputs.\n */\n private unobserveAllInputs() {\n Object.values(this.inputs$$).forEach((s: Subscription | undefined) => {\n if (s !== undefined) {\n s.unsubscribe();\n }\n });\n this.inputs$$ = {};\n }\n\n /**\n * Unsubscribe to all outputs.\n */\n private unsubscribeAll() {\n this.subscriptions.forEach((s: Subscription) => s.unsubscribe());\n this.subscriptions = [];\n }\n}\n","import { ComponentFactoryResolver, Injectable } from '@angular/core';\n\nimport { DynamicComponent } from './dynamic-component';\n\n/**\n * Service to creates DynamicComponent instances from base component classes\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicComponentService {\n constructor(private resolver: ComponentFactoryResolver) {}\n\n /**\n * Creates a DynamicComponent instance from a base component class\n * @param componentCls The component class\n * @returns DynamicComponent instance\n */\n create(componentCls: any): DynamicComponent<any> {\n const factory = this.resolver.resolveComponentFactory(componentCls as any);\n return new DynamicComponent<typeof componentCls>(factory);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\n\nimport { ObjectUtils } from '@igo2/utils';\n\nimport { DynamicComponent } from '../shared/dynamic-component';\nimport { DynamicComponentService } from '../shared/dynamic-component.service';\n\n@Component({\n selector: 'igo-dynamic-outlet',\n templateUrl: 'dynamic-outlet.component.html',\n styleUrls: ['dynamic-outlet.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DynamicOutletComponent implements OnChanges, OnDestroy {\n /**\n * The dynamic component base class or the dynamic component itself\n */\n @Input() component: DynamicComponent<any> | any;\n\n /**\n * The dynamic component inputs\n */\n @Input() inputs: Record<string, any> = {};\n\n /**\n * The subscribers to the dynamic component outputs\n */\n @Input() subscribers: Record<string, (event: any) => void> = {};\n\n /**\n * The dynamic component\n */\n private dynamicComponent: DynamicComponent<any>;\n\n /**\n * The view element to render the component to\n * @ignore\n */\n @ViewChild('target', { read: ViewContainerRef, static: true })\n private target: ViewContainerRef;\n\n constructor(\n private dynamicComponentService: DynamicComponentService,\n private cdRef: ChangeDetectorRef\n ) {}\n\n /**\n * If the dynamic component changes, create it.\n * If the inputs or subscribers change, update the current component's\n * inputs or subscribers.\n * @internal\n */\n ngOnChanges(changes: SimpleChanges) {\n const component = changes.component;\n const inputs = changes.inputs;\n const subscribers = changes.subscribers;\n const eq = ObjectUtils.objectsAreEquivalent;\n\n if (!component || !component.currentValue) {\n return;\n }\n\n if (component.currentValue !== component.previousValue) {\n this.createComponent(component.currentValue);\n } else {\n const inputsAreEquivalents =\n inputs && eq(inputs.currentValue || {}, inputs.previousValue || {});\n const subscribersAreEquivalents =\n subscribers &&\n eq(subscribers.currentValue || {}, subscribers.previousValue || {});\n\n if (inputsAreEquivalents === false) {\n this.updateInputs();\n }\n\n if (subscribersAreEquivalents === false) {\n this.updateSubscribers();\n }\n }\n this.cdRef.detectChanges();\n }\n\n /**\n * Destroy the dynamic component and all it's subscribers\n * @internal\n */\n ngOnDestroy() {\n if (this.dynamicComponent) {\n this.dynamicComponent.destroy();\n }\n }\n\n /**\n * Create a DynamicComponent out of the component class and render it.\n * @internal\n */\n private createComponent(component: DynamicComponent<any> | any) {\n if (this.dynamicComponent !== undefined) {\n this.dynamicComponent.destroy();\n }\n this.dynamicComponent =\n component instanceof DynamicComponent\n ? component\n : this.dynamicComponentService.create(component);\n this.renderComponent();\n }\n\n /**\n * Create and render the dynamic component. Set it's inputs and subscribers\n * @internal\n */\n private renderComponent() {\n this.updateInputs();\n this.updateSubscribers();\n this.dynamicComponent.setTarget(this.target);\n }\n\n /**\n * Update the dynamic component inputs. This is an update so any\n * key not defined won't be overwritten.\n * @internal\n */\n private updateInputs() {\n this.dynamicComponent.updateInputs(this.inputs);\n }\n\n /**\n * Update the dynamic component subscribers. This is an update so any\n * key not defined won't be overwritten.\n * @internal\n */\n private updateSubscribers() {\n this.dynamicComponent.updateSubscribers(this.subscribers);\n }\n}\n","<ng-template #target></ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { DynamicOutletComponent } from './dynamic-outlet/dynamic-outlet.component';\n\n/**\n * @deprecated import the DynamicOutletComponent directly\n */\n@NgModule({\n imports: [DynamicOutletComponent],\n exports: [DynamicOutletComponent]\n})\nexport class IgoDynamicComponentModule {}\n","import { NgModule } from '@angular/core';\n\nimport { DynamicOutletComponent } from './dynamic-outlet.component';\n\n/**\n * @deprecated import the DynamicOutletComponent directly\n */\n@NgModule({\n imports: [DynamicOutletComponent],\n exports: [DynamicOutletComponent]\n})\nexport class IgoDynamicOutletModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.DynamicComponentService"],"mappings":"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"}