{"version":3,"file":"gewd-lazy-loader.mjs","sources":["../../../../libs/lazy/loader/lazy.component.ts","../../../../libs/lazy/loader/lazy-module.component.ts","../../../../libs/lazy/loader/gewd-lazy-loader.module.ts","../../../../libs/lazy/loader/gewd-lazy-loader.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentFactoryResolver,\n  EventEmitter,\n  Injector,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { DynamicLoaderRegistry } from '@gewd/lazy/registry';\nimport { InputMap, OutputMap } from '@gewd/lazy/contracts';\n\n@Component({\n  selector: 'gewd-lazy-component',\n  template: `\n    <ng-container #targetContainer>\n    </ng-container>\n\n    <ng-content *ngIf=\"!component\"></ng-content>\n    <ng-content *ngIf=\"componentLoading | async\"\n                select=\"[isLoading]\"></ng-content>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LazyComponent implements OnInit, OnChanges, OnDestroy {\n  @Input()\n  public component: string;\n\n  @Input()\n  public componentInputs: InputMap;\n\n  @Input()\n  public componentOutputs: OutputMap;\n\n  @ViewChild('targetContainer', {read: ViewContainerRef, static: true})\n  public targetContainer: ViewContainerRef;\n\n  @Output()\n  public componentCreated = new EventEmitter();\n  @Output()\n  public componentLoading = new EventEmitter();\n\n  private componentInstance = null;\n\n  private unsubForOutputs$ = new Subject<void>();\n\n  constructor (private resolver: ComponentFactoryResolver,\n               private injector: Injector,\n               private cd: ChangeDetectorRef) {\n  }\n\n  async setComponent () {\n    if (!this.component) {\n      return;\n    }\n\n    this.componentLoading.emit(true);\n    this.cd.detectChanges();\n\n    // cached promise\n    const importComponent = DynamicLoaderRegistry.LazyComponents[this.component].getValue();\n\n    const imported = await importComponent;\n\n    const keys = Object.keys(imported);\n\n    // get the first object of the imported js-module\n    const theComp = imported[keys[0]];\n\n    const componentFactory = this.resolver.resolveComponentFactory(theComp);\n\n    // only have one dynamic component render\n    this.targetContainer.clear();\n\n    const componentRef = this.targetContainer.createComponent(componentFactory, 0, this.injector);\n    componentRef.changeDetectorRef.markForCheck();\n\n    this.componentLoading.emit(false);\n    this.componentCreated.emit(componentRef.instance);\n    this.componentInstance = componentRef.instance;\n    this.setInputs();\n    this.setOutputs();\n  }\n\n  ngOnChanges (changes: SimpleChanges): void {\n    if (changes['component']) {\n      this.setComponent();\n    }\n    if (changes['componentInputs']) {\n      this.setInputs();\n    }\n    if (changes['componentOutputs']) {\n      this.setOutputs();\n    }\n  }\n\n  ngOnDestroy () {\n    this.unsubOutputs();\n  }\n\n  private setInputs () {\n    // console.info('setInputs', this.componentInstance, this.componentInputs);\n    if (this.componentInstance && this.componentInputs) {\n      const inputs = Object.keys(this.componentInputs);\n\n      for (const inputKey of inputs) {\n        // console.info('set ', inputKey)\n        this.componentInstance[inputKey] = this.componentInputs[inputKey];\n      }\n    }\n  }\n\n  private unsubOutputs () {\n    this.unsubForOutputs$.next();\n  }\n\n  private setOutputs () {\n    this.unsubOutputs();\n\n    if (this.componentInstance && this.componentOutputs) {\n      const outputs = Object.keys(this.componentOutputs);\n\n      for (const outputKey of outputs) {\n        // console.info('subscribe to', outputKey);\n        if (this.componentInstance[outputKey]) {\n          const emitter = this.componentInstance[outputKey] as EventEmitter<any>;\n          emitter.pipe(\n            takeUntil(this.unsubForOutputs$),\n          ).subscribe(this.componentOutputs[outputKey]);\n        }\n      }\n    }\n  }\n\n  ngOnInit (): void {\n    this.setComponent();\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Compiler,\n  Component,\n  EventEmitter,\n  Injector,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { DynamicLoaderRegistry } from '@gewd/lazy/registry';\nimport { InputMap, OutputMap } from '@gewd/lazy/contracts';\n\n@Component({\n  selector: 'gewd-lazy-module-component',\n  template: `\n    <ng-container #targetContainer></ng-container>\n    <ng-content *ngIf=\"!component || !moduleAlias\"></ng-content>\n    <ng-content *ngIf=\"componentLoading | async\"\n                select=\"[isLoading]\"></ng-content>\n    <span *ngIf=\"showError && error\" class=\"error\">{{error}}</span>\n  `,\n  styles: [`\n    .error {\n      color: red;\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LazyModuleComponent implements OnChanges, OnDestroy {\n\n  @Input()\n  public moduleAlias: string;\n\n  @Input()\n  public component: string;\n\n  @Input()\n  public componentInputs: InputMap;\n\n  @Input()\n  public componentOutputs: OutputMap;\n\n  @ViewChild('targetContainer', {read: ViewContainerRef, static: true})\n  public targetContainer: ViewContainerRef;\n\n  @Output()\n  public componentCreated = new EventEmitter();\n\n  @Output()\n  public componentLoading = new EventEmitter();\n\n  @Input()\n  public showError = true;\n\n  public error: string;\n  private componentInstance = null;\n\n  private unsubForOutputs$ = new Subject<void>();\n  private alreadySettingComponent = false;\n\n  constructor (private angularCompiler: Compiler,\n               private injector: Injector,\n               private cd: ChangeDetectorRef) {\n\n\n  }\n\n  async setComponent () {\n    if (!this.moduleAlias || !this.component || this.alreadySettingComponent) {\n      return;\n    }\n\n    this.error = '';\n\n    this.alreadySettingComponent = true;\n\n    const moduleInDictionary = DynamicLoaderRegistry.LazyModuleComponents[this.moduleAlias];\n\n    if (!moduleInDictionary) {\n      this.error = `Module ${this.moduleAlias} not registered`;\n      this.cd.markForCheck();\n      return;\n    }\n\n\n    this.componentLoading.emit(true);\n\n    if (!moduleInDictionary.loadedModule) {\n      // load and cache\n      moduleInDictionary.loadedModule = moduleInDictionary.load\n        .getValue()\n        .then(importedModule => {\n          return this.angularCompiler.compileModuleAndAllComponentsAsync(importedModule);\n        })\n        .then(factory => {\n          return {\n            ngModule: factory.ngModuleFactory.create(this.injector),\n            componentFactories: factory.componentFactories\n          };\n        });\n    }\n\n    const moduleFactory = await moduleInDictionary.loadedModule;\n\n    if (!moduleFactory.ngModule.instance.getComponents) {\n      this.error = `Module ${this.moduleAlias} does not have a getComponents-Method`;\n      this.cd.markForCheck();\n      return;\n    }\n\n    const components = moduleFactory.ngModule.instance.getComponents();\n\n    const componentInfo = components.find(cf => cf.name === this.component);\n\n    if (!componentInfo) {\n      this.error = `Component '${this.component}' does not exist in the 'getComponents'-Method`;\n      this.cd.markForCheck();\n      return;\n    }\n\n    const componentType = componentInfo.componentType;\n\n    const componentFactory = moduleFactory.ngModule.componentFactoryResolver.resolveComponentFactory(componentType);\n\n    // only have one dynamic component render\n    this.targetContainer.clear();\n\n    const componentRef = this.targetContainer.createComponent(componentFactory, 0, this.injector);\n    componentRef.changeDetectorRef.markForCheck();\n\n    this.componentLoading.emit(false);\n    this.componentCreated.emit(componentRef.instance);\n    this.componentInstance = componentRef.instance;\n    this.setInputs();\n    this.setOutputs();\n\n    this.alreadySettingComponent = false;\n    this.cd.detectChanges();\n  }\n\n  ngOnChanges (changes: SimpleChanges): void {\n    if (this.changedAndDifferent(changes, 'component')) {\n      // console.info('setting component because of component');\n      this.setComponent();\n    }\n    if (this.changedAndDifferent(changes, 'moduleAlias')) {\n      // console.info('setting component because of moduleAlias');\n      this.setComponent();\n    }\n    if (changes['componentInputs']) {\n      this.setInputs();\n    }\n    if (changes['componentOutputs']) {\n      this.setOutputs();\n    }\n  }\n\n  ngOnDestroy () {\n    this.unsubOutputs();\n  }\n\n  private changedAndDifferent(changes: SimpleChanges, name: string) {\n    const change = changes[name];\n\n    if (change && change.currentValue !== change.previousValue) {\n      return true;\n    }\n\n    return false;\n  }\n\n  private setInputs () {\n    if (this.componentInstance && this.componentInputs) {\n      const inputs = Object.keys(this.componentInputs);\n\n      for (const inputKey of inputs) {\n        this.componentInstance[inputKey] = this.componentInputs[inputKey];\n      }\n    }\n  }\n\n  private unsubOutputs () {\n    this.unsubForOutputs$.next();\n  }\n\n  private setOutputs () {\n    this.unsubOutputs();\n\n    if (this.componentInstance && this.componentOutputs) {\n      const outputs = Object.keys(this.componentOutputs);\n\n      for (const outputKey of outputs) {\n        if (this.componentInstance[outputKey]) {\n          const emitter = this.componentInstance[outputKey] as EventEmitter<any>;\n          emitter.pipe(\n            takeUntil(this.unsubForOutputs$),\n          ).subscribe(this.componentOutputs[outputKey]);\n        }\n      }\n    }\n  }\n}\n","import {Inject, InjectionToken, ModuleWithProviders, NgModule} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LazyComponent } from './lazy.component';\nimport { LazyModuleComponent } from './lazy-module.component';\nimport {DynamicLoaderRegistry, LazyModuleComponentConfig} from \"@gewd/lazy/registry\";\n\nexport interface RegisterLazyLoaderModuleEntry {\n  moduleName: string,\n  moduleConfig: LazyModuleComponentConfig\n}\n\nexport const REGISTORY_LAZY_LOADED_MODULE_TOKEN = new InjectionToken<RegisterLazyLoaderModuleEntry>(\n  '@gewd/lazy-loader/LazyModuleComponentConfig'\n);\n\n\n@NgModule({\n  declarations: [\n    LazyComponent,\n    LazyModuleComponent\n  ],\n  exports: [\n    LazyComponent,\n    LazyModuleComponent\n  ],\n  imports: [\n    CommonModule\n  ]\n\n})\nexport class GewdLazyLoaderModule {\n  static withLazy (entries: RegisterLazyLoaderModuleEntry[]): ModuleWithProviders<GewdLazyLoaderModule> {\n    const providers = entries.map(useValue => {\n      return {\n        provide: REGISTORY_LAZY_LOADED_MODULE_TOKEN,\n        useValue,\n        multi: true\n      }\n    });\n\n    return {\n      ngModule: GewdLazyLoaderModule,\n      providers\n    };\n  }\n\n  constructor (@Inject(REGISTORY_LAZY_LOADED_MODULE_TOKEN)\n               registerLazyLoads: RegisterLazyLoaderModuleEntry[]) {\n    for (const lazyInfo of registerLazyLoads) {\n      DynamicLoaderRegistry.RegisterLazyModuleComponent(lazyInfo.moduleName, lazyInfo.moduleConfig);\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}