{"version":3,"file":"ngneat-overview.mjs","sources":["../../../../projects/ngneat/overview/src/lib/teleport/teleport.service.ts","../../../../projects/ngneat/overview/src/lib/teleport/teleport.directive.ts","../../../../projects/ngneat/overview/src/lib/teleport/teleport-outlet.directive.ts","../../../../projects/ngneat/overview/src/lib/views/comp-ref.ts","../../../../projects/ngneat/overview/src/lib/views/types.ts","../../../../projects/ngneat/overview/src/lib/views/template-ref.ts","../../../../projects/ngneat/overview/src/lib/views/string-ref.ts","../../../../projects/ngneat/overview/src/lib/views/view.ts","../../../../projects/ngneat/overview/src/lib/dynamic-view/dynamic-view.component.ts","../../../../projects/ngneat/overview/src/lib/dynamic-view/dynamic-view.directive.ts","../../../../projects/ngneat/overview/src/ngneat-overview.ts"],"sourcesContent":["import { Injectable, ViewContainerRef } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TeleportService {\n  private outlets = new BehaviorSubject<string>('');\n\n  outlet$(name: string) {\n    return this.outlets.pipe(\n      filter((current) => current === name),\n      map((name) => this.ports.get(name))\n    );\n  }\n\n  ports = new Map<string, ViewContainerRef>();\n\n  newOutlet(name: string) {\n    this.outlets.next(name);\n  }\n}\n","import {\n  Directive,\n  EmbeddedViewRef,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges,\n  TemplateRef,\n  inject,\n  input,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { TeleportService } from './teleport.service';\n\n@Directive({\n  selector: '[teleportTo]',\n  standalone: true,\n})\nexport class TeleportDirective implements OnChanges, OnDestroy {\n  readonly teleportTo = input<string | null | undefined>();\n\n  private viewRef: EmbeddedViewRef<any>;\n  private subscription: Subscription | null = null;\n\n  private tpl = inject(TemplateRef);\n  private service = inject(TeleportService);\n\n  ngOnChanges(changes: SimpleChanges): void {\n    // Note: Do not use `effect` to observe changes to `teleportTo`, as\n    // this would result in running `createEmbeddedView` within that effect.\n    // `createEmbeddedView` may create a component whose constructor might\n    // trigger another effect or write to some signals, given that we are\n    // operating within a reactive context.\n    if (changes.teleportTo && typeof this.teleportTo() === 'string') {\n      this.dispose();\n\n      this.subscription = this.service.outlet$(this.teleportTo()).subscribe((outlet) => {\n        if (outlet) {\n          this.viewRef = outlet.createEmbeddedView(this.tpl);\n        }\n      });\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.dispose();\n  }\n\n  private dispose(): void {\n    this.subscription?.unsubscribe();\n    this.subscription = null;\n    this.viewRef?.destroy();\n  }\n}\n","import { Directive, OnDestroy, ViewContainerRef, effect, inject, input } from '@angular/core';\nimport { TeleportService } from './teleport.service';\n\n@Directive({\n  selector: '[teleportOutlet]',\n  standalone: true,\n})\nexport class TeleportOutletDirective implements OnDestroy {\n  // We could've also used the `ngAcceptInputType`, but it's being deprecated in newer Angular versions.\n  readonly teleportOutlet = input<string | null | undefined>();\n  private vcr = inject(ViewContainerRef);\n  private service = inject(TeleportService);\n\n  constructor() {\n    effect(() => {\n      const teleportOutlet = this.teleportOutlet();\n      if (typeof teleportOutlet === 'string') {\n        this.service.ports.set(teleportOutlet, this.vcr);\n        this.service.newOutlet(teleportOutlet);\n      }\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.service.ports.delete(this.teleportOutlet());\n  }\n}\n","import {\n  ApplicationRef,\n  ComponentRef,\n  createComponent,\n  EnvironmentInjector,\n  Injector,\n  Type,\n  ViewContainerRef,\n  WritableSignal,\n} from '@angular/core';\nimport { ExcludeFunctions, ExtractInputTypes, InferInputSignalType, ViewRef } from './types';\n\ninterface Options<Comp, Context> {\n  component: Type<Comp>;\n  injector: Injector;\n  environmentInjector: EnvironmentInjector;\n  vcr: ViewContainerRef | undefined;\n  appRef: ApplicationRef | undefined;\n  contextSignal?: WritableSignal<Context>;\n}\n\nexport class CompRef<Comp, Context = any> implements ViewRef {\n  ref: ComponentRef<Comp>;\n\n  constructor(private options: Options<Comp, Context>) {\n    if (options.vcr) {\n      this.ref = options.vcr.createComponent(options.component, {\n        index: options.vcr.length,\n        injector: options.injector || options.vcr.injector,\n      });\n    } else {\n      this.ref = createComponent<Comp>(options.component, {\n        elementInjector: options.injector,\n        environmentInjector: options.environmentInjector,\n      });\n      options.appRef.attachView(this.ref.hostView);\n    }\n  }\n\n  setInput<K extends keyof ExcludeFunctions<Comp>>(input: K, value: InferInputSignalType<Comp[K]>) {\n    this.ref.setInput(input as string, value);\n\n    return this;\n  }\n\n  setInputs(inputs: Partial<ExtractInputTypes<ExcludeFunctions<Comp>>>) {\n    Object.keys(inputs).forEach((input) => {\n      this.ref.setInput(input, inputs[input]);\n    });\n\n    return this;\n  }\n\n  detectChanges() {\n    this.ref.hostView.detectChanges();\n\n    return this;\n  }\n\n  updateContext(context: Context) {\n    this.options.contextSignal?.set(context);\n\n    return this;\n  }\n\n  appendTo(container: Element) {\n    container.appendChild(this.getElement());\n\n    return this;\n  }\n\n  removeFrom(container: Element) {\n    container.removeChild(this.getElement());\n\n    return this;\n  }\n\n  getRawContent() {\n    return this.getElement().outerHTML;\n  }\n\n  getElement<T extends Element>(): T {\n    return this.ref.location.nativeElement;\n  }\n\n  destroy() {\n    this.ref.destroy();\n    !this.options.vcr && this.options.appRef.detachView(this.ref.hostView);\n    this.ref = null;\n  }\n}\n","import {  InputSignal, InputSignalWithTransform, TemplateRef, Type } from '@angular/core';\nimport { CompRef } from './comp-ref';\nimport { StringRef } from './string-ref';\nimport { TplRef } from './template-ref';\n\nexport interface ViewRef {\n  getElement(): Element | string;\n\n  detectChanges(): ViewRef;\n\n  updateContext(context: any): ViewRef;\n\n  destroy(): void;\n}\n\ntype ExcludeFunctionPropertyNames<T> = {\n  // Allow inferring keys that have the type `InputSignal`, as it represents a function.\n  [Key in keyof T]: T[Key] extends InputSignal<any> ? Key : T[Key] extends Function ? never : Key;\n}[keyof T];\n\nexport type InferInputSignalType<T> = T extends InputSignalWithTransform<unknown, infer R> ? R : T extends InputSignal<infer R> ? R : T;\nexport type ExtractInputTypes<T> = {\n  [Key in keyof T]: InferInputSignalType<T[Key]>;\n}\n\nexport type ExcludeFunctions<T> = Pick<T, ExcludeFunctionPropertyNames<T>>;\nexport type Content = string | number | TemplateRef<any> | Type<any>;\nexport type ResolveViewRef<T> = T extends Type<infer Instance>\n  ? CompRef<Instance>\n  : T extends TemplateRef<infer Context>\n  ? TplRef<Context>\n  : StringRef;\n\nexport function isTemplateRef(value: any): value is TemplateRef<any> {\n  return value instanceof TemplateRef;\n}\n\nexport function isComponent(value: any): value is Type<any> {\n  return typeof value === 'function';\n}\n\nexport function isString(value: any): value is string {\n  return typeof value === 'string';\n}\n\nexport function getViewRef<T>(value: CompRef<T> | TplRef<T>) {\n  return value instanceof CompRef ? value.ref.hostView : value.ref;\n}\n","import { ApplicationRef, EmbeddedViewRef, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { ViewRef } from './types';\n\ninterface Args<C> {\n  tpl: TemplateRef<C>;\n  context: C;\n  vcr: ViewContainerRef | undefined;\n  appRef: ApplicationRef | undefined;\n  injector: Injector | undefined;\n}\n\nexport class TplRef<C> implements ViewRef {\n  ref: EmbeddedViewRef<{}>;\n  private element: Element;\n\n  constructor(private args: Args<C>) {\n    if (this.args.vcr) {\n      this.ref = this.args.vcr.createEmbeddedView(this.args.tpl, this.args.context || {}, { injector: args.injector });\n      this.ref.detectChanges();\n    } else {\n      this.ref = this.args.tpl.createEmbeddedView(this.args.context || ({} as C), args.injector);\n      this.ref.detectChanges();\n      this.args.appRef.attachView(this.ref);\n    }\n  }\n\n  detectChanges() {\n    this.ref.detectChanges();\n\n    return this;\n  }\n\n  getElement(): Element {\n    const rootNodes = this.ref.rootNodes;\n    if (rootNodes.length === 1 && rootNodes[0] === Node.ELEMENT_NODE) {\n      this.element = rootNodes[0];\n    } else {\n      this.element = document.createElement('div');\n      this.element.append(...rootNodes);\n    }\n\n    return this.element;\n  }\n\n  destroy() {\n    if (this.ref.rootNodes[0] !== 1) {\n      this.element?.parentNode.removeChild(this.element);\n      this.element = null;\n    }\n\n    if (!this.args.vcr) {\n      this.args.appRef.detachView(this.ref);\n    }\n\n    this.ref.destroy();\n    this.ref = null;\n  }\n\n  updateContext(context: C) {\n    Object.assign(this.ref.context, context);\n\n    return this;\n  }\n}\n","import { ViewRef } from './types';\n\nexport class StringRef implements ViewRef {\n  constructor(private value: string) {}\n\n  getElement(): string {\n    return this.value;\n  }\n\n  detectChanges() {\n    return this;\n  }\n\n  updateContext() {\n    return this;\n  }\n\n  destroy() {}\n}\n","import {\n  ApplicationRef,\n  EnvironmentInjector,\n  inject,\n  Injectable,\n  InjectionToken,\n  Injector,\n  Signal,\n  signal,\n  TemplateRef,\n  Type,\n  ViewContainerRef,\n  WritableSignal,\n} from '@angular/core';\nimport { Content, isComponent, isString, isTemplateRef, ViewRef } from './types';\nimport { TplRef } from './template-ref';\nimport { StringRef } from './string-ref';\nimport { CompRef } from './comp-ref';\n\ninterface _ViewOptions {\n  vcr?: ViewContainerRef | undefined;\n  injector?: Injector | undefined;\n}\n\ninterface TemplateViewOptions extends _ViewOptions {\n  context?: Record<string, any> | undefined;\n}\n\ninterface CompViewOptions<Context = any> extends _ViewOptions {\n  environmentInjector?: EnvironmentInjector | undefined;\n  context?: Context | undefined;\n}\n\nexport type ViewOptions<Context = any> = _ViewOptions & CompViewOptions<Context> & TemplateViewOptions;\n\nexport const VIEW_CONTEXT = new InjectionToken<Signal<unknown>>('Component context');\n\n@Injectable({ providedIn: 'root' })\nexport class ViewService {\n  private injector = inject(Injector);\n  private appRef = inject(ApplicationRef);\n  private environmentInjector = inject(EnvironmentInjector);\n\n  createComponent<Comp, Context>(component: Type<Comp>, options: CompViewOptions<Context> = {}) {\n    let injector = options.injector ?? this.injector;\n    let contextSignal: WritableSignal<Context> | undefined;\n\n    if (options.context) {\n      contextSignal = signal(options.context);\n      injector = Injector.create({\n        providers: [\n          {\n            provide: VIEW_CONTEXT,\n            useValue: contextSignal.asReadonly(),\n          },\n        ],\n        parent: injector,\n      });\n    }\n\n    return new CompRef<Comp, Context>({\n      component,\n      vcr: options.vcr,\n      injector,\n      appRef: this.appRef,\n      environmentInjector: options.environmentInjector || this.environmentInjector,\n      contextSignal,\n    });\n  }\n\n  createTemplate<Context>(tpl: TemplateRef<Context>, options: TemplateViewOptions = {}) {\n    return new TplRef({\n      vcr: options.vcr,\n      appRef: this.appRef,\n      tpl,\n      context: options.context,\n      injector: options.injector,\n    });\n  }\n\n  createView<Comp, Context>(content: Type<Comp>, viewOptions: CompViewOptions<Context>): CompRef<Comp, Context>;\n  createView<T>(content: TemplateRef<T>, viewOptions: TemplateViewOptions): TplRef<T>;\n  createView(content: string): StringRef;\n  createView(content: Content, viewOptions?: ViewOptions): ViewRef;\n  createView<T extends Content, Context>(content: T, viewOptions: ViewOptions<Context> = {}): ViewRef {\n    if (isTemplateRef(content)) {\n      return this.createTemplate(content, viewOptions);\n    } else if (isComponent(content)) {\n      return this.createComponent(content, viewOptions);\n    } else if (isString(content)) {\n      return new StringRef(content);\n    } else {\n      throw 'Type of content is not supported';\n    }\n  }\n}\n\nexport function injectViewContext<T>() {\n  return inject(VIEW_CONTEXT) as Signal<T>;\n}\n","import { Component, input } from '@angular/core';\n\n@Component({\n  selector: 'dynamic-view',\n  standalone: true,\n  template: ` <div [innerHTML]=\"content()\"></div> `,\n})\nexport class DynamicViewComponent {\n  readonly content = input<string>();\n}\n","import {\n  Directive,\n  Injector,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  TemplateRef,\n  ViewContainerRef,\n  inject,\n  input,\n} from '@angular/core';\nimport { Content, isComponent, isString, ViewRef } from '../views/types';\nimport { ViewService } from '../views/view';\nimport { CompRef } from '../views/comp-ref';\nimport { DynamicViewComponent } from './dynamic-view.component';\n\n@Directive({\n  selector: '[dynamicView]',\n  standalone: true,\n})\nexport class DynamicViewDirective implements OnInit, OnChanges, OnDestroy {\n  readonly view = input<Content>(undefined, { alias: 'dynamicView' });\n  readonly injector = input<Injector>(undefined, { alias: 'dynamicViewInjector' });\n  readonly context = input<any>(undefined, { alias: 'dynamicViewContext' });\n  readonly inputs = input<Record<any, any>>(undefined, { alias: 'dynamicViewInputs' });\n\n  private viewRef: ViewRef;\n  private defaultTpl: TemplateRef<any> = inject(TemplateRef);\n  private vcr = inject(ViewContainerRef);\n  private viewService = inject(ViewService);\n\n  ngOnInit() {\n    this.resolveContentType();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const viewChanged = changes.view && !changes.view.isFirstChange();\n    const contextChanged = changes.context && !changes.context.isFirstChange();\n    const inputsChanged = changes.inputs && !changes.inputs.isFirstChange();\n\n    if (viewChanged) {\n      this.resolveContentType();\n    } else if (contextChanged) {\n      this.viewRef.updateContext(this.context());\n    } else if (isComponent(this.view()) && inputsChanged) {\n      (this.viewRef as CompRef<any>).setInputs(this.inputs() || {});\n    }\n  }\n\n  resolveContentType() {\n    this.viewRef?.destroy();\n\n    const view = this.view();\n    const injector = this.injector();\n    const context = this.context();\n\n    if (isString(view)) {\n      const viewRef = (this.viewRef = this.viewService.createComponent(DynamicViewComponent, {\n        vcr: this.vcr,\n        injector,\n      }));\n\n      viewRef.setInput('content', view).detectChanges();\n    } else if (isComponent(view)) {\n      this.viewRef = this.viewService.createComponent(view, {\n        vcr: this.vcr,\n        injector: injector ?? this.vcr.injector,\n        context,\n      });\n\n      const inputs = this.inputs();\n      if (inputs) {\n        (this.viewRef as CompRef<any>).setInputs(inputs);\n      }\n    } else {\n      this.viewRef = this.viewService.createView(view || this.defaultTpl, {\n        vcr: this.vcr,\n        injector: injector ?? this.vcr.injector,\n        context,\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    this.viewRef?.destroy();\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}