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