{"version":3,"file":"ng-nest-ui-outlet.mjs","sources":["../../../../lib/ng-nest/ui/outlet/outlet.directive.ts","../../../../lib/ng-nest/ui/outlet/outlet.module.ts","../../../../lib/ng-nest/ui/outlet/outlet.property.ts","../../../../lib/ng-nest/ui/outlet/ng-nest-ui-outlet.ts"],"sourcesContent":["import {\r\n  Directive,\r\n  TemplateRef,\r\n  ViewContainerRef,\r\n  SimpleChanges,\r\n  EmbeddedViewRef,\r\n  OnChanges,\r\n  SimpleChange,\r\n  inject,\r\n  input\r\n} from '@angular/core';\r\n\r\n@Directive({ selector: '[xOutlet]' })\r\nexport class XOutletDirective implements OnChanges {\r\n  xOutletContext = input<any>();\r\n  xOutlet = input<TemplateRef<any> | any>();\r\n  private embeddedViewRef!: EmbeddedViewRef<any>;\r\n  private viewContainer = inject(ViewContainerRef);\r\n  private templateRef = inject(TemplateRef<any>);\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const shouldRecreateView = (ctxChanges: SimpleChanges): boolean => {\r\n      const { xOutletContext, xOutlet } = ctxChanges;\r\n      let shouldOutletRecreate = false;\r\n      if (xOutlet) {\r\n        if (xOutlet.firstChange) {\r\n          shouldOutletRecreate = true;\r\n        } else {\r\n          const isPreviousOutlet = xOutlet.previousValue instanceof TemplateRef;\r\n          const isCurrentOutlet = xOutlet.currentValue instanceof TemplateRef;\r\n          shouldOutletRecreate = isPreviousOutlet || isCurrentOutlet;\r\n        }\r\n      }\r\n      const hasContextShapeChanged = (ctxChange: SimpleChange): boolean => {\r\n        const prevCtxKeys = Object.keys(ctxChange.previousValue || {});\r\n        const currCtxKeys = Object.keys(ctxChange.currentValue || {});\r\n        if (prevCtxKeys.length === currCtxKeys.length) {\r\n          for (const propName of currCtxKeys) {\r\n            if (prevCtxKeys.indexOf(propName) === -1) {\r\n              return true;\r\n            }\r\n          }\r\n          return false;\r\n        } else {\r\n          return true;\r\n        }\r\n      };\r\n      const shouldContextRecreate = xOutletContext && hasContextShapeChanged(xOutletContext);\r\n      return shouldContextRecreate || shouldOutletRecreate;\r\n    };\r\n    const recreateView = shouldRecreateView(changes);\r\n    if (recreateView) {\r\n      this.recreateView();\r\n    } else {\r\n      this.updateContext();\r\n    }\r\n  }\r\n\r\n  private recreateView(): void {\r\n    this.viewContainer.clear();\r\n    const isTemplateRef = this.xOutlet() instanceof TemplateRef;\r\n    const templateRef = isTemplateRef ? this.xOutlet() : this.templateRef;\r\n    this.embeddedViewRef = this.viewContainer.createEmbeddedView(templateRef, this.xOutletContext());\r\n  }\r\n\r\n  private updateContext(): void {\r\n    const newCtx = this.xOutletContext();\r\n    const oldCtx = this.embeddedViewRef!.context;\r\n    if (newCtx) {\r\n      for (const propName of Object.keys(newCtx)) {\r\n        oldCtx[propName] = newCtx[propName];\r\n      }\r\n    }\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XOutletDirective } from './outlet.directive';\r\n\r\n@NgModule({\r\n  exports: [XOutletDirective],\r\n  imports: [XOutletDirective]\r\n})\r\nexport class XOutletModule {}\r\n","/**\r\n * Outlet 指令名称\r\n * @selector x-outlet\r\n * @decorator directive\r\n */\r\nexport const XOutletPrefix = 'x-outlet';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}