{"version":3,"file":"ngx-bootstrap-component-loader.mjs","sources":["../../../../src/component-loader/bs-component-ref.class.ts","../../../../src/component-loader/content-ref.class.ts","../../../../src/component-loader/component-loader.class.ts","../../../../src/component-loader/component-loader.factory.ts","../../../../src/component-loader/ngx-bootstrap-component-loader.ts"],"sourcesContent":["import { TemplateRef, ViewContainerRef } from '@angular/core';\n\nexport class BsComponentRef<T> {\n  templateRef?: TemplateRef<T>;\n  viewContainer?: ViewContainerRef;\n}\n","/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\n\nimport { ComponentRef, ViewRef } from '@angular/core';\n\nexport class ContentRef {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  nodes: any[];\n  viewRef?: ViewRef;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  componentRef?: ComponentRef<any>;\n\n  constructor(\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    nodes: any[],\n    viewRef?: ViewRef,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    componentRef?: ComponentRef<any>\n  ) {\n    this.nodes = nodes;\n    this.viewRef = viewRef;\n    this.componentRef = componentRef;\n  }\n}\n","// todo: add delay support\n// todo: merge events onShow, onShown, etc...\n// todo: add global positioning configuration?\nimport {\n  ApplicationRef,\n  ComponentFactory,\n  ComponentFactoryResolver,\n  ComponentRef,\n  ElementRef,\n  EmbeddedViewRef,\n  EventEmitter,\n  Injector,\n  Renderer2,\n  StaticProvider,\n  TemplateRef,\n  Type,\n  ViewContainerRef,\n  ChangeDetectorRef,\n  inject\n} from '@angular/core';\n\nimport { PositioningOptions, PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { listenToTriggersV2, registerEscClick, registerOutsideClick } from 'ngx-bootstrap/utils';\n\nimport { ContentRef } from './content-ref.class';\nimport { ListenOptions } from './listen-options.model';\n\nexport class ComponentLoader<T extends object> {\n  onBeforeShow = new EventEmitter();\n  onShown = new EventEmitter();\n  onBeforeHide = new EventEmitter();\n  onHidden = new EventEmitter();\n\n  instance?: T;\n  _componentRef?: ComponentRef<T>;\n  _inlineViewRef?: EmbeddedViewRef<T>;\n\n  private _providers: StaticProvider[] = [];\n  private _componentFactory?: ComponentFactory<T>;\n  private _positioningRafId?: number;\n  private _contentRef?: ContentRef;\n  private _innerComponent?: ComponentRef<T>;\n\n  private _unregisterListenersFn?: () => void;\n  private _isHiding = false;\n  /**\n   * Placement of a component. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n   */\n  private attachment?: string;\n  /**\n   * A selector specifying the element the popover should be appended to.\n   */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  private container: string | ElementRef | any;\n  /**\n   * A selector used if container element was not found\n   */\n  private containerDefaultSelector = 'body';\n  /**\n   * Specifies events that should trigger. Supports a space separated list of\n   * event names.\n   */\n  private triggers?: string;\n  private _listenOpts: ListenOptions = {};\n  private _globalListener = Function.prototype;\n\n  /**\n   * Do not use this directly, it should be instanced via\n   * `ComponentLoadFactory.attach`\n   * @internal\n   */\n  public constructor(\n    private _viewContainerRef: ViewContainerRef | undefined,\n    private _renderer: Renderer2 | undefined,\n    private _elementRef: ElementRef | undefined,\n    private _injector: Injector,\n    private _componentFactoryResolver: ComponentFactoryResolver,\n    private _applicationRef: ApplicationRef,\n    private _posService: PositioningService,\n    private _document: Document,\n  ) {\n  }\n\n  get isShown(): boolean {\n    if (this._isHiding) {\n      return false;\n    }\n\n    return !!this._componentRef;\n  }\n\n  attach(compType: Type<T>): ComponentLoader<T> {\n    this._componentFactory = this._componentFactoryResolver\n      .resolveComponentFactory<T>(compType);\n\n    return this;\n  }\n\n  // todo: add behaviour: to target element, `body`, custom element\n  to(container?: string | ElementRef): ComponentLoader<T> {\n    this.container = container || this.container;\n\n    return this;\n  }\n\n  position(opts?: PositioningOptions): ComponentLoader<T> {\n    if (!opts) {\n      return this;\n    }\n\n    this.attachment = opts.attachment || this.attachment;\n    this._elementRef = (opts.target as ElementRef) || this._elementRef;\n\n    return this;\n  }\n\n  provide(provider: StaticProvider): ComponentLoader<T> {\n    this._providers.push(provider);\n\n    return this;\n  }\n\n  // todo: appendChild to element or document.querySelector(this.container)\n\n  show(opts: {\n         content?: string | TemplateRef<unknown>;\n         context?: unknown;\n         initialState?: unknown;\n         [key: string]: unknown;\n         id?: number | string;\n       } = {}\n  ): ComponentRef<T> | undefined {\n\n    this._subscribePositioning();\n    this._innerComponent = void 0;\n\n    if (!this._componentRef) {\n      this.onBeforeShow.emit();\n      this._contentRef = this._getContentRef(opts.content, opts.context, opts.initialState);\n\n      const injector = Injector.create({\n        providers: this._providers,\n        parent: this._injector\n      });\n\n      if (!this._componentFactory) {\n        return;\n      }\n\n      this._componentRef = this._componentFactory.create(injector, this._contentRef.nodes);\n\n      this._applicationRef.attachView(this._componentRef.hostView);\n      // this._componentRef = this._viewContainerRef\n      //   .createComponent(this._componentFactory, 0, injector, this._contentRef.nodes);\n      this.instance = this._componentRef.instance;\n\n      Object.assign(this._componentRef.instance, opts);\n\n      if (this.container instanceof ElementRef) {\n        this.container.nativeElement.appendChild(\n          this._componentRef.location.nativeElement\n        );\n      }\n\n      if (typeof this.container === 'string' && typeof this._document !== 'undefined') {\n        const selectedElement = this._document.querySelector(this.container) ||\n          this._document.querySelector(this.containerDefaultSelector);\n\n        if (!selectedElement) {\n          return;\n        }\n\n        selectedElement.appendChild(this._componentRef.location.nativeElement);\n      }\n\n      if (\n        !this.container &&\n        this._elementRef &&\n        this._elementRef.nativeElement.parentElement\n      ) {\n        this._elementRef.nativeElement.parentElement.appendChild(\n          this._componentRef.location.nativeElement\n        );\n      }\n\n      // we need to manually invoke change detection since events registered\n      // via\n      // Renderer::listen() are not picked up by change detection with the\n      // OnPush strategy\n      if (this._contentRef.componentRef) {\n        this._innerComponent = this._contentRef.componentRef.instance;\n        this._contentRef.componentRef.changeDetectorRef.markForCheck();\n        this._contentRef.componentRef.changeDetectorRef.detectChanges();\n      }\n      this._componentRef.changeDetectorRef.markForCheck();\n      this._componentRef.changeDetectorRef.detectChanges();\n\n\n      this.onShown.emit(opts.id ? { id: opts.id } : this._componentRef.instance);\n    }\n\n    this._registerOutsideClick();\n\n    return this._componentRef;\n  }\n\n  hide(id?: number | string): ComponentLoader<T> {\n    if (!this._componentRef) {\n      return this;\n    }\n\n    this._posService.deletePositionElement(this._componentRef.location);\n\n    this.onBeforeHide.emit(this._componentRef.instance);\n\n    const componentEl = this._componentRef.location.nativeElement;\n    componentEl.parentNode?.removeChild(componentEl);\n\n    this._contentRef?.componentRef?.destroy();\n\n    if (this._viewContainerRef && this._contentRef?.viewRef) {\n      this._viewContainerRef.remove(\n        this._viewContainerRef.indexOf(this._contentRef.viewRef)\n      );\n    }\n    this._contentRef?.viewRef?.destroy();\n    this._componentRef?.destroy();\n\n    this._contentRef = void 0;\n    this._componentRef = void 0;\n    this._removeGlobalListener();\n    this._unsubscribePositioning();\n\n    this.onHidden.emit(id ? { id } : null);\n\n    return this;\n  }\n\n  toggle(): void {\n    if (this.isShown) {\n      this.hide();\n\n      return;\n    }\n\n    this.show();\n  }\n\n  dispose(): void {\n    if (this.isShown) {\n      this.hide();\n    }\n\n    this._unsubscribePositioning();\n\n    if (this._unregisterListenersFn) {\n      this._unregisterListenersFn();\n    }\n  }\n\n  listen(listenOpts: ListenOptions): ComponentLoader<T> {\n    this.triggers = listenOpts.triggers || this.triggers;\n    this._listenOpts.outsideClick = listenOpts.outsideClick;\n    this._listenOpts.outsideEsc = listenOpts.outsideEsc;\n    listenOpts.target = listenOpts.target || this._elementRef?.nativeElement;\n\n    const hide = (this._listenOpts.hide = () =>\n      listenOpts.hide ? listenOpts.hide() : void this.hide());\n    const show = (this._listenOpts.show = (registerHide) => {\n      listenOpts.show ? listenOpts.show(registerHide) : this.show(registerHide);\n      registerHide();\n    });\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const toggle = (registerHide: any) => {\n      this.isShown ? hide() : show(registerHide);\n    };\n\n    if (this._renderer) {\n      this._unregisterListenersFn = listenToTriggersV2(this._renderer, {\n        target: listenOpts.target,\n        triggers: listenOpts.triggers,\n        show,\n        hide,\n        toggle\n      });\n    }\n\n    return this;\n  }\n\n  _removeGlobalListener() {\n    if (this._globalListener) {\n      this._globalListener();\n      this._globalListener = Function.prototype;\n    }\n  }\n\n  attachInline(\n    vRef: ViewContainerRef | undefined,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    template: TemplateRef<any> | undefined\n  ): ComponentLoader<T> {\n    if (vRef && template) {\n      this._inlineViewRef = vRef.createEmbeddedView(template);\n    }\n\n    return this;\n  }\n\n  _registerOutsideClick(): void {\n    if (!this._componentRef || !this._componentRef.location) {\n      return;\n    }\n\n    let unsubscribeOutsideClick = Function.prototype;\n    let unsubscribeEscClick = Function.prototype;\n\n    // why: should run after first event bubble\n    if (this._listenOpts.outsideClick) {\n      const target = this._componentRef.location.nativeElement;\n      setTimeout(() => {\n        if (this._renderer && this._elementRef) {\n          unsubscribeOutsideClick = registerOutsideClick(this._renderer, {\n            targets: [target, this._elementRef.nativeElement],\n            outsideClick: this._listenOpts.outsideClick,\n            hide: () => this._listenOpts.hide && this._listenOpts.hide()\n          });\n        }\n      });\n    }\n    if (this._listenOpts.outsideEsc && this._renderer && this._elementRef) {\n      const target = this._componentRef.location.nativeElement;\n      unsubscribeEscClick = registerEscClick(this._renderer, {\n        targets: [target, this._elementRef.nativeElement],\n        outsideEsc: this._listenOpts.outsideEsc,\n        hide: () => this._listenOpts.hide && this._listenOpts.hide()\n      });\n    }\n\n    this._globalListener = () => {\n      unsubscribeOutsideClick();\n      unsubscribeEscClick();\n    };\n  }\n\n  getInnerComponent(): ComponentRef<T> | undefined {\n    return this._innerComponent;\n  }\n\n  private _subscribePositioning(): void {\n    if (this._positioningRafId || !this.attachment) {\n      return;\n    }\n\n    this.onShown.subscribe(() => {\n      this._posService.position({\n        element: this._componentRef?.location,\n        target: this._elementRef,\n        attachment: this.attachment,\n        appendToBody: this.container === 'body'\n      });\n    });\n\n    // Use requestAnimationFrame for zoneless-compatible position updates\n    // This replaces the previous NgZone.onStable subscription\n    const schedulePositioning = () => {\n      if (!this._componentRef) {\n        return;\n      }\n\n      this._posService.calcPosition();\n      this._positioningRafId = requestAnimationFrame(schedulePositioning);\n    };\n\n    // Initial calculation after a short delay to ensure DOM is ready\n    this._positioningRafId = requestAnimationFrame(schedulePositioning);\n  }\n\n  private _unsubscribePositioning(): void {\n    if (this._positioningRafId) {\n      cancelAnimationFrame(this._positioningRafId);\n      this._positioningRafId = undefined;\n    }\n  }\n\n  private _getContentRef(\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    content: string | TemplateRef<any> | any,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    context?: any,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    initialState?: any\n  ): ContentRef {\n    if (!content) {\n      return new ContentRef([]);\n    }\n\n    if (content instanceof TemplateRef) {\n      if (this._viewContainerRef) {\n        const _viewRef = this._viewContainerRef\n          .createEmbeddedView<TemplateRef<T>>(content, context);\n        _viewRef.markForCheck();\n\n        return new ContentRef([_viewRef.rootNodes], _viewRef);\n      }\n      const viewRef = content.createEmbeddedView({});\n      this._applicationRef.attachView(viewRef);\n\n      return new ContentRef([viewRef.rootNodes], viewRef);\n    }\n\n    if (typeof content === 'function') {\n      const contentCmptFactory = this._componentFactoryResolver.resolveComponentFactory(\n        content\n      );\n\n      const modalContentInjector = Injector.create({\n        providers: this._providers,\n        parent: this._injector\n      });\n\n      const componentRef = contentCmptFactory.create(modalContentInjector);\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      Object.assign(componentRef.instance, initialState);\n      this._applicationRef.attachView(componentRef.hostView);\n\n      return new ContentRef(\n        [[componentRef.location.nativeElement]],\n        componentRef.hostView,\n        componentRef\n      );\n    }\n\n    const nodes = this._renderer\n      ? [this._renderer.createText(`${content}`)]\n      : [];\n    return new ContentRef([nodes]);\n  }\n}\n","import {\n  ApplicationRef, ComponentFactoryResolver, ElementRef, Inject, Injectable, Injector,\n  Renderer2, ViewContainerRef\n} from '@angular/core';\nimport { ComponentLoader } from './component-loader.class';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable({providedIn: 'root'})\nexport class ComponentLoaderFactory {\n  constructor(private _componentFactoryResolver: ComponentFactoryResolver,\n              private _injector: Injector,\n              private _posService: PositioningService,\n              private _applicationRef: ApplicationRef,\n              @Inject(DOCUMENT) private _document: Document\n  ) {}\n\n  /**\n   *\n   * @param _elementRef\n   * @param _viewContainerRef\n   * @param _renderer\n   */\n  createLoader<T extends object>(_elementRef?: ElementRef,\n                  _viewContainerRef?: ViewContainerRef,\n                  _renderer?: Renderer2,\n  ): ComponentLoader<T> {\n    return new ComponentLoader<T>(\n      _viewContainerRef,\n      _renderer,\n      _elementRef,\n      this._injector,\n      this._componentFactoryResolver,\n      this._applicationRef,\n      this._posService,\n      this._document\n    );\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}