{"version":3,"file":"ngx-modalview.mjs","sources":["../../src/ngx-modal/ngx-modal-options.ts","../../src/ngx-modal/ngx-modal-wrapper.component.ts","../../src/ngx-modal/ngx-modal-draggable.directive.ts","../../src/ngx-modal/ngx-modal-holder.component.ts","../../src/ngx-modal/ngx-modal.service.ts","../../src/ngx-modal/ngx-modal-service.factory.ts","../../src/ngx-modal/ngx-modal.module.ts","../../src/ngx-modal/ngx-modal.component.ts","../../src/ngx-modalview.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const DefaultNgxModalOptionConfig = new InjectionToken<NgxModalOptions>('default-ngx-modal.config');\r\n\r\nexport interface NgxModalOptions {\r\n  closeOnEscape: boolean;\r\n  closeOnClickOutside: boolean;\r\n  bodyClass: string;\r\n  wrapperDefaultClasses: string;\r\n  wrapperClass: string;\r\n  draggableClass: string;\r\n  animationDuration: number;\r\n  autoFocus: boolean;\r\n  draggable: boolean;\r\n}\r\n\r\nexport type NgxModalOptionsOverrides = Partial<NgxModalOptions>;\r\n\r\nexport const defaultNgxModalOptions: NgxModalOptions = {\r\n  closeOnEscape: false,\r\n  closeOnClickOutside: false,\r\n  bodyClass: 'modal-open',\r\n  wrapperDefaultClasses: 'modal fade-anim',\r\n  wrapperClass: 'in',\r\n  draggableClass: 'draggable',\r\n  animationDuration: 300,\r\n  autoFocus: false,\r\n  draggable: false,\r\n};\r\n","import { Component, ComponentFactoryResolver, ElementRef, OnDestroy, Type, ViewChild, ViewContainerRef, ComponentRef, Injector } from '@angular/core';\r\nimport { NgxModalComponent } from './ngx-modal.component';\r\n\r\n/**\r\n * The modal backdrop wrapping wrapper to the modal\r\n */\r\n@Component({\r\n  selector: 'ngx-modal-wrapper',\r\n  template: `\r\n    <div #wrapper [ngClass]=\"modalClasses\" [ngStyle]=\"{ display: 'block' }\" role=\"dialog\">\r\n      <ng-template #viewContainer></ng-template>\r\n    </div>\r\n  `,\r\n})\r\nexport class NgxModalWrapperComponent implements OnDestroy {\r\n  /**\r\n   * Target viewContainer to insert modal content component\r\n   */\r\n  @ViewChild('viewContainer', { read: ViewContainerRef, static: true }) viewContainer;\r\n\r\n  /**\r\n   * Link wrapper DOM element\r\n   */\r\n  @ViewChild('wrapper', { read: ElementRef, static: true })\r\n  wrapper: ElementRef;\r\n\r\n  /**\r\n   * Wrapper modal and fade classes\r\n   */\r\n  modalClasses = 'modal fade-anim';\r\n\r\n  /**\r\n   * Dialog content componet\r\n   * @type {NgxModalComponent}\r\n   */\r\n  content: NgxModalComponent<any, any>;\r\n\r\n  /**\r\n   * Click outside callback\r\n   */\r\n  clickOutsideCallback: (event: MouseEvent) => void;\r\n\r\n  /**\r\n   * Constructor\r\n   * @param {ComponentFactoryResolver} resolver\r\n   */\r\n  constructor(\r\n    private resolver: ComponentFactoryResolver\r\n  ) { }\r\n\r\n  ngOnDestroy() {\r\n    if (this.clickOutsideCallback) {\r\n      const containerEl = this.wrapper.nativeElement;\r\n      containerEl.removeEventListener('click', this.clickOutsideCallback, false);\r\n      this.clickOutsideCallback = null;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Adds content modal component to wrapper\r\n   * @param {Type<NgxModalComponent>} component\r\n   * @return {NgxModalComponent}\r\n   */\r\n  public addComponent<T, T1>(component: Type<NgxModalComponent<T, T1>>): { ref: ComponentRef<NgxModalComponent<T, T1>>, component: NgxModalComponent<T, T1> } {\r\n    const factory = this.resolver.resolveComponentFactory(component);\r\n    const injector = Injector.create([], this.viewContainer.injector);\r\n    const componentRef = factory.create(injector);\r\n    this.viewContainer.insert(componentRef.hostView);\r\n    this.content = <NgxModalComponent<T, T1>>componentRef.instance;\r\n    this.content.wrapper = this.wrapper;\r\n    return { ref: componentRef, component: this.content };\r\n  }\r\n\r\n  /**\r\n   * Configures the function to call when you click on background of a modal but not the contents\r\n   * @param callback\r\n   */\r\n  public onClickOutsideModalContent(callback: () => void) {\r\n    const containerEl = this.wrapper.nativeElement;\r\n\r\n    this.clickOutsideCallback = (event: MouseEvent) => {\r\n      if (event.target === containerEl) {\r\n        callback();\r\n      }\r\n    };\r\n\r\n    containerEl.addEventListener('click', this.clickOutsideCallback, false);\r\n  }\r\n}\r\n","import { Directive, AfterViewInit, OnDestroy, Input, Output, ElementRef, NgZone, EventEmitter, Renderer2, OnChanges } from '@angular/core';\r\nimport { Subject, fromEvent } from 'rxjs';\r\nimport { filter, switchMap, map, takeUntil } from 'rxjs/operators';\r\n\r\nexport interface DraggedEvent {\r\n  x: number;\r\n  y: number;\r\n}\r\n\r\nexport interface DragOffset {\r\n  x?: number;\r\n  y?: number;\r\n}\r\n\r\n@Directive({\r\n  selector: '[dialogDraggable]'\r\n})\r\nexport class DraggableDirective implements AfterViewInit, OnChanges, OnDestroy {\r\n  @Input() dragHandle?: string | Element;\r\n  @Input() dragTarget: string | Element;\r\n  @Input() dragEnabled = false;\r\n  @Input() set dialogDragOffset(offset: DragOffset) {\r\n    this.reset(offset);\r\n  }\r\n\r\n  @Output() dragged = new EventEmitter<DraggedEvent>();\r\n\r\n  /** Element to be dragged */\r\n  private target: HTMLElement;\r\n  /** Drag handle */\r\n  private handle: Element;\r\n  private delta = { x: 0, y: 0 };\r\n  private offset = { x: 0, y: 0 };\r\n  private enabled = true;\r\n  private destroy$ = new Subject<void>();\r\n\r\n  constructor(private host: ElementRef, private zone: NgZone, private renderer: Renderer2) { }\r\n\r\n  public ngAfterViewInit(): void {\r\n    if (!this.enabled) {\r\n      return;\r\n    }\r\n\r\n    this.init();\r\n  }\r\n\r\n  public ngOnChanges() {\r\n    if (!this.enabled && this.dragEnabled && this.dragTarget) {\r\n      this.enabled = true;\r\n      /** determine if the component has been init by the handle variable */\r\n      if (this.handle) {\r\n        this.renderer.setStyle(this.handle, 'cursor', 'move');\r\n      } else if (this.enabled) {\r\n        this.init();\r\n      }\r\n    }\r\n\r\n    if (!this.dragEnabled) {\r\n      this.enabled = false;\r\n      if (this.handle) {\r\n        this.renderer.setStyle(this.handle, 'cursor', '');\r\n      }\r\n    }\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n  }\r\n\r\n  reset(offset?: DragOffset) {\r\n    const defaultValues = { x: 0, y: 0 };\r\n    this.offset = { ...defaultValues, ...offset };\r\n    this.delta = { ...defaultValues };\r\n    this.translate();\r\n  }\r\n\r\n  private setupEvents() {\r\n    this.zone.runOutsideAngular(() => {\r\n      const mousedown$ = fromEvent<MouseEvent>(this.handle, 'mousedown');\r\n      const mousemove$ = fromEvent<MouseEvent>(document, 'mousemove');\r\n      const mouseup$ = fromEvent<MouseEvent>(document, 'mouseup');\r\n\r\n      const mousedrag$ = mousedown$.pipe(\r\n        filter(() => this.enabled),\r\n        map(event => ({\r\n          startX: event.clientX,\r\n          startY: event.clientY\r\n        })),\r\n        switchMap(({ startX, startY }) =>\r\n          mousemove$.pipe(\r\n            map(event => {\r\n              event.preventDefault();\r\n              this.delta = {\r\n                x: event.clientX - startX,\r\n                y: event.clientY - startY\r\n              };\r\n            }),\r\n            takeUntil(mouseup$)\r\n          )\r\n        ),\r\n        takeUntil(this.destroy$)\r\n      );\r\n\r\n      mousedrag$.subscribe(() => {\r\n        if (this.delta.x === 0 && this.delta.y === 0) {\r\n          return;\r\n        }\r\n\r\n        this.translate();\r\n      });\r\n\r\n      mouseup$\r\n        .pipe(\r\n          filter(() => this.enabled),\r\n          /** Only emit change if the element has moved */\r\n          filter(() => this.delta.x !== 0 || this.delta.y !== 0),\r\n          takeUntil(this.destroy$)\r\n        )\r\n        .subscribe(() => {\r\n          this.offset.x += this.delta.x;\r\n          this.offset.y += this.delta.y;\r\n          this.dragged.emit(this.offset);\r\n          this.delta = { x: 0, y: 0 };\r\n        });\r\n    });\r\n  }\r\n\r\n  private translate() {\r\n    if (this.target) {\r\n      this.zone.runOutsideAngular(() => {\r\n        requestAnimationFrame(() => {\r\n          const transform = `translate(${this.offset.x + this.delta.x}px, ${this.offset.y + this.delta.y}px)`;\r\n          this.renderer.setStyle(this.target, 'transform', transform);\r\n        });\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Init the directive\r\n   */\r\n  private init() {\r\n    if (!this.dragTarget) {\r\n      throw new Error('You need to specify the drag target');\r\n    }\r\n\r\n    this.handle =\r\n      this.dragHandle instanceof Element\r\n        ? this.dragHandle\r\n        : typeof this.dragHandle === 'string' && this.dragHandle\r\n          ? document.querySelector(this.dragHandle as string)\r\n          : this.host.nativeElement;\r\n\r\n    /** add the move cursor */\r\n    if (this.handle && this.enabled) {\r\n      this.renderer.addClass(this.handle, 'handle');\r\n    }\r\n\r\n    this.target =\r\n      this.dragTarget instanceof HTMLElement\r\n        ? this.dragTarget\r\n        : document.querySelector(this.dragTarget as string);\r\n\r\n    this.setupEvents();\r\n\r\n    this.translate();\r\n  }\r\n}\r\n","import { Component, ComponentFactoryResolver, ElementRef, Inject, Type, ViewContainerRef, ViewChild, Renderer2, ComponentRef, NgZone } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { DefaultNgxModalOptionConfig, NgxModalOptions, NgxModalOptionsOverrides } from './ngx-modal-options';\r\nimport { NgxModalWrapperComponent } from './ngx-modal-wrapper.component';\r\nimport { NgxModalComponent } from './ngx-modal.component';\r\nimport { DraggableDirective } from './ngx-modal-draggable.directive';\r\n\r\n/**\r\n * View container manager which manages a list of modals currently active\r\n * inside the viewvontainer\r\n */\r\n@Component({\r\n  selector: 'ngx-modal-holder',\r\n  template: '<ng-template #viewContainer></ng-template>',\r\n})\r\nexport class NgxModalHolderComponent {\r\n  /**\r\n   * Target viewContainer to insert modals\r\n   */\r\n  @ViewChild('viewContainer', { read: ViewContainerRef, static: true }) viewContainer;\r\n\r\n  /**\r\n   * modal collection, maintained by addModal and removeModal\r\n   * @type {Array<NgxModalComponent> }\r\n   */\r\n  modals: Array<NgxModalComponent<any, any>> = [];\r\n\r\n  /**\r\n   * if auto focus is on and no element focused, store it here to be restored back after close\r\n   */\r\n  previousActiveElement = null;\r\n\r\n  /**\r\n   * Constructor\r\n   * @param {ComponentFactoryResolver} resolver\r\n   * @param renderer\r\n   * @param ngZone\r\n   * @param defaultNgxModalOptions\r\n   */\r\n  constructor(\r\n    private resolver: ComponentFactoryResolver,\r\n    private renderer: Renderer2,\r\n    private ngZone: NgZone,\r\n    @Inject(DefaultNgxModalOptionConfig) private defaultNgxModalOptions: NgxModalOptions,\r\n  ) {\r\n  }\r\n\r\n  /**\r\n   * Configures then adds modal to the modals array, and populates with data passed in\r\n   * @param {Type<NgxModalComponent>} component\r\n   * @param {object?} data\r\n   * @param {NgxModalOptionsOverrides?} options\r\n   * @return {Observable<*>}\r\n   */\r\n  public addModal<T, T1>(component: Type<NgxModalComponent<T, T1>>, data?: T, options?: NgxModalOptionsOverrides): Observable<T1> {\r\n    // create component\r\n    if (!this.viewContainer) {\r\n      return of(null);\r\n    }\r\n    const factory = this.resolver.resolveComponentFactory(NgxModalWrapperComponent);\r\n    const componentRef = this.viewContainer.createComponent(factory);\r\n    const modalWrapper: NgxModalWrapperComponent = <NgxModalWrapperComponent>(\r\n      componentRef.instance\r\n    );\r\n    const { ref: _componentRef, component: _component } = modalWrapper.addComponent(component);\r\n\r\n    // assign options refs\r\n    _component.options = options = Object.assign({}, this.defaultNgxModalOptions, options) as NgxModalOptions;\r\n\r\n    // set base classes for wrapper\r\n    modalWrapper.modalClasses = options.wrapperDefaultClasses;\r\n\r\n    // add to stack\r\n    this.modals.push(_component);\r\n\r\n    // wait a tick then setup the following while adding a modal\r\n    this.wait().then(() => {\r\n      this.toggleWrapperClass(modalWrapper.wrapper, options.wrapperClass);\r\n      this.toggleBodyClass(options.bodyClass);\r\n      if (options.draggable) {\r\n        this.setDraggable(_componentRef, options);\r\n      }\r\n      this.wait(options.animationDuration).then(() => {\r\n        this.autoFocusFirstElement(_component.wrapper, options.autoFocus);\r\n        _component.markAsReady();\r\n      });\r\n    });\r\n\r\n    // when closing modal remove it\r\n    _component.onClosing(modal => this.removeModal(modal));\r\n\r\n    // if clicking on background closes modal\r\n    this.configureCloseOnClickOutside(modalWrapper);\r\n\r\n    // map and return observable\r\n    _component.mapDataObject(data);\r\n\r\n    return _component.setupObserver();\r\n  }\r\n\r\n  /**\r\n   * triggers components close function\r\n   * to take effect\r\n   * @returns {Promise<void>}\r\n   * @param closingModal\r\n   */\r\n  public async removeModal(closingModal: NgxModalComponent<any, any>): Promise<any> {\r\n    const options = closingModal.options;\r\n    this.toggleWrapperClass(closingModal.wrapper, options.wrapperClass);\r\n    return this.wait(options.animationDuration).then(() => {\r\n      this.removeModalFromArray(closingModal);\r\n      this.toggleBodyClass(options.bodyClass);\r\n      this.restorePreviousFocus();\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Instructs all open modals to\r\n   */\r\n  public removeAllModals(): Promise<any> {\r\n    return Promise.all(this.modals.map(modal => this.removeModal(modal)));\r\n  }\r\n\r\n  /**\r\n   * Bind a body class 'modal-open' to a condition of modals in pool > 0\r\n   * @param bodyClass - string to add and remove from body in document\r\n   */\r\n  private toggleBodyClass(bodyClass: string): void {\r\n    if (!bodyClass) {\r\n      return;\r\n    }\r\n    const body = document.getElementsByTagName('body')[0];\r\n    const bodyClassItems = bodyClass.split(' ');\r\n    if (!this.modals.length) {\r\n      body.classList.remove(...bodyClassItems);\r\n    } else {\r\n      body.classList.add(...bodyClassItems);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * if the option to close on background click is set, then hook up a callback\r\n   * @param modalWrapper\r\n   */\r\n  private configureCloseOnClickOutside(modalWrapper: NgxModalWrapperComponent) {\r\n    modalWrapper.onClickOutsideModalContent(() => {\r\n      if (modalWrapper.content.options.closeOnClickOutside) {\r\n        modalWrapper.content.close();\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Auto focus o the first element if autofocus is on\r\n   * @param componentWrapper\r\n   * @param autoFocus\r\n   */\r\n  private autoFocusFirstElement(componentWrapper: ElementRef, autoFocus: boolean) {\r\n    if (autoFocus) {\r\n      const focusable = componentWrapper.nativeElement.querySelectorAll(\r\n        'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\r\n      );\r\n      if (focusable && focusable.length) {\r\n        this.previousActiveElement = document.activeElement;\r\n        focusable[0].focus();\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Restores the last focus is there was one\r\n   */\r\n  private restorePreviousFocus() {\r\n    if (this.previousActiveElement) {\r\n      this.previousActiveElement.focus();\r\n      this.previousActiveElement = null;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Configure the adding and removal of a wrapper class - predominantly animation focused\r\n   * @param modalWrapperEl\r\n   * @param wrapperClass\r\n   */\r\n  private toggleWrapperClass(modalWrapperEl: ElementRef, wrapperClass: string): void {\r\n    const wrapperClassList = modalWrapperEl.nativeElement.classList;\r\n    const wrapperClassItems = wrapperClass.split(' ');\r\n    if (wrapperClassList.toString().indexOf(wrapperClass) !== -1) {\r\n      wrapperClassList.remove(...wrapperClassItems);\r\n    } else {\r\n      wrapperClassList.add(...wrapperClassItems);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Enables the drag option on the modal if the options have it enabled\r\n   * @param component\r\n   * @param options\r\n   * @private\r\n   */\r\n  private setDraggable(component: ComponentRef<NgxModalComponent<any, any>>, options: NgxModalOptionsOverrides): void {\r\n    const draggableDirective = new DraggableDirective(component.location, this.ngZone, this.renderer);\r\n    draggableDirective.dragTarget = component.location.nativeElement;\r\n    draggableDirective.dragHandle = component.instance.handle ? component.instance.handle.nativeElement : undefined;\r\n    draggableDirective.ngAfterViewInit();\r\n    component.location.nativeElement.classList.add(options.draggableClass);\r\n  }\r\n\r\n  /**\r\n   * Helper function for a more readable timeout\r\n   * @param ms\r\n   */\r\n  private wait(ms: number = 0): Promise<void> {\r\n    return new Promise((resolve, reject) => {\r\n      setTimeout(() => resolve(), ms);\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Instructs the holder to remove the modal and\r\n   * removes this component from the collection\r\n   * @param {NgxModalComponent} component\r\n   */\r\n  private removeModalFromArray(component): void {\r\n    const index = this.modals.indexOf(component);\r\n    if (index > -1) {\r\n      this.viewContainer.remove(index);\r\n      this.modals.splice(index, 1);\r\n    }\r\n  }\r\n}\r\n","import { ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, Injectable, Injector, Optional, Type } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { NgxModalHolderComponent } from './ngx-modal-holder.component';\r\nimport { NgxModalComponent } from './ngx-modal.component';\r\nimport { NgxModalOptionsOverrides } from './ngx-modal-options';\r\n\r\nexport class NgxModalServiceConfig {\r\n  container: HTMLElement | string = null;\r\n}\r\n\r\n@Injectable()\r\nexport class NgxModalService {\r\n  /**\r\n   * Placeholder of modals\r\n   * @type {NgxModalHolderComponent}\r\n   */\r\n  private modalHolderComponent: NgxModalHolderComponent;\r\n\r\n  /**\r\n   * HTML container for modals\r\n   * type {HTMLElement | string}\r\n   */\r\n  private _container;\r\n\r\n  constructor(\r\n    private resolver: ComponentFactoryResolver,\r\n    private applicationRef: ApplicationRef,\r\n    private injector: Injector,\r\n    @Optional() config: NgxModalServiceConfig\r\n  ) {\r\n    if (config) {\r\n      this.container = config.container as any;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Accessor for contain - will auto generate from string\r\n   * if needed or default to the root element if nothing was set\r\n   */\r\n  private set container(c) {\r\n    this._container = c;\r\n  }\r\n\r\n  private get container(): HTMLElement {\r\n    if (typeof this._container === 'string') {\r\n      this._container = document.getElementById(this._container);\r\n    }\r\n\r\n    if (!this._container && this.applicationRef['components'].length) {\r\n      const componentRootViewContainer = this.applicationRef['components'][0];\r\n      this.container = (componentRootViewContainer.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n    }\r\n\r\n    if (!this._container || typeof this._container === 'string') {\r\n      this._container = document.getElementsByTagName('body')[0];\r\n    }\r\n\r\n    return this._container;\r\n  }\r\n\r\n  /**\r\n   * Creates and add to DOM modal holder component.\r\n   * \r\n   * @returns {NgxModalHolderComponent}\r\n   */\r\n  private createSimpleModalHolder(): NgxModalHolderComponent {\r\n    const componentFactory = this.resolver.resolveComponentFactory(NgxModalHolderComponent);\r\n    const componentRef = componentFactory.create(this.injector);\r\n    const componentRootNode = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n\r\n    this.applicationRef.attachView(componentRef.hostView);\r\n\r\n    componentRef.onDestroy(() => {\r\n      this.applicationRef.detachView(componentRef.hostView);\r\n    });\r\n\r\n    this.container.appendChild(componentRootNode);\r\n\r\n    return componentRef.instance;\r\n  }\r\n\r\n  /**\r\n   * Adds modal\r\n   *\r\n   * @param {Type<NgxModalComponent<T, T1>>} component\r\n   * @param {T?} data\r\n   * @param {NgxModalOptionsOverrides?} options\r\n   *\r\n   * @returns {Observable<T1>}\r\n   */\r\n  public addModal<T, T1>(\r\n    component: Type<NgxModalComponent<T, T1>>,\r\n    data?: T,\r\n    options?: NgxModalOptionsOverrides\r\n  ): Observable<T1> {\r\n    if (!this.modalHolderComponent) {\r\n      this.modalHolderComponent = this.createSimpleModalHolder();\r\n    }\r\n    return this.modalHolderComponent.addModal<T, T1>(component, data, options);\r\n  }\r\n\r\n  /**\r\n   * Hides and removes modal from DOM, resolves promise when fully removed\r\n   *\r\n   * @param {NgxModalComponent} component\r\n   *\r\n   * @returns {Promise<{}>}\r\n   */\r\n  public removeModal(component: NgxModalComponent<any, any>): Promise<{}> {\r\n    if (!this.modalHolderComponent) {\r\n      return Promise.resolve({});\r\n    }\r\n    return this.modalHolderComponent.removeModal(component);\r\n  }\r\n\r\n  /**\r\n   * Closes all modals, resolves promise when they're fully removed\r\n   *\r\n   * @returns {Promise<{}>}\r\n   */\r\n  public removeAll(): Promise<{}> {\r\n    if (!this.modalHolderComponent) {\r\n      return Promise.resolve({});\r\n    }\r\n    return this.modalHolderComponent.removeAllModals();\r\n  }\r\n}\r\n","import { ApplicationRef, ComponentFactoryResolver, Injector } from '@angular/core';\r\nimport { NgxModalService, NgxModalServiceConfig } from './ngx-modal.service';\r\n\r\n/**\r\n * Modal service factory. Creates modal service with options\r\n * @param { ComponentFactoryResolver } resolver\r\n * @param { ApplicationRef } applicationRef\r\n * @param { Injector } injector\r\n * @param { NgxModalServiceConfig } options\r\n * @return { NgxModalService }\r\n */\r\nexport function NgxModalServiceFactory(\r\n  resolver: ComponentFactoryResolver,\r\n  applicationRef: ApplicationRef,\r\n  injector: Injector,\r\n  options: NgxModalServiceConfig\r\n): NgxModalService {\r\n  return new NgxModalService(resolver, applicationRef, injector, options);\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ApplicationRef, ComponentFactoryResolver, Injector, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { NgxModalHolderComponent } from './ngx-modal-holder.component';\r\nimport { NgxModalWrapperComponent } from './ngx-modal-wrapper.component';\r\nimport { NgxModalService, NgxModalServiceConfig } from './ngx-modal.service';\r\nimport { NgxModalServiceFactory } from './ngx-modal-service.factory';\r\nimport { defaultNgxModalOptions, DefaultNgxModalOptionConfig, NgxModalOptions } from './ngx-modal-options';\r\nimport { DraggableDirective } from './ngx-modal-draggable.directive';\r\n\r\n@NgModule({\r\n  declarations: [NgxModalHolderComponent, NgxModalWrapperComponent, DraggableDirective],\r\n  providers: [\r\n    NgxModalService,\r\n    {\r\n      provide: DefaultNgxModalOptionConfig,\r\n      useValue: defaultNgxModalOptions,\r\n    },\r\n  ],\r\n  imports: [CommonModule],\r\n})\r\nexport class NgxModalView {\r\n  static forRoot(\r\n    config: NgxModalServiceConfig,\r\n    defaultModalOptions?: NgxModalOptions\r\n  ): ModuleWithProviders<NgxModalView> {\r\n    return {\r\n      ngModule: NgxModalView,\r\n      providers: [\r\n        { provide: NgxModalServiceConfig, useValue: config },\r\n        {\r\n          provide: NgxModalService,\r\n          useFactory: NgxModalServiceFactory,\r\n          deps: [ComponentFactoryResolver, ApplicationRef, Injector, NgxModalServiceConfig],\r\n        },\r\n        {\r\n          provide: DefaultNgxModalOptionConfig,\r\n          useValue: defaultModalOptions || defaultNgxModalOptions,\r\n        }\r\n      ],\r\n    };\r\n  }\r\n\r\n  constructor() { }\r\n}\r\n","import { Component, ElementRef, HostListener } from '@angular/core';\r\nimport { Observable, Observer, BehaviorSubject } from 'rxjs';\r\nimport { NgxModalOptions } from './ngx-modal-options';\r\n\r\n/**\r\n * Abstract modal\r\n * @template T - modal data;\r\n * @template T1 - modal result\r\n */\r\n@Component({\r\n  template: '',\r\n})\r\nexport abstract class NgxModalComponent<T, T1> {\r\n  /**\r\n   * Observer to return result from modal\r\n   */\r\n  private observer: Observer<T1>;\r\n\r\n  /**\r\n   * Drag handle\r\n   */\r\n  handle: ElementRef | undefined;\r\n\r\n  /**\r\n   * Dialog result\r\n   * @type {T1}\r\n   */\r\n  result: T1;\r\n\r\n  /**\r\n   * Dialog wrapper (modal placeholder)\r\n   */\r\n  wrapper: ElementRef;\r\n\r\n  /**\r\n   * ref of options for this component\r\n   */\r\n  options: NgxModalOptions;\r\n\r\n  /**\r\n   * ready$ is when all animations and focusing have comleted\r\n   */\r\n  _ready$ = new BehaviorSubject<boolean>(false);\r\n\r\n  /**\r\n   * Callback to the holders close function\r\n   */\r\n  private closerCallback: (component) => Promise<any> = () => Promise.resolve();\r\n\r\n  /**\r\n   * Constructor\r\n   */\r\n  constructor() { }\r\n\r\n  /**\r\n   * Maps your object passed in the creation to fields in your own Dialog classes\r\n   * @param {T} data\r\n   */\r\n  mapDataObject(data: T): void {\r\n    data = data || <T>{};\r\n    const keys = Object.keys(data);\r\n    for (let i = 0, length = keys.length; i < length; i++) {\r\n      const key = keys[i];\r\n      if (\r\n        data[key] &&\r\n        this[key] &&\r\n        typeof data[key] === 'object' &&\r\n        typeof this[key] === 'object'\r\n      ) {\r\n        Object.assign(this[key], data[key]);\r\n      } else {\r\n        this[key] = data[key];\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Setup observer\r\n   * @return {Observable<T1>}\r\n   */\r\n  setupObserver(): Observable<T1> {\r\n    return Observable.create(observer => {\r\n      this.observer = observer;\r\n\r\n      // called if observable is unsubscribed to\r\n      return () => {\r\n        this.close();\r\n      };\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Defines what happens when close is called - default this\r\n   * will just call the default remove modal process. If overridden\r\n   * must include\r\n   * @param callback\r\n   */\r\n  onClosing(callback: (component: NgxModalComponent<any, any>) => Promise<any>): void {\r\n    this.closerCallback = callback;\r\n  }\r\n\r\n  /**\r\n   * Closes modal\r\n   */\r\n  close(): Promise<any> {\r\n    return this.closerCallback(this).then(v => {\r\n      if (this.observer) {\r\n        this.observer.next(this.result);\r\n        this.observer.complete();\r\n      }\r\n      return v;\r\n    });\r\n  }\r\n\r\n  /**\r\n   * keypress binding ngx way\r\n   * @param evt\r\n   */\r\n  @HostListener('document:keydown.escape', ['$event'])\r\n  onKeydownHandler(evt: KeyboardEvent) {\r\n    if (this.options && this.options.closeOnEscape) {\r\n      this.close();\r\n    }\r\n  }\r\n\r\n  get ready$() {\r\n    return this._ready$.asObservable();\r\n  }\r\n\r\n  markAsReady() {\r\n    this._ready$.next(true);\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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"}