{"version":3,"file":"myndpm-dyn-forms.mjs","sources":["../../../../libs/forms/lib/components/factory/factory.directive.ts","../../../../libs/forms/lib/components/form/form.component.ts","../../../../libs/forms/lib/components/form/form.component.html","../../../../libs/forms/lib/components/group/group.component.ts","../../../../libs/forms/lib/components/group/group.component.html","../../../../libs/forms/lib/dyn-forms.module.ts","../../../../libs/forms/myndpm-dyn-forms.ts"],"sourcesContent":["import {\n  INJECTOR,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Inject,\n  Injector,\n  Input,\n  OnDestroy,\n  OnInit,\n  SkipSelf,\n  ViewContainerRef,\n  Directive,\n} from '@angular/core';\nimport {\n  DYN_MODE,\n  AbstractDynControl,\n  AbstractDynWrapper,\n  DynBaseConfig,\n  DynConfigWrapper,\n  DynControlNode,\n  DynFormFactory,\n  DynFormHandlers,\n  DynFormRegistry,\n  DynFormResolver,\n  DynMode,\n} from '@myndpm/dyn-forms/core';\nimport { DYN_LOG_LEVEL, DynLogger, DynLogDriver } from '@myndpm/dyn-forms/logger';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive({ selector: '[dynFactory]' })\nexport class DynFactoryDirective implements OnInit, OnDestroy {\n  @Input() config!: DynBaseConfig;\n  @Input() index?: number;\n  @Input() injector?: Injector;\n\n  // DynControl\n  private controlRef!: ComponentRef<AbstractDynControl>;\n\n  // DynNodes created by this factory\n  private nodes: DynControlNode[] = [];\n\n  // retrieved from the proper injector\n  private _injector!: Injector;\n  private _mode$!: BehaviorSubject<DynMode>;\n  private _configs!: DynFormResolver;\n\n  private _unsubscribe = new Subject<void>();\n\n  constructor(\n    @Inject(INJECTOR) private readonly parent: Injector,\n    private readonly resolver: ComponentFactoryResolver,\n    private readonly registry: DynFormRegistry,\n    private readonly logger: DynLogger,\n    private readonly node: DynControlNode,\n    private readonly container: ViewContainerRef,\n  ) {}\n\n  ngOnInit(): void {\n    // resolve the injector to use and get providers\n    this._injector = this.injector ?? this.parent;\n    this._mode$ = this._injector.get(DYN_MODE);\n    this._configs = this._injector.get(DynFormResolver);\n\n    // process the dynamic component with each mode change\n    let config: DynBaseConfig;\n    this._mode$\n      .pipe(takeUntil(this._unsubscribe))\n      .subscribe((mode) => {\n        const newConfig = this._configs.getModeConfig(mode, this.config, this.node);\n\n        // do not re-create the control if the config is the same\n        if (!this._configs.areEqual(config, newConfig)) {\n          // check if the params are the only changed ones\n          if (this._configs.areEquivalent(config, newConfig)) {\n            if (newConfig.params || newConfig.paramFns) {\n              this.nodes.map(\n                (node) => node.setupParams(newConfig.params, newConfig.paramFns, false),\n              );\n            }\n          } else {\n            this.logger.controlInitializing(this.node, { control: newConfig.control, wrappers: newConfig.wrappers, name: newConfig.name });\n\n            this.container.clear();\n            this.createControl(newConfig);\n          }\n          config = newConfig;\n        }\n      });\n  }\n\n  ngOnDestroy(): void {\n    this._unsubscribe.next();\n    this._unsubscribe.complete();\n  }\n\n  private createControl(config: DynBaseConfig): void {\n    try {\n      const control = this.registry.getControl(config.control);\n\n      const providers = [\n        // new form-hierarchy sublevel\n        // each Dynamic Component has its own DynControlNode service\n        {\n          provide: DynControlNode,\n          useClass: DynControlNode,\n          deps: [ // FIXME added for Stackblitz\n            DynFormFactory,\n            DynFormHandlers,\n            DynLogger,\n            DYN_MODE,\n            [new SkipSelf(), DynControlNode],\n          ],\n        },\n      ];\n      const newInjectionLayer = Injector.create({\n        providers: [\n          ...providers,\n          config?.debug ? [\n            {\n              provide: DYN_LOG_LEVEL,\n              useValue: config.debug,\n            },\n            DynLogDriver,\n            DynLogger,\n          ] : [],\n        ],\n        parent: this._injector,\n      });\n\n      const render = (\n        view: ViewContainerRef,\n        injector: Injector,\n        wrappers: DynConfigWrapper[] = [],\n      ) => {\n        let ref: ComponentRef<any>;\n\n        if (wrappers?.length) {\n          // render wrappers\n          const [wconfig, ...subwrappers] = wrappers;\n          const wrapperId = typeof wconfig === 'string' ? wconfig : wconfig.wrapper;\n          const wrapper = this.registry.getWrapper(wrapperId);\n\n          const factory = this.resolver.resolveComponentFactory(wrapper.component);\n          ref = view.createComponent<AbstractDynWrapper>(factory, undefined, injector);\n\n          this.addNode(ref.instance.node)\n          ref.onDestroy(() => this.removeNode(ref.instance.node));\n\n          ref.instance.config = config;\n          ref.instance.wrapper = typeof wconfig === 'string' ? { wrapper: wconfig } : wconfig;\n\n          this.logger.componentCreated(ref.instance.node, { wrapper: wrapperId });\n\n          render(\n            ref.instance.container,\n            Injector.create({ providers, parent: injector }),\n            subwrappers,\n          );\n        } else {\n          // render the control\n          if (!this.controlRef || this.controlRef.hostView.destroyed) {\n            const factory = this.resolver.resolveComponentFactory(control.component);\n            ref = this.controlRef = view.createComponent<AbstractDynControl>(factory, undefined, injector);\n\n            this.addNode(ref.instance.node)\n            ref.onDestroy(() => this.removeNode(ref.instance.node));\n\n            ref.instance.config = config;\n            ref.instance.node.setIndex(this.index);\n            if (config.wrappers?.length) {\n              ref.instance.node.parent.childrenIncrement(false);\n            }\n            // we let the corresponding DynControlNode to initialize the control\n            // and register itself in the Form Tree in the lifecycle methods\n\n            ref.changeDetectorRef.markForCheck();\n\n            this.logger.componentCreated(ref.instance.node, {\n              control: config.control,\n              name: config.name,\n              controls: config.controls?.length || 0,\n            });\n          } else {\n            view.insert(this.controlRef.hostView);\n          }\n        }\n      }\n\n      render(this.container, newInjectionLayer, config.wrappers);\n\n    } catch(e) {\n      // log any error happening in the control instantiation\n      console.error(e);\n    }\n  }\n\n  addNode(node: DynControlNode): void {\n    this.nodes.push(node);\n  }\n\n  removeNode(node: DynControlNode): void {\n    this.nodes.some((child, i) => {\n      return (child === node) ? this.nodes.splice(i, 1) : false;\n    });\n  }\n}\n","import {\n  INJECTOR,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Inject,\n  Injector,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  SimpleChanges,\n  SkipSelf,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport {\n  DYN_MODE,\n  DYN_MODE_DEFAULTS,\n  DYN_MODE_LOCAL,\n  DynControlNode,\n  DynFormResolver,\n  DynHookUpdateValidity,\n  DynInstanceType,\n  DynMode,\n  DynModes,\n  callHooks,\n  onComplete,\n  recursive,\n} from '@myndpm/dyn-forms/core';\nimport { DynLogDriver, DynLogger } from '@myndpm/dyn-forms/logger';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { debounceTime, delay, filter, switchMap, tap } from 'rxjs/operators';\nimport { DynFormConfig } from './form.config';\n\n@Component({\n  selector: 'dyn-form',\n  templateUrl: './form.component.html',\n  styleUrls: ['./form.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    DynControlNode,\n    DynLogDriver,\n    DynLogger,\n  ],\n})\nexport class DynFormComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n  @Input() isolated = false;\n  @Input() form!: UntypedFormGroup;\n  @Input() config?: DynFormConfig;\n  @Input() mode?: DynMode;\n\n  @Input()\n  modeConfigs = (parent?: DynModes, local?: DynModes): DynModes => {\n    return parent && local ? recursive(true, parent, local) : local ?? parent;\n  }\n\n  @Output() formPatched = new EventEmitter<void>();\n  @Output() formReady = new EventEmitter<void>();\n\n  // internal injector with config values\n  configLayer?: Injector;\n\n  // stream mode changes via DYN_MODE\n  protected mode$ = new BehaviorSubject<DynMode>('');\n\n  // registered hook listeners\n  protected listeners = new Map<string, Function[]>();\n\n  // easier access <dyn-form #dyn> to dyn.control.*\n  get control() {\n    return this.node.control;\n  }\n\n  get controls() {\n    return this.config?.controls.filter(Boolean);\n  }\n\n  // works in AfterViewInit\n  valueChanges = (time: number = 50): Observable<any> => {\n    // this omit the consecutive changes while patching a Form Array\n    // the more complex the form is, the more debounce would be needed\n    return this.form.valueChanges.pipe(debounceTime(time));\n  }\n\n  constructor(\n    @Inject(INJECTOR) private readonly injector: Injector,\n    private readonly ref: ChangeDetectorRef,\n    private readonly node: DynControlNode,\n    private readonly logger: DynLogger,\n  ) {}\n\n  ngOnInit() {\n    if (this.config?.debug) {\n      this.logger.setLevel(this.config.debug);\n    }\n\n    // figure out the control to use\n    if (!this.isolated && !this.form && this.node.parent) {\n      // use the parent DynControlNode control\n      this.form = this.node.parent.control;\n    } else {\n      // incoming form is mandatory\n      if (!(this.form instanceof UntypedFormGroup)) {\n        throw this.logger.rootForm();\n      }\n    }\n\n    // manually register the node\n    this.node.init({\n      isolated: Boolean(this.isolated),\n      instance: DynInstanceType.Group,\n      control: 'DYN-FORM',\n      formControl: this.form,\n      controls: this.controls,\n      errorMsgs: this.config?.errorMsgs,\n      component: this,\n    });\n    this.node.markParamsAsLoaded();\n\n    this.node.whenReady().subscribe(() => this.formReady.emit());\n\n    this.logger.nodeLoaded('dyn-form', this.node);\n\n    this.configLayer = Injector.create({\n      parent: this.injector,\n      providers: [\n        {\n          provide: DYN_MODE,\n          useValue: this.mode$,\n        },\n        {\n          provide: DYN_MODE_LOCAL,\n          useValue: this.config?.modes,\n        },\n        {\n          provide: DYN_MODE_DEFAULTS,\n          useFactory: this.modeConfigs,\n          deps: [\n            [new SkipSelf(), new Optional(), DYN_MODE_DEFAULTS],\n            DYN_MODE_LOCAL,\n          ],\n        },\n        {\n          provide: DynFormResolver,\n          useClass: DynFormResolver,\n          deps: [ // FIXME added for Stackblitz\n            DynLogger,\n            DYN_MODE_DEFAULTS,\n          ],\n        },\n      ],\n    });\n\n    // prevent ExpressionChangedAfterItHasBeenCheckedError\n    this.ref.detectChanges();\n  }\n\n  ngAfterViewInit(): void {\n    this.node.markAsLoaded();\n\n    this.node.loaded$\n      .pipe(filter(Boolean))\n      .subscribe(() => {\n        this.logger.formCycle('loaded');\n        // trigger processes once the form hierarchy is built\n        this.node.setup();\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.mode && typeof this.mode === 'string') {\n      this.logger.modeForm(this.node, this.mode);\n      this.mode$.next(this.mode);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.mode$.complete();\n  }\n\n  /**\n   * API\n   */\n\n  whenReady(): Observable<boolean> {\n    return this.node.whenReady();\n  }\n\n  track(mode?: DynMode): Observable<void> {\n    return this.callHook('Track', mode, false, true);\n  }\n\n  untrack(mode?: DynMode): Observable<void> {\n    return this.callHook('Untrack', mode, true);\n  }\n\n  // notify the dyn hierarchy about the incoming data\n  patchValue(value: any, callback?: (node: DynControlNode) => void): Observable<void> {\n    return onComplete(\n      this.whenReady().pipe(\n        tap(() => {\n          this.logger.formCycle('PrePatch');\n          this.callHook('PrePatch', value, false);\n        }),\n        delay(20), // waits any PrePatch processing\n        tap(() => {\n          this.form.patchValue(value);\n          this.logger.formCycle('PostPatch', this.form.value);\n          this.callHook('PostPatch', value, false);\n        }),\n        switchMap(() => this.whenReady()),\n        tap(() => {\n          this.formPatched.emit();\n        }),\n      ),\n      () => callback?.(this.node),\n    );\n  }\n\n  // update the validators programatically\n  validate(opts?: DynHookUpdateValidity): Observable<void> {\n    return this.callHook('UpdateValidity', opts);\n  }\n\n  // trigger change detection programatically\n  detectChanges(): Observable<void> {\n    return this.callHook('DetectChanges');\n  }\n\n  // call a hook in the dyn hierarchy using plain/hierarchical data\n  callHook(hook: string, payload?: any, plain = true, force = false): Observable<void> {\n    return onComplete(\n      this.whenReady(),\n      () => {\n        callHooks(this.node.children, { hook, payload, plain }, force);\n        // invoke listeners after the field hooks\n        if (this.listeners.has(hook)) {\n          this.listeners.get(hook)?.map(listener => listener(payload));\n        }\n      },\n    );\n  }\n\n  // register hook listener\n  addHookListener(hook: string, listener: Function): void {\n    if (!this.listeners.has(hook)) {\n      this.listeners.set(hook, []);\n    }\n    this.listeners.get(hook)!.push(listener);\n  }\n}\n","\n<ng-content></ng-content>\n\n<ng-container\n  dynFactory\n  *ngFor=\"let control of controls; index as i\"\n  [config]=\"control\"\n  [injector]=\"configLayer\"\n  [index]=\"i\"\n></ng-container>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  Injector,\n  Input,\n  OnInit,\n  Optional,\n  SkipSelf,\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport {\n  DYN_MODE,\n  DYN_MODE_CHILD,\n  DYN_MODE_DEFAULTS,\n  DYN_MODE_LOCAL,\n  DynBaseConfig,\n  DynControlBase,\n  DynControlNode,\n  DynFormResolver,\n  DynInstanceType,\n  DynMode,\n  DynModes,\n  recursive,\n} from '@myndpm/dyn-forms/core';\nimport { DynLogger } from '@myndpm/dyn-forms/logger';\nimport { BehaviorSubject, Observable, merge } from 'rxjs';\nimport { distinctUntilChanged, filter, map, shareReplay, tap } from 'rxjs/operators';\n\n@Component({\n  selector: 'dyn-group',\n  templateUrl: './group.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [DynControlNode],\n})\n/**\n * This component just wraps the incoming controls in a FormGroup.\n */\nexport class DynGroupComponent extends DynControlBase<any, UntypedFormGroup> implements OnInit, AfterViewInit {\n  @Input() isolated = false;\n  @Input() name?: string;\n  @Input() customGroup?: UntypedFormGroup;\n  @Input() controls?: DynBaseConfig[];\n  @Input() modes?: DynModes;\n\n  @Input()\n  set mode(mode: DynMode) {\n    this.modeLocal$.next(mode);\n  }\n\n  get mode(): DynMode {\n    return this.mode$.value;\n  }\n\n  @Input()\n  modeConfigs = (parent?: DynModes, local?: DynModes): DynModes => {\n    return parent && local ? recursive(true, parent, local) : local ?? parent;\n  }\n\n  @Input()\n  modeFactory = (mode: DynMode, name?: string): DynMode => {\n    return mode;\n  }\n\n  // keeps track of the local input\n  protected modeLocal$ = new BehaviorSubject<DynMode|null>(null);\n\n  // stream mode changes via DYN_MODE\n  protected mode$ = new BehaviorSubject<DynMode>('');\n\n  // internal injector with mode override\n  configLayer?: Injector;\n\n  constructor(\n    private readonly injector: Injector,\n    private readonly logger: DynLogger,\n  ) {\n    super(injector);\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n\n    this.node.mode = this.mode$;\n\n    this.configLayer = Injector.create({\n      parent: this.injector,\n      providers: [\n        {\n          provide: DYN_MODE_CHILD,\n          useValue: this.modeLocal$.pipe(filter(mode => mode !== null)),\n        },\n        {\n          provide: DYN_MODE,\n          useFactory: this.modeCalculator,\n          deps: [\n            [new SkipSelf(), DYN_MODE],\n            DYN_MODE_CHILD,\n          ],\n        },\n        {\n          provide: DYN_MODE_LOCAL,\n          useValue: this.modes,\n        },\n        {\n          provide: DYN_MODE_DEFAULTS,\n          useFactory: this.modeConfigs,\n          deps: [\n            [new SkipSelf(), new Optional(), DYN_MODE_DEFAULTS],\n            DYN_MODE_LOCAL,\n          ],\n        },\n        {\n          provide: DynFormResolver,\n          useClass: DynFormResolver,\n          deps: [ // FIXME added for Stackblitz\n            DynLogger,\n            DYN_MODE_DEFAULTS,\n          ],\n        },\n      ],\n    });\n\n    this.node.init({\n      isolated: Boolean(this.isolated),\n      instance: DynInstanceType.Group,\n      name: this.name,\n      control: 'DYN-GROUP',\n      formControl: this.customGroup,\n      controls: this.controls,\n      component: this,\n    });\n    this.node.markParamsAsLoaded();\n\n    // log the successful initialization\n    this.logger.nodeLoaded('dyn-group', this.node);\n  }\n\n  ngAfterViewInit() {\n    this.node.markAsLoaded();\n  }\n\n  modeCalculator = (\n    parent$: Observable<DynMode>,\n    child$: Observable<DynMode>,\n  ): Observable<DynMode> => {\n    return merge(parent$, child$).pipe(\n      map(mode => this.modeFactory(mode, this.name)),\n      distinctUntilChanged(),\n      tap(mode => {\n        this.logger.modeGroup(this.node, mode, this.name);\n        this.mode$.next(mode);\n      }),\n      shareReplay(1),\n    );\n  }\n}\n","<ng-container\n  *ngFor=\"let control of controls; index as i\"\n  dynFactory\n  [config]=\"control\"\n  [injector]=\"configLayer\"\n  [index]=\"i\"\n></ng-container>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport {\n  DYN_CONTROLS_TOKEN,\n  DynHiddenControlComponent,\n  DynHiddenGroupComponent,\n  DynModuleProviders,\n  getModuleProviders,\n} from '@myndpm/dyn-forms/core';\nimport { DynFactoryDirective, DynFormComponent, DynGroupComponent } from './components';\n\n@NgModule({\n  imports: [CommonModule, ReactiveFormsModule],\n  declarations: [DynFactoryDirective, DynFormComponent, DynGroupComponent],\n  exports: [DynFactoryDirective, DynFormComponent, DynGroupComponent],\n  providers: [\n    {\n      provide: DYN_CONTROLS_TOKEN,\n      useValue: {\n        control: DynHiddenControlComponent.dynControl,\n        instance: DynHiddenControlComponent.dynInstance,\n        component: DynHiddenControlComponent,\n      },\n      multi: true,\n    },\n    {\n      provide: DYN_CONTROLS_TOKEN,\n      useValue: {\n        control: DynHiddenGroupComponent.dynControl,\n        instance: DynHiddenGroupComponent.dynInstance,\n        component: DynHiddenGroupComponent,\n      },\n      multi: true,\n    },\n  ],\n})\nexport class DynFormsModule {\n  static forFeature(args?: DynModuleProviders): ModuleWithProviders<DynFormsModule> {\n    return {\n      ngModule: DynFormsModule,\n      providers: getModuleProviders(args),\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4.DynFactoryDirective","i1","i2","i3.DynFactoryDirective"],"mappings":"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"}