{"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 { distinctUntilChanged, filter, map, startWith } 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      // Immediately check current ports on subscription so that a teleportTo\n      // registered after its outlet doesn't miss the already-emitted newOutlet event.\n      // Without this, BehaviorSubject only replays one name, so only the last\n      // registered outlet is visible to new subscribers.\n      startWith(name),\n      filter((current) => current === name),\n      map((name) => this.ports.get(name)),\n      distinctUntilChanged()\n    );\n  }\n\n  ports = new Map<string, ViewContainerRef>();\n\n  newOutlet(name: string) {\n    this.outlets.next(name);\n  }\n}\n","import { Directive, type EmbeddedViewRef, TemplateRef, effect, inject, model, untracked } from '@angular/core';\n\nimport { TeleportService } from './teleport.service';\n\n@Directive({\n  selector: '[teleportTo]',\n})\nexport class TeleportDirective {\n  readonly teleportTo = model<string | null | undefined>();\n\n  private viewRef: EmbeddedViewRef<any> | null = null;\n\n  private tpl = inject(TemplateRef);\n  private service = inject(TeleportService);\n\n  constructor() {\n    effect((onCleanup) => {\n      const teleportTo = this.teleportTo();\n      if (!teleportTo) return;\n\n      // outlet$() emits immediately if the outlet is already registered, or\n      // waits for it to appear — covering both sync and async outlet creation.\n      const subscription = this.service.outlet$(teleportTo).subscribe((outlet) => {\n        if (!outlet) return;\n\n        // untracked() prevents signals read during view creation (e.g. in the\n        // teleported template's directives) from being tracked as dependencies\n        // of this effect, which would cause spurious re-runs and view recreation.\n        this.viewRef = untracked(() => {\n          return outlet.createEmbeddedView(this.tpl);\n        });\n      });\n\n      // onCleanup runs before the next effect execution and on directive destroy,\n      // ensuring the subscription and the remote view are always released together.\n      onCleanup(() => {\n        subscription.unsubscribe();\n        this.viewRef?.destroy();\n        this.viewRef = null;\n      });\n    });\n  }\n}\n","import { DestroyRef, Directive, ViewContainerRef, effect, inject, input } from '@angular/core';\nimport { TeleportService } from './teleport.service';\n\n@Directive({\n  selector: '[teleportOutlet]',\n})\nexport class TeleportOutletDirective {\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 (teleportOutlet) {\n        this.service.ports.set(teleportOutlet, this.vcr);\n        this.service.newOutlet(teleportOutlet);\n      }\n    });\n\n    inject(DestroyRef).onDestroy(() => {\n      this.service.ports.delete(this.teleportOutlet());\n    });\n  }\n}\n","import {\n  ApplicationRef,\n  type Binding,\n  ComponentRef,\n  createComponent,\n  type DirectiveWithBindings,\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  bindings?: Binding[];\n  directives?: (Type<unknown> | DirectiveWithBindings<unknown>)[];\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      // Creating through a ViewContainerRef inserts the component into the existing\n      // Angular view tree, so it participates in the host's change detection naturally.\n      this.ref = options.vcr.createComponent(options.component, {\n        index: options.vcr.length,\n        injector: options.injector || options.vcr.injector,\n        bindings: options.bindings,\n        directives: options.directives,\n      });\n    } else {\n      // Without a ViewContainerRef the component is created detached from any view tree.\n      // Attaching to ApplicationRef keeps it inside Angular's change detection cycle so\n      // it still updates — otherwise the view would be permanently stale.\n      this.ref = createComponent<Comp>(options.component, {\n        elementInjector: options.injector,\n        environmentInjector: options.environmentInjector,\n        bindings: options.bindings,\n        directives: options.directives,\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    // Context is held in a signal so the component can react to updates reactively\n    // without requiring an explicit change detection call from the outside.\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    // When there's no ViewContainerRef we manually attached to ApplicationRef,\n    // so we must also manually detach — otherwise Angular keeps running change\n    // detection on a destroyed view, causing errors.\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\n// A common interface so callers can hold any kind of rendered content — component,\n// template, or plain string — and interact with it uniformly without branching on the type.\nexport interface ViewRef {\n  getElement(): Element | string;\n\n  detectChanges(): ViewRef;\n\n  updateContext(context: any): ViewRef;\n\n  destroy(): void;\n}\n\n// Angular signal inputs are technically functions at runtime, but they represent data\n// properties — not methods. Without this carve-out they'd be filtered out alongside\n// real methods, making typed input setting impossible for modern signal-based components.\ntype ExcludeFunctionPropertyNames<T> = {\n  [Key in keyof T]: T[Key] extends InputSignal<any> ? Key : T[Key] extends Function ? never : Key;\n}[keyof T];\n\n// Signal inputs distinguish between the value type and the transform type (what you\n// pass in vs. what the component reads out). We want the transform type so callers\n// provide values that satisfy the input's acceptance contract, not just its output type.\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>;\n\n// Narrows the return type of createView so callers get a fully-typed ref\n// (e.g. CompRef<MyComp>) instead of the base ViewRef, enabling typed input setting\n// without casting.\nexport type ResolveViewRef<T> = T extends Type<infer Instance>\n  ? CompRef<Instance>\n  : T extends TemplateRef<infer Context>\n  ? TplRef<Context>\n  : StringRef;\n\n// Runtime type guards are needed because Content is a union that TypeScript can't\n// narrow automatically at runtime — TemplateRef, component classes, and strings are\n// structurally indistinguishable without these checks.\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\n// CompRef and TplRef store their inner Angular view refs differently, so this\n// normalises access when the raw Angular view (e.g. for change detection) is needed.\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      // Creating through a ViewContainerRef inserts the view into the Angular view tree,\n      // giving it automatic change detection via its host component's cycle.\n      this.ref = this.args.vcr.createEmbeddedView(this.args.tpl, this.args.context || {}, { injector: args.injector });\n      this.ref.detectChanges();\n    } else {\n      // Without a ViewContainerRef the view sits outside the component tree, so we attach\n      // it to ApplicationRef to keep it inside Angular's change detection — then trigger\n      // an initial check since no parent cycle will do it for us.\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      // Templates can project multiple root nodes (e.g. siblings or ng-container contents).\n      // Wrapping them ensures callers always receive a single element they can append,\n      // remove, or measure without handling multi-root edge cases themselves.\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      // Only remove the wrapper element from the DOM if it was actually inserted there.\n      // Skipping this for VCR-managed views avoids double-removal, since Angular tears\n      // those down through the view tree itself.\n      this.element?.parentNode.removeChild(this.element);\n      this.element = null;\n    }\n\n    if (!this.args.vcr) {\n      // Mirror the manual attachView from construction — Angular won't clean this up\n      // on its own for views that live outside the component tree.\n      this.args.appRef.detachView(this.ref);\n    }\n\n    this.ref.destroy();\n    this.ref = null;\n  }\n\n  updateContext(context: C) {\n    // Mutating the existing context object (rather than replacing it) preserves\n    // any template variable bindings that already hold a reference to the context.\n    Object.assign(this.ref.context, context);\n\n    return this;\n  }\n}\n","import { ViewRef } from './types';\n\n// Plain strings have no Angular lifecycle, so this adapter exists purely to satisfy\n// the ViewRef contract — letting callers treat all content types uniformly without\n// special-casing strings throughout the codebase.\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  type Binding,\n  type DirectiveWithBindings,\n  EnvironmentInjector,\n  inject,\n  Injectable,\n  InjectionToken,\n  Injector,\n  Signal,\n  signal,\n  TemplateRef,\n  Type,\n  untracked,\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  bindings?: Binding[];\n  directives?: (Type<unknown> | DirectiveWithBindings<unknown>)[];\n}\n\nexport type ViewOptions<Context = any> = _ViewOptions & CompViewOptions<Context> & TemplateViewOptions;\n\nexport class ViewUnsupportedContentTypeError extends Error {\n  constructor() {\n    super(typeof ngDevMode !== 'undefined' && ngDevMode ? 'Type of content is not supported' : '');\n  }\n}\n\n// Components rendered dynamically often need external data but can't receive it via\n// @Input() because they're instantiated programmatically, not by a template. An\n// injection token lets the component pull context from its injector without coupling\n// to the caller's API or requiring a shared base class.\nexport const VIEW_CONTEXT = new InjectionToken<Signal<unknown>>(\n  typeof ngDevMode !== 'undefined' && ngDevMode ? 'Component context' : '',\n);\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    return untracked(() => {\n      let injector = options.injector ?? this.injector;\n      let contextSignal: WritableSignal<Context> | undefined;\n\n      if (options.context) {\n        contextSignal = signal(options.context);\n        // Wrap the context in a child injector so the VIEW_CONTEXT token is only visible\n        // to this component and its descendants — not leaked into the broader injector tree.\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        bindings: options.bindings,\n        directives: options.directives,\n      });\n    });\n  }\n\n  createTemplate<Context>(tpl: TemplateRef<Context>, options: TemplateViewOptions = {}) {\n    return untracked(() => {\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\n  // Overloads exist to preserve the specific return type based on the content passed in,\n  // so callers get CompRef<MyComp> or TplRef<Context> rather than just ViewRef — enabling\n  // typed input setting and context updates without casting.\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    return untracked(() => {\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 new ViewUnsupportedContentTypeError();\n      }\n    });\n  }\n}\n\n// Convenience wrapper so dynamically-rendered components don't need to know about\n// the internal VIEW_CONTEXT token — they just call injectViewContext<MyContext>().\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  template: ` <div [innerHTML]=\"content()\"></div> `,\n})\nexport class DynamicViewComponent {\n  readonly content = input<string>();\n}\n","import {\n  DestroyRef,\n  Directive,\n  Injector,\n  OnChanges,\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})\nexport class DynamicViewDirective implements OnInit, OnChanges {\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  constructor() {\n    inject(DestroyRef).onDestroy(() => {\n      this.viewRef?.destroy();\n    });\n  }\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}