{"version":3,"file":"ng-dynamic-component.mjs","sources":["../../../projects/ng-dynamic-component/src/lib/component-injector/token.ts","../../../projects/ng-dynamic-component/src/lib/component-io/classic-component-io.ts","../../../projects/ng-dynamic-component/src/lib/component-io/component-io.ts","../../../projects/ng-dynamic-component/src/lib/io/event-argument.ts","../../../projects/ng-dynamic-component/src/lib/io/event-context.ts","../../../projects/ng-dynamic-component/src/lib/io/io.service.ts","../../../projects/ng-dynamic-component/src/lib/io/io-factory.service.ts","../../../projects/ng-dynamic-component/src/lib/component-outlet/component-outlet-io.directive.ts","../../../projects/ng-dynamic-component/src/lib/component-outlet/component-outlet-injector.directive.ts","../../../projects/ng-dynamic-component/src/lib/component-outlet/component-outlet-injector.module.ts","../../../projects/ng-dynamic-component/src/lib/dynamic-attributes/dynamic-attributes.directive.ts","../../../projects/ng-dynamic-component/src/lib/dynamic-attributes/dynamic-attributes.module.ts","../../../projects/ng-dynamic-component/src/lib/util.ts","../../../projects/ng-dynamic-component/src/lib/reflect/reflect.service.ts","../../../projects/ng-dynamic-component/src/lib/dynamic-directives/dynamic-directives.directive.ts","../../../projects/ng-dynamic-component/src/lib/dynamic-directives/dynamic-directives.module.ts","../../../projects/ng-dynamic-component/src/lib/dynamic-io/dynamic-io.directive.ts","../../../projects/ng-dynamic-component/src/lib/dynamic-io/dynamic-io.module.ts","../../../projects/ng-dynamic-component/src/lib/dynamic.component.ts","../../../projects/ng-dynamic-component/src/lib/dynamic.module.ts","../../../projects/ng-dynamic-component/src/public-api.ts","../../../projects/ng-dynamic-component/src/ng-dynamic-component.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { DynamicComponentInjector } from './component-injector';\n\n/**\n * @public\n */\nexport const DynamicComponentInjectorToken =\n  new InjectionToken<DynamicComponentInjector>('DynamicComponentInjector');\n","import { isObservable, Observable } from 'rxjs';\nimport { ComponentInputKey, ComponentIO } from './component-io';\nimport { ComponentRef, Injectable } from '@angular/core';\n\n/** @internal */\n@Injectable()\nexport class ClassicComponentIO implements ComponentIO {\n  setInput<T, K extends ComponentInputKey<T>>(\n    componentRef: ComponentRef<T>,\n    name: K,\n    value: T[K],\n  ): void {\n    componentRef.setInput(name, value);\n  }\n\n  getOutput<T, K extends ComponentInputKey<T>>(\n    componentRef: ComponentRef<T>,\n    name: K,\n  ): Observable<unknown> {\n    const output = componentRef.instance[name];\n\n    if (!isObservable(output)) {\n      throw new Error(`Component ${name} is not an output!`);\n    }\n\n    return output;\n  }\n}\n","import { ComponentRef, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ClassicComponentIO } from './classic-component-io';\n\n/** @public */\n@Injectable({ providedIn: 'root', useClass: ClassicComponentIO })\nexport abstract class ComponentIO {\n  abstract setInput<T, K extends ComponentInputKey<T>>(\n    componentRef: ComponentRef<T>,\n    name: K,\n    value: T[K],\n  ): void;\n  abstract getOutput<T, K extends ComponentInputKey<T>>(\n    componentRef: ComponentRef<T>,\n    name: K,\n  ): Observable<unknown>;\n}\n\n/** @public */\nexport type ComponentInputKey<T> = keyof T & string;\n","import { InjectionToken } from '@angular/core';\n\n/**\n * @public\n */\nexport function defaultEventArgumentFactory() {\n  return '$event';\n}\n\n/**\n * @public\n */\nexport const IoEventArgumentToken = new InjectionToken<string>(\n  'EventArgument',\n  {\n    providedIn: 'root',\n    factory: defaultEventArgumentFactory,\n  },\n);\n\n/**\n * @public\n * @deprecated Since v10.4.0 - Use {@link IoEventArgumentToken} instead!\n */\nexport const EventArgumentToken = IoEventArgumentToken;\n","import { InjectionToken, StaticProvider } from '@angular/core';\n\n/**\n * A token that holds custom context of the output handlers\n *\n * @public\n */\nexport const IoEventContextToken = new InjectionToken<unknown>(\n  'IoEventContext',\n);\n\n/**\n * A token that holds provider for custom context of the output handlers\n * which should be provided using {@link IoEventContextToken} token\n *\n * @public\n */\nexport const IoEventContextProviderToken = new InjectionToken<StaticProvider>(\n  'IoEventContextProvider',\n);\n","import {\n  ChangeDetectorRef,\n  ComponentFactory,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Inject,\n  Injectable,\n  Injector,\n  KeyValueChangeRecord,\n  KeyValueChanges,\n  KeyValueDiffers,\n  OnDestroy,\n  Optional,\n  StaticProvider,\n  Type,\n} from '@angular/core';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil, tap } from 'rxjs/operators';\n\nimport {\n  DynamicComponentInjector,\n  DynamicComponentInjectorToken,\n} from '../component-injector';\nimport { ComponentIO } from '../component-io';\nimport { IoEventArgumentToken } from './event-argument';\nimport {\n  IoEventContextProviderToken,\n  IoEventContextToken,\n} from './event-context';\nimport { EventHandler, InputsType, OutputsType, OutputWithArgs } from './types';\n\ninterface IOMapInfo {\n  propName: string;\n  templateName: string;\n}\n\ntype IOMappingList = IOMapInfo[];\n\ntype KeyValueChangesAny = KeyValueChanges<string, unknown>;\n\ninterface OutputsTypeProcessed extends OutputsType {\n  [k: string]: EventHandler;\n}\n\ninterface AnyComponent extends Record<string, unknown> {}\n\n/**\n * @public\n */\n@Injectable({ providedIn: 'root' })\nexport class IoServiceOptions {\n  trackOutputChanges = false;\n}\n\n/**\n * @public\n */\n@Injectable()\nexport class IoService implements OnDestroy {\n  private lastComponentInst: unknown;\n  private lastChangedInputs = new Set<string>();\n  private inputsDiffer = this.differs.find({}).create();\n  // TODO: Replace ComponentFactory once new API is created\n  // @see https://github.com/angular/angular/issues/44926\n  // eslint-disable-next-line deprecation/deprecation\n  private compFactory?: ComponentFactory<AnyComponent>;\n  private outputsShouldDisconnect$ = new Subject<void>();\n  private outputsEventContext: unknown;\n\n  private inputs: InputsType = {};\n  private outputs: OutputsType = {};\n\n  private get compRef() {\n    return this.compInjector.componentRef as ComponentRef<AnyComponent> | null;\n  }\n\n  private get componentInst() {\n    return this.compRef?.instance;\n  }\n\n  constructor(\n    private readonly injector: Injector,\n    private readonly differs: KeyValueDiffers,\n    // TODO: Replace ComponentFactoryResolver once new API is created\n    // @see https://github.com/angular/angular/issues/44926\n    // eslint-disable-next-line deprecation/deprecation\n    private readonly cfr: ComponentFactoryResolver,\n    private readonly options: IoServiceOptions,\n    @Inject(DynamicComponentInjectorToken)\n    private readonly compInjector: DynamicComponentInjector,\n    @Inject(IoEventArgumentToken)\n    private readonly eventArgument: string,\n    private readonly cdr: ChangeDetectorRef,\n    @Inject(IoEventContextProviderToken)\n    @Optional()\n    private readonly eventContextProvider: StaticProvider,\n    private readonly componentIO: ComponentIO,\n  ) {\n    if (this.options.trackOutputChanges) {\n      const outputsDiffer = this.differs.find({}).create();\n      this.outputsChanged = (outputs) => !!outputsDiffer.diff(outputs);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.disconnectOutputs();\n  }\n\n  /**\n   * Call update whenever inputs/outputs may or did change.\n   *\n   * It will detect both new and mutated changes.\n   */\n  update(inputs?: InputsType | null, outputs?: OutputsType | null): void {\n    if (!this.compRef) {\n      this.disconnectOutputs();\n      return;\n    }\n\n    const changes = this.updateIO(inputs, outputs);\n\n    const compChanged = this.isComponentInstChanged();\n\n    const inputsChanges = this.getInputsChanges(compChanged);\n    const outputsChanged = this.outputsChanged(this.outputs);\n\n    if (inputsChanges) {\n      this.updateChangedInputs(inputsChanges);\n    }\n\n    if (compChanged || inputsChanges) {\n      this.updateInputs(compChanged || !this.lastChangedInputs.size);\n    }\n\n    if (compChanged || outputsChanged || changes.outputsChanged) {\n      this.bindOutputs();\n    }\n  }\n\n  private outputsChanged(outputs: OutputsType) {\n    return false;\n  }\n\n  private isComponentInstChanged(): boolean {\n    if (this.lastComponentInst !== this.componentInst) {\n      this.lastComponentInst = this.componentInst;\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  private updateIO(inputs?: InputsType | null, outputs?: OutputsType | null) {\n    if (!inputs) {\n      inputs = {};\n    }\n    if (!outputs) {\n      outputs = {};\n    }\n\n    const inputsChanged = this.inputs !== inputs;\n    const outputsChanged = this.outputs !== outputs;\n\n    this.inputs = inputs;\n    this.outputs = outputs;\n\n    return { inputsChanged, outputsChanged };\n  }\n\n  private updateInputs(isFirstChange = false) {\n    if (isFirstChange) {\n      this.updateCompFactory();\n    }\n\n    const compRef = this.compRef;\n    const inputs = this.inputs;\n\n    if (!inputs || !compRef) {\n      return;\n    }\n\n    const ifInputChanged = this.lastChangedInputs.size\n      ? (name: string) => this.lastChangedInputs.has(name)\n      : () => true;\n\n    const componentIO = this.componentIO;\n\n    for (const name of Object.keys(inputs)) {\n      if (ifInputChanged(name)) {\n        componentIO.setInput(compRef, name, inputs[name]);\n      }\n    }\n  }\n\n  private bindOutputs() {\n    this.disconnectOutputs();\n\n    const compRef = this.compRef;\n    const outputs = this.outputs;\n\n    if (!outputs || !compRef) {\n      return;\n    }\n\n    const resolvedOutputs = this.resolveOutputs(outputs);\n    const componentIO = this.componentIO;\n\n    merge(\n      ...Object.keys(resolvedOutputs).map((name) =>\n        componentIO\n          .getOutput(compRef, name)\n          .pipe(tap((event) => resolvedOutputs[name](event))),\n      ),\n    )\n      .pipe(takeUntil(this.outputsShouldDisconnect$))\n      .subscribe(() => this.cdr.markForCheck());\n  }\n\n  private disconnectOutputs() {\n    this.outputsShouldDisconnect$.next();\n  }\n\n  private getInputsChanges(isCompChanged: boolean) {\n    if (isCompChanged) {\n      this.inputsDiffer.diff({});\n    }\n\n    return this.inputsDiffer.diff(this.inputs);\n  }\n\n  private updateChangedInputs(differ: KeyValueChangesAny) {\n    this.lastChangedInputs.clear();\n\n    const addRecordKeyToSet = (record: KeyValueChangeRecord<string, unknown>) =>\n      this.lastChangedInputs.add(record.key);\n\n    differ.forEachAddedItem(addRecordKeyToSet);\n    differ.forEachChangedItem(addRecordKeyToSet);\n    differ.forEachRemovedItem(addRecordKeyToSet);\n  }\n\n  // TODO: Replace ComponentFactory once new API is created\n  // @see https://github.com/angular/angular/issues/44926\n  // eslint-disable-next-line deprecation/deprecation\n  private resolveCompFactory() {\n    if (!this.compRef) {\n      return;\n    }\n\n    try {\n      try {\n        return this.cfr.resolveComponentFactory(this.compRef.componentType);\n      } catch (e) {\n        // Fallback if componentType does not exist (happens on NgComponentOutlet)\n        return this.cfr.resolveComponentFactory(\n          (this.compRef.instance as any).constructor as Type<AnyComponent>,\n        );\n      }\n    } catch (e) {\n      // Factory not available - bailout\n      return;\n    }\n  }\n\n  private updateCompFactory() {\n    this.compFactory = this.resolveCompFactory();\n  }\n\n  private resolveOutputs(outputs: OutputsType) {\n    this.updateOutputsEventContext();\n\n    const processedOutputs = this.processOutputs(outputs);\n\n    if (!this.compFactory) {\n      return processedOutputs;\n    }\n\n    return this.remapIO(processedOutputs, this.compFactory.outputs);\n  }\n\n  private updateOutputsEventContext() {\n    if (this.eventContextProvider) {\n      // Resolve custom context from local provider\n      const eventContextInjector = Injector.create({\n        name: 'EventContext',\n        parent: this.injector,\n        providers: [this.eventContextProvider],\n      });\n\n      this.outputsEventContext = eventContextInjector.get(IoEventContextToken);\n    } else {\n      // Try to get global context\n      this.outputsEventContext = this.injector.get(IoEventContextToken, null);\n    }\n  }\n\n  private processOutputs(outputs: OutputsType) {\n    const processedOutputs: OutputsTypeProcessed = {};\n\n    Object.keys(outputs).forEach((key) => {\n      const outputExpr = outputs[key]!;\n      let outputHandler: EventHandler<unknown>;\n\n      if (typeof outputExpr === 'function') {\n        outputHandler = outputExpr;\n      } else {\n        outputHandler = outputExpr && this.processOutputArgs(outputExpr);\n      }\n\n      if (this.outputsEventContext && outputHandler) {\n        outputHandler = outputHandler.bind(this.outputsEventContext);\n      }\n\n      processedOutputs[key] = outputHandler;\n    });\n\n    return processedOutputs;\n  }\n\n  private processOutputArgs(output: OutputWithArgs): EventHandler {\n    const eventArgument = this.eventArgument;\n    const args = 'args' in output ? output.args || [] : [eventArgument];\n    const eventIdx = args.indexOf(eventArgument);\n    const handler = output.handler;\n\n    // When there is no event argument - use just arguments\n    if (eventIdx === -1) {\n      return function (this: unknown) {\n        return handler.apply(this, args);\n      };\n    }\n\n    return function (this: unknown, event) {\n      const argsWithEvent = [...args];\n      argsWithEvent[eventIdx] = event;\n\n      return handler.apply(this, argsWithEvent);\n    };\n  }\n\n  private remapIO<T extends Record<string, unknown>>(\n    io: T,\n    mapping: IOMappingList,\n  ) {\n    const newIO: Record<string, unknown> = {};\n\n    Object.keys(io).forEach((key) => {\n      const newKey = this.findPropByTplInMapping(key, mapping) || key;\n      newIO[newKey] = io[key];\n    });\n\n    return newIO as T;\n  }\n\n  private findPropByTplInMapping(tplName: string, mapping: IOMappingList) {\n    for (const map of mapping) {\n      if (map.templateName === tplName) {\n        return map.propName;\n      }\n    }\n    return null;\n  }\n}\n","import { Injectable, Injector, StaticProvider } from '@angular/core';\n\nimport {\n  DynamicComponentInjector,\n  DynamicComponentInjectorToken,\n} from '../component-injector';\nimport { IoService, IoServiceOptions } from './io.service';\n\n/**\n * @public\n */\nexport interface IoFactoryServiceOptions {\n  injector?: Injector;\n}\n\n/**\n * @public\n */\n@Injectable({ providedIn: 'root' })\nexport class IoFactoryService {\n  constructor(private injector: Injector) {}\n\n  create(\n    componentInjector: DynamicComponentInjector,\n    ioOptions?: IoServiceOptions & IoFactoryServiceOptions,\n  ) {\n    const providers: StaticProvider[] = [\n      { provide: IoService, useClass: IoService },\n      { provide: DynamicComponentInjectorToken, useValue: componentInjector },\n    ];\n\n    if (ioOptions) {\n      providers.push({ provide: IoServiceOptions, useValue: ioOptions });\n    }\n\n    const ioInjector = Injector.create({\n      name: 'IoInjector',\n      parent: ioOptions?.injector ?? this.injector,\n      providers,\n    });\n\n    return ioInjector.get(IoService);\n  }\n}\n","import { Directive, DoCheck, Input } from '@angular/core';\n\nimport { InputsType, IoService, OutputsType } from '../io';\n\n/**\n * @public\n */\n@Directive({\n  selector:\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    '[ngComponentOutletNdcDynamicInputs],[ngComponentOutletNdcDynamicOutputs]',\n  exportAs: 'ndcDynamicIo',\n  standalone: true,\n  providers: [IoService],\n})\nexport class ComponentOutletIoDirective implements DoCheck {\n  @Input()\n  ngComponentOutletNdcDynamicInputs?: InputsType | null;\n  @Input()\n  ngComponentOutletNdcDynamicOutputs?: OutputsType | null;\n\n  constructor(private ioService: IoService) {}\n\n  ngDoCheck() {\n    this.ioService.update(\n      this.ngComponentOutletNdcDynamicInputs,\n      this.ngComponentOutletNdcDynamicOutputs,\n    );\n  }\n}\n","import { NgComponentOutlet } from '@angular/common';\nimport { ComponentRef, Directive, Host } from '@angular/core';\n\nimport {\n  DynamicComponentInjector,\n  DynamicComponentInjectorToken,\n} from '../component-injector';\n\n/**\n * @public\n */\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: '[ngComponentOutlet]',\n  exportAs: 'ndcComponentOutletInjector',\n  standalone: true,\n  providers: [\n    {\n      provide: DynamicComponentInjectorToken,\n      useExisting: ComponentOutletInjectorDirective,\n    },\n  ],\n})\nexport class ComponentOutletInjectorDirective\n  implements DynamicComponentInjector\n{\n  get componentRef(): ComponentRef<unknown> {\n    // NOTE: Accessing private APIs of Angular\n    return (this.componentOutlet as any)._componentRef;\n  }\n\n  constructor(@Host() private componentOutlet: NgComponentOutlet) {}\n}\n","import { NgModule } from '@angular/core';\n\nimport { ComponentOutletInjectorDirective } from './component-outlet-injector.directive';\nimport { ComponentOutletIoDirective } from './component-outlet-io.directive';\n\n/**\n * @public\n */\n@NgModule({\n  imports: [ComponentOutletInjectorDirective, ComponentOutletIoDirective],\n  exports: [ComponentOutletInjectorDirective, ComponentOutletIoDirective],\n})\nexport class ComponentOutletInjectorModule {}\n","import {\n  Directive,\n  DoCheck,\n  Inject,\n  Input,\n  KeyValueChanges,\n  KeyValueDiffers,\n  Optional,\n  Renderer2,\n  Type,\n} from '@angular/core';\n\nimport {\n  DynamicComponentInjector,\n  DynamicComponentInjectorToken,\n} from '../component-injector';\n\n/**\n * @public\n */\nexport interface AttributesMap {\n  [key: string]: string;\n}\n\ninterface AttributeActions {\n  set: AttributesMap;\n  remove: string[];\n}\n\n/**\n * @public\n */\n@Directive({\n  selector: '[ndcDynamicAttributes],[ngComponentOutletNdcDynamicAttributes]',\n  exportAs: 'ndcDynamicAttributes',\n  standalone: true,\n})\nexport class DynamicAttributesDirective implements DoCheck {\n  @Input()\n  ndcDynamicAttributes?: AttributesMap | null;\n  @Input()\n  ngComponentOutletNdcDynamicAttributes?: AttributesMap | null;\n\n  private attrsDiffer = this.differs.find({}).create<string, string>();\n  private lastCompType?: Type<unknown>;\n  private lastAttrActions?: AttributeActions;\n\n  private get _attributes() {\n    return (\n      this.ndcDynamicAttributes ||\n      this.ngComponentOutletNdcDynamicAttributes ||\n      {}\n    );\n  }\n\n  private get nativeElement() {\n    return this.componentInjector?.componentRef?.location.nativeElement;\n  }\n\n  private get compType() {\n    return this.componentInjector?.componentRef?.componentType;\n  }\n\n  private get isCompChanged() {\n    if (this.lastCompType !== this.compType) {\n      this.lastCompType = this.compType;\n      return true;\n    }\n    return false;\n  }\n\n  constructor(\n    private renderer: Renderer2,\n    private differs: KeyValueDiffers,\n    @Inject(DynamicComponentInjectorToken)\n    @Optional()\n    private componentInjector?: DynamicComponentInjector,\n  ) {}\n\n  ngDoCheck(): void {\n    const isCompChanged = this.isCompChanged;\n    const changes = this.attrsDiffer.diff(this._attributes);\n\n    if (changes) {\n      this.lastAttrActions = this.changesToAttrActions(changes);\n    }\n\n    if (changes || (isCompChanged && this.lastAttrActions)) {\n      this.updateAttributes(this.lastAttrActions);\n    }\n  }\n\n  setAttribute(name: string, value: string, namespace?: string) {\n    if (this.nativeElement) {\n      this.renderer.setAttribute(this.nativeElement, name, value, namespace);\n    }\n  }\n\n  removeAttribute(name: string, namespace?: string) {\n    if (this.nativeElement) {\n      this.renderer.removeAttribute(this.nativeElement, name, namespace);\n    }\n  }\n\n  private updateAttributes(actions?: AttributeActions) {\n    if (!this.compType || !actions) {\n      return;\n    }\n\n    Object.keys(actions.set).forEach((key) =>\n      this.setAttribute(key, actions.set[key]),\n    );\n\n    actions.remove.forEach((key) => this.removeAttribute(key));\n  }\n\n  private changesToAttrActions(\n    changes: KeyValueChanges<string, string>,\n  ): AttributeActions {\n    const attrActions: AttributeActions = {\n      set: {},\n      remove: [],\n    };\n\n    changes.forEachAddedItem((r) => (attrActions.set[r.key] = r.currentValue!));\n    changes.forEachChangedItem(\n      (r) => (attrActions.set[r.key] = r.currentValue!),\n    );\n    changes.forEachRemovedItem((r) => attrActions.remove.push(r.key));\n\n    return attrActions;\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ComponentOutletInjectorModule } from '../component-outlet';\nimport { DynamicAttributesDirective } from './dynamic-attributes.directive';\n\n/**\n * @public\n */\n@NgModule({\n  imports: [DynamicAttributesDirective],\n  exports: [DynamicAttributesDirective, ComponentOutletInjectorModule],\n})\nexport class DynamicAttributesModule {}\n","import { OnDestroy, Type } from '@angular/core';\n\n/**\n * Extract type arguments from Angular Directive/Component\n *\n * @internal\n */\nexport function extractNgParamTypes(\n  type: Type<unknown>,\n): unknown[] | undefined {\n  // NOTE: Accessing private APIs of Angular\n  return (type as any)?.ctorParameters?.()?.map((param: any) => param.type);\n}\n\n/**\n * @internal\n */\nexport function isOnDestroy(obj: unknown): obj is OnDestroy {\n  return !!obj && typeof (obj as OnDestroy).ngOnDestroy === 'function';\n}\n","import { Inject, Injectable, InjectionToken, Type } from '@angular/core';\n\n/**\n * Reflect API subsystem required for lib to work\n *\n * @public\n */\nexport interface ReflectApi {\n  getMetadata(type: string, obj: unknown): unknown[];\n}\n\n/**\n * @public\n */\nexport const ReflectRef = new InjectionToken<ReflectApi>('ReflectRef', {\n  providedIn: 'root',\n  factory: () => window.Reflect as any,\n});\n\n/**\n * @public\n */\n@Injectable({ providedIn: 'root' })\nexport class ReflectService {\n  constructor(@Inject(ReflectRef) private reflect: ReflectApi) {}\n\n  getCtorParamTypes(ctor: Type<unknown>): unknown[] {\n    return this.reflect.getMetadata('design:paramtypes', ctor);\n  }\n}\n","import {\n  ChangeDetectorRef,\n  ComponentRef,\n  Directive,\n  DoCheck,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Injector,\n  Input,\n  IterableChanges,\n  IterableDiffers,\n  OnDestroy,\n  Optional,\n  Output,\n  Type,\n  ViewRef,\n} from '@angular/core';\n\nimport {\n  DynamicComponentInjector,\n  DynamicComponentInjectorToken,\n} from '../component-injector';\nimport { InputsType, IoFactoryService, IoService, OutputsType } from '../io';\nimport { extractNgParamTypes, isOnDestroy } from '../util';\nimport { ReflectService } from '../reflect';\n\n/**\n * @public\n */\nexport interface DynamicDirectiveDef<T> {\n  type: Type<T>;\n  inputs?: InputsType;\n  outputs?: OutputsType;\n}\n\n/**\n * @public\n */\nexport function dynamicDirectiveDef<T>(\n  type: Type<T>,\n  inputs?: InputsType,\n  outputs?: OutputsType,\n): DynamicDirectiveDef<T> {\n  return { type, inputs, outputs };\n}\n\n/**\n * @public\n */\nexport interface DirectiveRef<T> {\n  instance: T;\n  type: Type<T>;\n  injector: Injector;\n  hostComponent: unknown;\n  hostView: ViewRef;\n  location: ElementRef;\n  changeDetectorRef: ChangeDetectorRef;\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  onDestroy: (callback: Function) => void;\n}\n\n/**\n * @public\n * @experimental Dynamic directives is an experimental API that may not work as expected.\n *\n * NOTE: There is a known issue with OnChanges hook not beign triggered on dynamic directives\n * since this part of functionality has been removed from the core as Angular now\n * supports this out of the box for dynamic components.\n */\n@Directive({\n  selector: '[ndcDynamicDirectives],[ngComponentOutletNdcDynamicDirectives]',\n  standalone: true,\n  providers: [IoFactoryService],\n})\nexport class DynamicDirectivesDirective implements OnDestroy, DoCheck {\n  @Input()\n  ndcDynamicDirectives?: DynamicDirectiveDef<unknown>[] | null;\n  @Input()\n  ngComponentOutletNdcDynamicDirectives?: DynamicDirectiveDef<unknown>[] | null;\n\n  @Output()\n  ndcDynamicDirectivesCreated = new EventEmitter<DirectiveRef<unknown>[]>();\n\n  private lastCompInstance: unknown;\n\n  private get directives() {\n    return (\n      this.ndcDynamicDirectives || this.ngComponentOutletNdcDynamicDirectives\n    );\n  }\n\n  private get componentRef() {\n    return this.componentInjector?.componentRef;\n  }\n\n  private get compInstance() {\n    return this.componentRef && this.componentRef.instance;\n  }\n\n  private get isCompChanged() {\n    if (this.lastCompInstance !== this.compInstance) {\n      this.lastCompInstance = this.compInstance;\n      return true;\n    }\n    return false;\n  }\n\n  private get hostInjector() {\n    return this.componentRef?.injector;\n  }\n\n  private dirRef = new Map<Type<unknown>, DirectiveRef<unknown>>();\n  private dirIo = new Map<Type<unknown>, IoService>();\n  private dirsDiffer = this.iterableDiffers\n    .find([])\n    .create<DynamicDirectiveDef<unknown>>((_, def) => def.type);\n\n  constructor(\n    private injector: Injector,\n    private iterableDiffers: IterableDiffers,\n    private ioFactoryService: IoFactoryService,\n    private reflectService: ReflectService,\n    @Inject(DynamicComponentInjectorToken)\n    @Optional()\n    private componentInjector?: DynamicComponentInjector,\n  ) {}\n\n  ngDoCheck(): void {\n    if (this.maybeDestroyDirectives()) {\n      return;\n    }\n\n    const dirsChanges = this.dirsDiffer.diff(this.directives);\n\n    if (!dirsChanges) {\n      return this.updateDirectives();\n    }\n\n    this.processDirChanges(dirsChanges);\n  }\n\n  ngOnDestroy(): void {\n    this.destroyAllDirectives();\n  }\n\n  private maybeDestroyDirectives() {\n    if (this.isCompChanged || !this.componentRef) {\n      this.dirsDiffer.diff([]);\n      this.destroyAllDirectives();\n    }\n\n    return !this.componentRef;\n  }\n\n  private processDirChanges(\n    changes: IterableChanges<DynamicDirectiveDef<unknown>>,\n  ) {\n    changes.forEachRemovedItem(({ item }) => this.destroyDirective(item));\n\n    const createdDirs: DirectiveRef<unknown>[] = [];\n    changes.forEachAddedItem(({ item }) => {\n      const dirRef = this.initDirective(item);\n\n      if (dirRef) {\n        createdDirs.push(dirRef);\n      }\n    });\n\n    if (createdDirs.length) {\n      this.ndcDynamicDirectivesCreated.emit(createdDirs);\n    }\n  }\n\n  private updateDirectives() {\n    this.directives?.forEach((dir) => this.updateDirective(dir));\n  }\n\n  private updateDirective(dirDef: DynamicDirectiveDef<unknown>) {\n    const io = this.dirIo.get(dirDef.type);\n    io?.update(dirDef.inputs, dirDef.outputs);\n  }\n\n  private initDirective(\n    dirDef: DynamicDirectiveDef<unknown>,\n  ): DirectiveRef<unknown> | undefined {\n    if (this.dirRef.has(dirDef.type)) {\n      return;\n    }\n\n    const instance = this.createDirective(dirDef.type);\n    const directiveRef: DirectiveRef<unknown> = {\n      instance,\n      type: dirDef.type,\n      injector: this.hostInjector!,\n      hostComponent: this.componentRef!.instance,\n      hostView: this.componentRef!.hostView,\n      location: this.componentRef!.location,\n      changeDetectorRef: this.componentRef!.changeDetectorRef,\n      onDestroy: this.componentRef!.onDestroy,\n    };\n\n    this.initDirIO(directiveRef, dirDef);\n    this.callInitHooks(instance);\n\n    this.dirRef.set(directiveRef.type, directiveRef);\n\n    return directiveRef;\n  }\n\n  private destroyAllDirectives() {\n    this.dirRef.forEach((dir) => this.destroyDirRef(dir));\n    this.dirRef.clear();\n    this.dirIo.clear();\n  }\n\n  private destroyDirective(dirDef: DynamicDirectiveDef<unknown>) {\n    const dirRef = this.dirRef.get(dirDef.type);\n    if (dirRef) {\n      this.destroyDirRef(dirRef);\n    }\n    this.dirRef.delete(dirDef.type);\n    this.dirIo.delete(dirDef.type);\n  }\n\n  private initDirIO(\n    dirRef: DirectiveRef<any>,\n    dirDef: DynamicDirectiveDef<any>,\n  ) {\n    const io = this.ioFactoryService.create(\n      { componentRef: this.dirToCompDef(dirRef) },\n      { trackOutputChanges: true, injector: this.injector },\n    );\n    io.update(dirDef.inputs, dirDef.outputs);\n    this.dirIo.set(dirRef.type, io);\n  }\n\n  private dirToCompDef(dirRef: DirectiveRef<unknown>): ComponentRef<unknown> {\n    return {\n      changeDetectorRef: this.componentRef!.changeDetectorRef,\n      hostView: this.componentRef!.hostView,\n      location: this.componentRef!.location,\n      destroy: this.componentRef!.destroy,\n      onDestroy: this.componentRef!.onDestroy,\n      injector: this.componentRef!.injector,\n      instance: dirRef.instance,\n      componentType: dirRef.type,\n      setInput: (name, value) => ((dirRef.instance as any)[name] = value),\n    };\n  }\n\n  private destroyDirRef(dirRef: DirectiveRef<unknown>) {\n    this.dirIo.get(dirRef.type)?.ngOnDestroy();\n\n    if (isOnDestroy(dirRef.instance)) {\n      dirRef.instance.ngOnDestroy();\n    }\n  }\n\n  private createDirective<T>(dirType: Type<T>): T {\n    const directiveInjector = Injector.create({\n      providers: [\n        {\n          provide: dirType,\n          useClass: dirType,\n          deps: this.resolveDirParamTypes(dirType),\n        },\n        { provide: ElementRef, useValue: this.componentRef!.location },\n      ],\n      parent: this.hostInjector,\n      name: `DynamicDirectiveInjector:${dirType.name}@${\n        this.componentRef!.componentType.name\n      }`,\n    });\n\n    return directiveInjector.get(dirType);\n  }\n\n  private resolveDirParamTypes(dirType: Type<unknown>): unknown[] {\n    return (\n      // First try Angular Compiler's metadata\n      extractNgParamTypes(dirType) ??\n      // Then fallback to Reflect API\n      this.reflectService.getCtorParamTypes(dirType) ??\n      // Bailout\n      []\n    );\n  }\n\n  private callInitHooks(obj: unknown) {\n    this.callHook(obj, 'ngOnInit');\n    this.callHook(obj, 'ngDoCheck');\n    this.callHook(obj, 'ngAfterContentInit');\n    this.callHook(obj, 'ngAfterContentChecked');\n    this.callHook(obj, 'ngAfterViewInit');\n    this.callHook(obj, 'ngAfterViewChecked');\n  }\n\n  private callHook(obj: any, hook: string, args: unknown[] = []) {\n    if (obj[hook]) {\n      obj[hook](...args);\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ComponentOutletInjectorModule } from '../component-outlet';\nimport { DynamicDirectivesDirective } from './dynamic-directives.directive';\n\n/**\n * @public\n */\n@NgModule({\n  imports: [DynamicDirectivesDirective],\n  exports: [DynamicDirectivesDirective, ComponentOutletInjectorModule],\n})\nexport class DynamicDirectivesModule {}\n","import { Directive, DoCheck, Input } from '@angular/core';\n\nimport { InputsType, IoService, OutputsType } from '../io';\n\n/**\n * @public\n */\n@Directive({\n  selector: '[ndcDynamicInputs],[ndcDynamicOutputs]',\n  exportAs: 'ndcDynamicIo',\n  standalone: true,\n  providers: [IoService],\n})\nexport class DynamicIoDirective implements DoCheck {\n  @Input()\n  ndcDynamicInputs?: InputsType | null;\n  @Input()\n  ndcDynamicOutputs?: OutputsType | null;\n\n  constructor(private ioService: IoService) {}\n\n  ngDoCheck() {\n    this.ioService.update(this.ndcDynamicInputs, this.ndcDynamicOutputs);\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ComponentOutletInjectorModule } from '../component-outlet';\nimport { DynamicIoDirective } from './dynamic-io.directive';\n\n/**\n * @public\n */\n@NgModule({\n  imports: [DynamicIoDirective],\n  exports: [DynamicIoDirective, ComponentOutletInjectorModule],\n})\nexport class DynamicIoModule {}\n","import {\n  Component,\n  ComponentRef,\n  EnvironmentInjector,\n  EventEmitter,\n  Injector,\n  Input,\n  NgModuleRef,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  StaticProvider,\n  Type,\n  ViewContainerRef,\n} from '@angular/core';\nimport {\n  DynamicComponentInjector,\n  DynamicComponentInjectorToken,\n} from './component-injector';\n\n/**\n * @public\n */\n@Component({\n  selector: 'ndc-dynamic',\n  standalone: true,\n  template: '',\n  providers: [\n    { provide: DynamicComponentInjectorToken, useExisting: DynamicComponent },\n  ],\n})\nexport class DynamicComponent<C = unknown>\n  implements OnChanges, DynamicComponentInjector\n{\n  private static UpdateOnInputs: (keyof DynamicComponent)[] = [\n    'ndcDynamicComponent',\n    'ndcDynamicInjector',\n    'ndcDynamicProviders',\n    'ndcDynamicContent',\n    'ndcDynamicNgModuleRef',\n    'ndcDynamicEnvironmentInjector',\n  ];\n\n  @Input()\n  ndcDynamicComponent?: Type<C> | null;\n  @Input()\n  ndcDynamicInjector?: Injector | null;\n  @Input()\n  ndcDynamicProviders?: StaticProvider[] | null;\n  @Input()\n  ndcDynamicContent?: Node[][];\n  @Input()\n  ndcDynamicNgModuleRef?: NgModuleRef<unknown>;\n  @Input()\n  ndcDynamicEnvironmentInjector?: EnvironmentInjector | NgModuleRef<unknown>;\n\n  @Output()\n  ndcDynamicCreated = new EventEmitter<ComponentRef<C>>();\n\n  componentRef: ComponentRef<C> | null = null;\n\n  constructor(private vcr: ViewContainerRef) {}\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (\n      DynamicComponent.UpdateOnInputs.some((input) =>\n        changes.hasOwnProperty(input),\n      )\n    ) {\n      this.createDynamicComponent();\n    }\n  }\n\n  createDynamicComponent() {\n    this.vcr.clear();\n    this.componentRef = null;\n\n    if (this.ndcDynamicComponent) {\n      this.componentRef = this.vcr.createComponent(this.ndcDynamicComponent, {\n        index: 0,\n        injector: this._resolveInjector(),\n        projectableNodes: this.ndcDynamicContent,\n        ngModuleRef: this.ndcDynamicNgModuleRef,\n        environmentInjector: this.ndcDynamicEnvironmentInjector,\n      });\n      this.ndcDynamicCreated.emit(this.componentRef);\n    }\n  }\n\n  private _resolveInjector(): Injector {\n    let injector = this.ndcDynamicInjector || this.vcr.injector;\n\n    if (this.ndcDynamicProviders) {\n      injector = Injector.create({\n        providers: this.ndcDynamicProviders,\n        parent: injector,\n      });\n    }\n\n    return injector;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DynamicIoModule } from './dynamic-io';\nimport { DynamicComponent } from './dynamic.component';\n\n/**\n * @public\n */\n@NgModule({\n  imports: [DynamicIoModule, DynamicComponent],\n  exports: [DynamicIoModule, DynamicComponent],\n})\nexport class DynamicModule {}\n","/*\n * Public API Surface of ng-dynamic-component\n */\n\nexport * from './lib/component-injector';\nexport * from './lib/component-io';\nexport * from './lib/component-outlet';\nexport * from './lib/dynamic-attributes';\nexport * from './lib/dynamic-directives';\nexport * from './lib/dynamic-io';\nexport * from './lib/dynamic.component';\nexport * from './lib/dynamic.module';\nexport * from './lib/io';\nexport * from './lib/reflect';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ComponentIO","i1.IoService"],"mappings":"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"}