{"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  NgZone,\n  Renderer2,\n  StaticProvider,\n  TemplateRef,\n  Type,\n  ViewContainerRef\n} from '@angular/core';\n\nimport { PositioningOptions, PositioningService } from 'ngx-bootstrap/positioning';\n\nimport { listenToTriggersV2, registerEscClick, registerOutsideClick } from 'ngx-bootstrap/utils';\nimport { Subscription } from 'rxjs';\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 _zoneSubscription?: Subscription;\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 _ngZone: NgZone,\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\n    this._contentRef = void 0;\n    this._componentRef = void 0;\n    this._removeGlobalListener();\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    // 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          this._globalListener = 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      this._globalListener = 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\n  getInnerComponent(): ComponentRef<T> | undefined {\n    return this._innerComponent;\n  }\n\n  private _subscribePositioning(): void {\n    if (this._zoneSubscription || !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    this._zoneSubscription = this._ngZone.onStable.subscribe(() => {\n      if (!this._componentRef) {\n        return;\n      }\n\n      this._posService.calcPosition();\n    });\n  }\n\n  private _unsubscribePositioning(): void {\n    if (!this._zoneSubscription) {\n      return;\n    }\n\n    this._zoneSubscription.unsubscribe();\n    this._zoneSubscription = void 0;\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  NgZone, 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 _ngZone: NgZone,\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._ngZone,\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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"}