{"version":3,"file":"ngx-smart-modal.mjs","sources":["../../../projects/ngx-smart-modal/src/lib/config/ngx-smart-modal.config.ts","../../../projects/ngx-smart-modal/src/lib/components/ngx-smart-modal.component.ts","../../../projects/ngx-smart-modal/src/lib/services/ngx-smart-modal-stack.service.ts","../../../projects/ngx-smart-modal/src/lib/services/ngx-smart-modal.service.ts","../../../projects/ngx-smart-modal/src/lib/modules/ngx-smart-modal.module.ts","../../../projects/ngx-smart-modal/src/public-api.ts","../../../projects/ngx-smart-modal/src/ngx-smart-modal.ts"],"sourcesContent":["export const NgxSmartModalConfig = {\n    bodyClassOpen: 'dialog-open',\n    prefixEvent: 'ngx-smart-modal.'\n};\n\nexport interface INgxSmartModalOptions {\n    closable?: boolean;\n    escapable?: boolean;\n    dismissable?: boolean;\n    customClass?: string;\n    backdrop?: boolean;\n    force?: boolean;\n    hideDelay?: number;\n    autostart?: boolean;\n    target?: string;\n    ariaLabel?: string;\n    ariaLabelledBy?: string;\n    ariaDescribedBy?: string;\n    refocus?: boolean;\n}\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n  AfterViewChecked,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  PLATFORM_ID,\n  QueryList,\n  Renderer2,\n  Type,\n  ViewChild,\n  ViewChildren,\n  ViewContainerRef\n} from '@angular/core';\nimport { NgxSmartModalConfig } from '../config/ngx-smart-modal.config';\n\n@Component({\n  selector: 'ngx-smart-modal',\n  template: `\n    <div\n      *ngIf=\"overlayVisible\"\n      [style.z-index]=\"visible ? layerPosition - 1 : -1\"\n      [ngClass]=\"{\n        transparent: !backdrop,\n        overlay: true,\n        'nsm-overlay-open': openedClass\n      }\"\n      (click)=\"dismiss($event)\"\n      #nsmOverlay\n    >\n      <div\n        [style.z-index]=\"visible ? layerPosition : -1\"\n        [ngClass]=\"[\n          'nsm-dialog',\n          customClass,\n          openedClass ? 'nsm-dialog-open' : 'nsm-dialog-close'\n        ]\"\n        #nsmDialog\n        [attr.aria-hidden]=\"openedClass ? false : true\"\n        [attr.aria-label]=\"ariaLabel\"\n        [attr.aria-labelledby]=\"ariaLabelledBy\"\n        [attr.aria-describedby]=\"ariaDescribedBy\"\n      >\n        <div class=\"nsm-content\" #nsmContent>\n          <div class=\"nsm-body\">\n            <ng-template #dynamicContent></ng-template>\n            <ng-content></ng-content>\n          </div>\n          <button\n            type=\"button\"\n            *ngIf=\"closable\"\n            (click)=\"close()\"\n            aria-label=\"Close\"\n            class=\"nsm-dialog-btn-close\"\n          >\n            <svg\n              xmlns=\"http://www.w3.org/2000/svg\"\n              version=\"1.1\"\n              id=\"Layer_1\"\n              x=\"0px\"\n              y=\"0px\"\n              viewBox=\"0 0 512 512\"\n              xml:space=\"preserve\"\n              width=\"16px\"\n              height=\"16px\"\n              role=\"img\"\n              aria-labelledby=\"closeIconTitle closeIconDesc\"\n            >\n              <title id=\"closeIconTitle\">Close Icon</title>\n              <desc id=\"closeIconDesc\">\n                A light-gray close icon used to close the modal\n              </desc>\n              <g>\n                <path\n                  d=\"M505.943,6.058c-8.077-8.077-21.172-8.077-29.249,0L6.058,476.693c-8.077,8.077-8.077,21.172,0,29.249    C10.096,509.982,15.39,512,20.683,512c5.293,0,10.586-2.019,14.625-6.059L505.943,35.306    C514.019,27.23,514.019,14.135,505.943,6.058z\"\n                  fill=\"currentColor\"\n                />\n              </g>\n              <g>\n                <path\n                  d=\"M505.942,476.694L35.306,6.059c-8.076-8.077-21.172-8.077-29.248,0c-8.077,8.076-8.077,21.171,0,29.248l470.636,470.636    c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.624-6.057C514.018,497.866,514.018,484.771,505.942,476.694z\"\n                  fill=\"currentColor\"\n                />\n              </g>\n            </svg>\n          </button>\n        </div>\n      </div>\n    </div>\n  `,\n  styles: [],\n})\nexport class NgxSmartModalComponent\n  implements OnInit, OnDestroy, AfterViewChecked\n{\n  @Input() public closable = true;\n  @Input() public escapable = true;\n  @Input() public dismissable = true;\n  @Input() public identifier = '';\n  @Input() public customClass = 'nsm-dialog-animation-fade';\n  @Input() public visible = false;\n  @Input() public backdrop = true;\n  @Input() public force = true;\n  @Input() public hideDelay = 500;\n  @Input() public autostart = false;\n  @Input() public target = '';\n  @Input() public ariaLabel: string | null = null;\n  @Input() public ariaLabelledBy: string | null = null;\n  @Input() public ariaDescribedBy: string | null = null;\n  @Input() public refocus = true;\n\n  @Output() public visibleChange: EventEmitter<boolean> =\n    new EventEmitter<boolean>();\n  @Output() public onClose: EventEmitter<any> = new EventEmitter();\n  @Output() public onCloseFinished: EventEmitter<any> = new EventEmitter();\n  @Output() public onDismiss: EventEmitter<any> = new EventEmitter();\n  @Output() public onDismissFinished: EventEmitter<any> = new EventEmitter();\n  @Output() public onAnyCloseEvent: EventEmitter<any> = new EventEmitter();\n  @Output() public onAnyCloseEventFinished: EventEmitter<any> =\n    new EventEmitter();\n  @Output() public onOpen: EventEmitter<any> = new EventEmitter();\n  @Output() public onOpenFinished: EventEmitter<any> = new EventEmitter();\n  @Output() public onEscape: EventEmitter<any> = new EventEmitter();\n  @Output() public onDataAdded: EventEmitter<any> = new EventEmitter();\n  @Output() public onDataRemoved: EventEmitter<any> = new EventEmitter();\n\n  public contentComponent!: Type<any>;\n  public layerPosition = 1041;\n  public overlayVisible = false;\n  public openedClass = false;\n\n  public createFrom = 'html';\n\n  private _data: any;\n  private _componentRef!: ComponentRef<Component>;\n\n  @ViewChildren('nsmContent') private nsmContent!: QueryList<ElementRef>;\n  @ViewChildren('nsmDialog') public nsmDialog!: QueryList<ElementRef>;\n  @ViewChildren('nsmOverlay') private nsmOverlay!: QueryList<ElementRef>;\n  @ViewChild('dynamicContent', { read: ViewContainerRef })\n  private dynamicContentContainer!: ViewContainerRef;\n\n  constructor(\n    private _renderer: Renderer2,\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _viewContainerRef: ViewContainerRef,\n    public readonly elementRef: ElementRef,\n    @Inject(DOCUMENT) private _document: Document,\n    @Inject(PLATFORM_ID) private _platformId: object\n  ) {}\n\n  public ngOnInit() {\n    if (!this.identifier || !this.identifier.length) {\n      throw new Error(\n        'identifier field isn’t set. Please set one before calling <ngx-smart-modal> in a template.'\n      );\n    }\n\n    this._sendEvent('create');\n  }\n\n  public ngAfterViewChecked() {\n    if (\n      this.overlayVisible &&\n      this.contentComponent &&\n      this.dynamicContentContainer &&\n      this.dynamicContentContainer.length === 0\n    ) {\n      this.createDynamicContent();\n    }\n  }\n\n  public ngOnDestroy() {\n    this._sendEvent('delete');\n  }\n\n  /**\n   * Open the modal instance\n   *\n   * @param top open the modal top of all other\n   * @returns the modal component\n   */\n  public open(top?: boolean): NgxSmartModalComponent {\n    this._sendEvent('open', { top: top });\n\n    return this;\n  }\n\n  /**\n   * Close the modal instance\n   *\n   * @returns the modal component\n   */\n  public close(): NgxSmartModalComponent {\n    this._sendEvent('close');\n\n    return this;\n  }\n\n  /**\n   * Dismiss the modal instance\n   *\n   * @param e the event sent by the browser\n   * @returns the modal component\n   */\n  public dismiss(e: MouseEvent): NgxSmartModalComponent {\n    if (\n      !this.dismissable ||\n      !(e?.target as Element)?.classList.contains('overlay')\n    ) {\n      return this;\n    }\n\n    this._sendEvent('dismiss');\n\n    return this;\n  }\n\n  /**\n   * Toggle visibility of the modal instance\n   *\n   * @param top open the modal top of all other\n   * @returns the modal component\n   */\n  public toggle(top?: boolean): NgxSmartModalComponent {\n    this._sendEvent('toggle', { top: top });\n\n    return this;\n  }\n\n  /**\n   * Add a custom class to the modal instance\n   *\n   * @param className the class to add\n   * @returns the modal component\n   */\n  public addCustomClass(className: string): NgxSmartModalComponent {\n    if (!this.customClass.length) {\n      this.customClass = className;\n    } else {\n      this.customClass += ' ' + className;\n    }\n\n    return this;\n  }\n\n  /**\n   * Remove a custom class to the modal instance\n   *\n   * @param className the class to remove\n   * @returns the modal component\n   */\n  public removeCustomClass(className?: string): NgxSmartModalComponent {\n    if (className) {\n      this.customClass = this.customClass.replace(className, '').trim();\n    } else {\n      this.customClass = '';\n    }\n\n    return this;\n  }\n\n  /**\n   * Returns the visibility state of the modal instance\n   */\n  public isVisible(): boolean {\n    return this.visible;\n  }\n\n  /**\n   * Checks if data is attached to the modal instance\n   */\n  public hasData(): boolean {\n    return this._data !== undefined;\n  }\n\n  /**\n   * Attach data to the modal instance\n   *\n   * @param data the data to attach\n   * @param force override potentially attached data\n   * @returns the modal component\n   */\n  public setData(data: unknown, force?: boolean): NgxSmartModalComponent {\n    if (!this.hasData() || (this.hasData() && force)) {\n      this._data = data;\n      this.assignModalDataToComponentData(this._componentRef);\n      this.onDataAdded.emit(this._data);\n      this.markForCheck();\n    }\n\n    return this;\n  }\n\n  /**\n   * Retrieve the data attached to the modal instance\n   */\n  public getData<T>(): T {\n    this.assignComponentDataToModalData(this._componentRef);\n    return this._data as T;\n  }\n\n  /**\n   * Remove the data attached to the modal instance\n   *\n   * @returns the modal component\n   */\n  public removeData(): NgxSmartModalComponent {\n    this._data = undefined;\n    this.onDataRemoved.emit(true);\n    this.markForCheck();\n\n    return this;\n  }\n\n  /**\n   * Add body class modal opened\n   *\n   * @returns the modal component\n   */\n  public addBodyClass(): NgxSmartModalComponent {\n    this._renderer.addClass(\n      this._document.body,\n      NgxSmartModalConfig.bodyClassOpen\n    );\n\n    return this;\n  }\n\n  /**\n   * Add body class modal opened\n   *\n   * @returns the modal component\n   */\n  public removeBodyClass(): NgxSmartModalComponent {\n    this._renderer.removeClass(\n      this._document.body,\n      NgxSmartModalConfig.bodyClassOpen\n    );\n\n    return this;\n  }\n\n  public markForCheck() {\n    try {\n      this._changeDetectorRef.detectChanges();\n    } catch (e) {\n      /* empty */\n    }\n\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /**\n   * Listens for window resize event and recalculates modal instance position if it is element-relative\n   */\n  @HostListener('window:resize')\n  public targetPlacement(): boolean | void {\n    if (\n      !this.isBrowser ||\n      !this.nsmDialog.length ||\n      !this.nsmContent.length ||\n      !this.nsmOverlay.length ||\n      !this.target\n    ) {\n      return false;\n    }\n    const targetElement = this._document.querySelector(this.target);\n\n    if (!targetElement) {\n      return false;\n    }\n\n    const targetElementRect = targetElement.getBoundingClientRect();\n    const bodyRect =\n      this.nsmOverlay.first.nativeElement.getBoundingClientRect();\n\n    const nsmContentRect =\n      this.nsmContent.first.nativeElement.getBoundingClientRect();\n    const nsmDialogRect =\n      this.nsmDialog.first.nativeElement.getBoundingClientRect();\n\n    const marginLeft = parseInt(\n      getComputedStyle(this.nsmContent.first.nativeElement).marginLeft,\n      10\n    );\n    const marginTop = parseInt(\n      getComputedStyle(this.nsmContent.first.nativeElement).marginTop,\n      10\n    );\n\n    let offsetTop =\n      targetElementRect.top -\n      nsmDialogRect.top -\n      (nsmContentRect.height - targetElementRect.height) / 2;\n    let offsetLeft =\n      targetElementRect.left -\n      nsmDialogRect.left -\n      (nsmContentRect.width - targetElementRect.width) / 2;\n\n    if (\n      offsetLeft + nsmDialogRect.left + nsmContentRect.width + marginLeft * 2 >\n      bodyRect.width\n    ) {\n      offsetLeft =\n        bodyRect.width -\n        (nsmDialogRect.left + nsmContentRect.width) -\n        marginLeft * 2;\n    } else if (offsetLeft + nsmDialogRect.left < 0) {\n      offsetLeft = -nsmDialogRect.left;\n    }\n\n    if (\n      offsetTop + nsmDialogRect.top + nsmContentRect.height + marginTop >\n      bodyRect.height\n    ) {\n      offsetTop =\n        bodyRect.height -\n        (nsmDialogRect.top + nsmContentRect.height) -\n        marginTop;\n    }\n\n    this._renderer.setStyle(\n      this.nsmContent.first.nativeElement,\n      'top',\n      (offsetTop < 0 ? 0 : offsetTop) + 'px'\n    );\n    this._renderer.setStyle(\n      this.nsmContent.first.nativeElement,\n      'left',\n      offsetLeft + 'px'\n    );\n  }\n\n  private _sendEvent(name: string, extraData?: unknown): boolean {\n    if (!this.isBrowser) {\n      return false;\n    }\n\n    const data = {\n      extraData: extraData,\n      instance: { id: this.identifier, modal: this },\n    };\n\n    const event = new CustomEvent(NgxSmartModalConfig.prefixEvent + name, {\n      detail: data,\n    });\n\n    return window.dispatchEvent(event);\n  }\n\n  /**\n   * Is current platform browser\n   */\n  private get isBrowser(): boolean {\n    return isPlatformBrowser(this._platformId);\n  }\n\n  /**\n   * Creates content inside provided ViewContainerRef\n   */\n  private createDynamicContent(): void {\n    this.dynamicContentContainer.clear();\n    this._componentRef = this.dynamicContentContainer.createComponent(\n      this.contentComponent\n    );\n    this.assignModalDataToComponentData(this._componentRef);\n    this.markForCheck();\n  }\n\n  /**\n   * Assigns the modal data to the ComponentRef instance properties\n   */\n  private assignModalDataToComponentData(\n    componentRef: ComponentRef<Component>\n  ): void {\n    if (componentRef) {\n      Object.assign(componentRef.instance, this._data);\n    }\n  }\n\n  /**\n   * Assigns the ComponentRef instance properties to the modal data object\n   */\n  private assignComponentDataToModalData(\n    componentRef: ComponentRef<Component>\n  ): void {\n    if (componentRef) {\n      Object.assign(this._data, componentRef.instance);\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ModalInstance } from './modal-instance';\nimport { NgxSmartModalComponent } from '../components/ngx-smart-modal.component';\n\n@Injectable()\nexport class NgxSmartModalStackService {\n  private _modalStack: ModalInstance[];\n\n  constructor() {\n    this._modalStack = [];\n  }\n\n  /**\n   * Add a new modal instance. This step is essential and allows to retrieve any modal at any time.\n   * It stores an object that contains the given modal identifier and the modal itself directly in the `modalStack`.\n   *\n   * @param modalInstance The object that contains the given modal identifier and the modal itself.\n   * @param force Optional parameter that forces the overriding of modal instance if it already exists.\n   * @returns nothing special.\n   */\n  public addModal(modalInstance: ModalInstance, force?: boolean): void {\n    if (force) {\n      const i: number = this._modalStack.findIndex((o: ModalInstance) => o.id === modalInstance.id);\n      if (i > -1) {\n        this._modalStack[i].modal = modalInstance.modal;\n      } else {\n        this._modalStack.push(modalInstance);\n      }\n      return;\n    }\n    this._modalStack.push(modalInstance);\n  }\n\n  /**\n   * Retrieve a modal instance by its identifier.\n   *\n   * @param id The modal identifier used at creation time.\n   */\n  public getModal(id: string): NgxSmartModalComponent {\n    const i = this._modalStack.find((o: ModalInstance) => o.id === id);\n\n    if (i !== undefined) {\n      return i.modal;\n    } else {\n      throw new Error(`Cannot find modal with identifier ${id}`);\n    }\n  }\n\n  /**\n   * Retrieve all the created modals.\n   *\n   * @returns an array that contains all modal instances.\n   */\n  public getModalStack(): ModalInstance[] {\n    return this._modalStack;\n  }\n\n  /**\n   * Retrieve all the opened modals. It looks for all modal instances with their `visible` property set to `true`.\n   *\n   * @returns an array that contains all the opened modals.\n   */\n  public getOpenedModals(): ModalInstance[] {\n    return this._modalStack.filter((o: ModalInstance) => o.modal.visible);\n  }\n\n  /**\n   * Retrieve the opened modal with highest z-index.\n   *\n   * @returns the opened modal with highest z-index.\n   */\n  public getTopOpenedModal(): NgxSmartModalComponent {\n    if (!this.getOpenedModals().length) {\n      throw new Error('No modal is opened');\n    }\n\n    return this.getOpenedModals()\n      .map((o: ModalInstance) => o.modal)\n      .reduce((highest, item) => item.layerPosition > highest.layerPosition ? item : highest, this.getOpenedModals()[0].modal);\n  }\n\n  /**\n   * Get the higher `z-index` value between all the modal instances. It iterates over the `ModalStack` array and\n   * calculates a higher value (it takes the highest index value between all the modal instances and adds 1).\n   * Use it to make a modal appear foreground.\n   *\n   * @returns a higher index from all the existing modal instances.\n   */\n  public getHigherIndex(): number {\n    return Math.max(...this._modalStack.map((o) => o.modal.layerPosition), 1041) + 1;\n  }\n\n  /**\n   * It gives the number of modal instances. It's helpful to know if the modal stack is empty or not.\n   *\n   * @returns the number of modal instances.\n   */\n  public getModalStackCount(): number {\n    return this._modalStack.length;\n  }\n\n  /**\n   * Remove a modal instance from the modal stack.\n   * Returns the removed modal instance or undefined if no modal was found\n   *\n   * @param id The modal identifier.\n   * @returns the removed modal instance.\n   */\n  public removeModal(id: string): undefined | ModalInstance {\n    const i: number = this._modalStack.findIndex((o: any) => o.id === id);\n    if (i < 0) {\n      return;\n    }\n\n    const modalInstance = this._modalStack.splice(i, 1)[0];\n    return modalInstance;\n  }\n}\n","import { ApplicationRef, EmbeddedViewRef, Inject, Injectable, Injector, PLATFORM_ID, TemplateRef, Type, ViewContainerRef } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { NgxSmartModalComponent } from '../components/ngx-smart-modal.component';\nimport { INgxSmartModalOptions, NgxSmartModalConfig } from '../config/ngx-smart-modal.config';\nimport { NgxSmartModalStackService } from './ngx-smart-modal-stack.service';\nimport { ModalInstance } from './modal-instance';\n\nexport type Content<T> = string | TemplateRef<T> | Type<T>;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgxSmartModalService {\n  private lastElementFocused: any;\n\n  constructor(\n    private _injector: Injector,\n    private _modalStack: NgxSmartModalStackService,\n    @Inject(DOCUMENT) private _document: any,\n    @Inject(PLATFORM_ID) private _platformId: any\n  ) {\n    this._addEvents();\n  }\n\n  /**\n   * Add a new modal instance. This step is essential and allows to retrieve any modal at any time.\n   * It stores an object that contains the given modal identifier and the modal itself directly in the `modalStack`.\n   *\n   * @param modalInstance The object that contains the given modal identifier and the modal itself.\n   * @param force Optional parameter that forces the overriding of modal instance if it already exists.\n   * @returns nothing special.\n   */\n  public addModal(modalInstance: ModalInstance, force?: boolean): void {\n    this._modalStack.addModal(modalInstance, force);\n  }\n\n  /**\n   * Retrieve a modal instance by its identifier.\n   *\n   * @param id The modal identifier used at creation time.\n   */\n  public getModal(id: string): NgxSmartModalComponent {\n    return this._modalStack.getModal(id);\n  }\n\n  /**\n   * Alias of `getModal` to retrieve a modal instance by its identifier.\n   *\n   * @param id The modal identifier used at creation time.\n   */\n  public get(id: string): NgxSmartModalComponent {\n    return this.getModal(id);\n  }\n\n  /**\n   * Open a given modal\n   *\n   * @param id The modal identifier used at creation time.\n   * @param force Tell the modal to open top of all other opened modals\n   */\n  public open(id: string, force = false): boolean {\n    return this._openModal(this.get(id), force);\n  }\n\n  /**\n   * Close a given modal\n   *\n   * @param id The modal identifier used at creation time.\n   */\n  public close(id: string): boolean {\n    return this._closeModal(this.get(id));\n  }\n\n  /**\n   * Close all opened modals\n   */\n  public closeAll(): void {\n    this.getOpenedModals().forEach((instance: ModalInstance) => {\n      this._closeModal(instance.modal);\n    });\n  }\n\n  /**\n   * Toggles a given modal\n   * If the retrieved modal is opened it closes it, else it opens it.\n   *\n   * @param id The modal identifier used at creation time.\n   * @param force Tell the modal to open top of all other opened modals\n   */\n  public toggle(id: string, force = false): boolean {\n    return this._toggleModal(this.get(id), force);\n  }\n\n  /**\n   * Retrieve all the created modals.\n   *\n   * @returns an array that contains all modal instances.\n   */\n  public getModalStack(): ModalInstance[] {\n    return this._modalStack.getModalStack();\n  }\n\n  /**\n   * Retrieve all the opened modals. It looks for all modal instances with their `visible` property set to `true`.\n   *\n   * @returns an array that contains all the opened modals.\n   */\n  public getOpenedModals(): ModalInstance[] {\n    return this._modalStack.getOpenedModals();\n  }\n\n  /**\n   * Retrieve the opened modal with highest z-index.\n   *\n   * @returns the opened modal with highest z-index.\n   */\n  public getTopOpenedModal(): NgxSmartModalComponent {\n    return this._modalStack.getTopOpenedModal();\n  }\n\n  /**\n   * Get the higher `z-index` value between all the modal instances. It iterates over the `ModalStack` array and\n   * calculates a higher value (it takes the highest index value between all the modal instances and adds 1).\n   * Use it to make a modal appear foreground.\n   *\n   * @returns a higher index from all the existing modal instances.\n   */\n  public getHigherIndex(): number {\n    return this._modalStack.getHigherIndex();\n  }\n\n  /**\n   * It gives the number of modal instances. It's helpful to know if the modal stack is empty or not.\n   *\n   * @returns the number of modal instances.\n   */\n  public getModalStackCount(): number {\n    return this._modalStack.getModalStackCount();\n  }\n\n  /**\n   * Remove a modal instance from the modal stack.\n   *\n   * @param id The modal identifier.\n   * @returns the removed modal instance.\n   */\n  public removeModal(id: string): void {\n    const modalInstance = this._modalStack.removeModal(id);\n    if (modalInstance) {\n      this._destroyModal(modalInstance.modal);\n    }\n  }\n\n  /**\n   * Associate data to an identified modal. If the modal isn't already associated to some data, it creates a new\n   * entry in the `modalData` array with its `id` and the given `data`. If the modal already has data, it rewrites\n   * them with the new ones. Finally if no modal found it returns an error message in the console and false value\n   * as method output.\n   *\n   * @param data The data you want to associate to the modal.\n   * @param id The modal identifier.\n   * @param force If true, overrides the previous stored data if there was.\n   * @returns true if the given modal exists and the process has been tried, either false.\n   */\n  public setModalData(data: any, id: string, force?: boolean): boolean {\n    const modal = this.get(id);\n    if (modal) {\n      modal.setData(data, force);\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  /**\n   * Retrieve modal data by its identifier.\n   *\n   * @param id The modal identifier used at creation time.\n   * @returns the associated modal data.\n   */\n  public getModalData(id: string): unknown {\n    const modal = this.get(id);\n    if (modal) {\n      return modal.getData();\n    }\n\n    return null;\n  }\n\n  /**\n   * Reset the data attached to a given modal.\n   *\n   * @param id The modal identifier used at creation time.\n   * @returns the removed data or false if modal doesn't exist.\n   */\n  public resetModalData(id: string): unknown | boolean {\n    if (this._modalStack.getModalStack().find((o: ModalInstance) => o.id === id)) {\n      const removed: unknown = this.getModal(id).getData();\n      this.getModal(id).removeData();\n      return removed;\n    } else {\n      return false;\n    }\n  }\n\n  /**\n   * Close the latest opened modal\n   */\n  public closeLatestModal(): void {\n    this.getTopOpenedModal().close();\n  }\n\n  /**\n   * Create dynamic NgxSmartModalComponent\n   * @param vcr A ViewContainerRef reference\n   * @param id The modal identifier used at creation time\n   * @param content The modal content (string, templateRef or Component)\n   * @param options Any NgxSmartModalComponent available options\n   */\n  public create<T>(id: string, content: Content<T>, vcr: ViewContainerRef, options: INgxSmartModalOptions = {}) {\n    try {\n      return this.getModal(id);\n    } catch (e) {\n      const ngContent = this._resolveNgContent(content);\n\n      const componentRef = vcr.createComponent(NgxSmartModalComponent, { injector: this._injector, projectableNodes: ngContent });\n\n      if (content instanceof Type) {\n        componentRef.instance.contentComponent = content;\n      }\n\n      componentRef.instance.identifier = id;\n      componentRef.instance.createFrom = 'service';\n\n      if (typeof options.closable === 'boolean') { componentRef.instance.closable = options.closable; }\n      if (typeof options.escapable === 'boolean') { componentRef.instance.escapable = options.escapable; }\n      if (typeof options.dismissable === 'boolean') { componentRef.instance.dismissable = options.dismissable; }\n      if (typeof options.customClass === 'string') { componentRef.instance.customClass = options.customClass; }\n      if (typeof options.backdrop === 'boolean') { componentRef.instance.backdrop = options.backdrop; }\n      if (typeof options.force === 'boolean') { componentRef.instance.force = options.force; }\n      if (typeof options.hideDelay === 'number') { componentRef.instance.hideDelay = options.hideDelay; }\n      if (typeof options.autostart === 'boolean') { componentRef.instance.autostart = options.autostart; }\n      if (typeof options.target === 'string') { componentRef.instance.target = options.target; }\n      if (typeof options.ariaLabel === 'string') { componentRef.instance.ariaLabel = options.ariaLabel; }\n      if (typeof options.ariaLabelledBy === 'string') { componentRef.instance.ariaLabelledBy = options.ariaLabelledBy; }\n      if (typeof options.ariaDescribedBy === 'string') { componentRef.instance.ariaDescribedBy = options.ariaDescribedBy; }\n      if (typeof options.refocus === 'boolean') { componentRef.instance.refocus = options.refocus; }\n\n      const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n      this._document.body.appendChild(domElem);\n\n      return componentRef.instance;\n    }\n  }\n\n  private _addEvents(): boolean {\n    if (!this.isBrowser) {\n      return false;\n    }\n\n    window.addEventListener(NgxSmartModalConfig.prefixEvent + 'create', ((e: CustomEvent) => {\n      this._initModal(e.detail.instance);\n    }) as EventListener);\n\n    window.addEventListener(NgxSmartModalConfig.prefixEvent + 'delete', ((e: CustomEvent) => {\n      this._deleteModal(e.detail.instance);\n    }) as EventListener);\n\n    window.addEventListener(NgxSmartModalConfig.prefixEvent + 'open', ((e: CustomEvent) => {\n      this._openModal(e.detail.instance.modal, e.detail.extraData.top);\n    }) as EventListener);\n\n    window.addEventListener(NgxSmartModalConfig.prefixEvent + 'toggle', ((e: CustomEvent) => {\n      this._toggleModal(e.detail.instance.modal, e.detail.extraData.top);\n    }) as EventListener);\n\n    window.addEventListener(NgxSmartModalConfig.prefixEvent + 'close', ((e: CustomEvent) => {\n      this._closeModal(e.detail.instance.modal);\n    }) as EventListener);\n\n    window.addEventListener(NgxSmartModalConfig.prefixEvent + 'dismiss', ((e: CustomEvent) => {\n      this._dismissModal(e.detail.instance.modal);\n    }) as EventListener);\n\n    window.addEventListener('keyup', this._escapeKeyboardEvent);\n\n    return true;\n  }\n\n  private _initModal(modalInstance: ModalInstance) {\n    modalInstance.modal.layerPosition += this.getModalStackCount();\n    this.addModal(modalInstance, modalInstance.modal.force);\n\n    if (modalInstance.modal.autostart) {\n      this.open(modalInstance.id);\n    }\n  }\n\n  private _openModal(modal: NgxSmartModalComponent, top?: boolean): boolean {\n    if (modal.visible) {\n      return false;\n    }\n\n    this.lastElementFocused = document.activeElement;\n\n    if (modal.escapable) {\n      window.addEventListener('keyup', this._escapeKeyboardEvent);\n    }\n\n    if (modal.backdrop) {\n      window.addEventListener('keydown', this._trapFocusModal);\n    }\n\n    if (top) {\n      modal.layerPosition = this.getHigherIndex();\n    }\n\n    modal.addBodyClass();\n    modal.overlayVisible = true;\n    modal.visible = true;\n    modal.onOpen.emit(modal);\n    modal.markForCheck();\n\n    setTimeout(() => {\n      modal.openedClass = true;\n\n      if (modal.target) {\n        modal.targetPlacement();\n      }\n\n      modal.nsmDialog.first.nativeElement.setAttribute('role', 'dialog');\n      modal.nsmDialog.first.nativeElement.setAttribute('tabIndex', '-1');\n      modal.nsmDialog.first.nativeElement.setAttribute('aria-modal', 'true');\n      modal.nsmDialog.first.nativeElement.focus();\n\n      modal.markForCheck();\n      modal.onOpenFinished.emit(modal);\n    });\n\n    return true;\n  }\n\n  private _toggleModal(modal: NgxSmartModalComponent, top?: boolean): boolean {\n    if (modal.visible) {\n      return this._closeModal(modal);\n    } else {\n      return this._openModal(modal, top);\n    }\n  }\n\n  private _closeModal(modal: NgxSmartModalComponent): boolean {\n    if (!modal.openedClass) {\n      return false;\n    }\n\n    modal.openedClass = false;\n    modal.onClose.emit(modal);\n    modal.onAnyCloseEvent.emit(modal);\n\n    if (this.getOpenedModals().length < 2) {\n      modal.removeBodyClass();\n      window.removeEventListener('keyup', this._escapeKeyboardEvent);\n      window.removeEventListener('keydown', this._trapFocusModal);\n    }\n\n    setTimeout(() => {\n      modal.visibleChange.emit(modal.visible);\n      modal.visible = false;\n      modal.overlayVisible = false;\n      modal.nsmDialog.first.nativeElement.removeAttribute('tabIndex');\n      modal.markForCheck();\n      modal.onCloseFinished.emit(modal);\n      modal.onAnyCloseEventFinished.emit(modal);\n      if (modal.refocus) {\n        this.lastElementFocused.focus();\n      }\n    }, modal.hideDelay);\n\n    return true;\n  }\n\n  private _dismissModal(modal: NgxSmartModalComponent): boolean {\n    if (!modal.openedClass) {\n      return false;\n    }\n\n    modal.openedClass = false;\n    modal.onDismiss.emit(modal);\n    modal.onAnyCloseEvent.emit(modal);\n\n    if (this.getOpenedModals().length < 2) {\n      modal.removeBodyClass();\n    }\n\n    setTimeout(() => {\n      modal.visible = false;\n      modal.visibleChange.emit(modal.visible);\n      modal.overlayVisible = false;\n      modal.markForCheck();\n      modal.onDismissFinished.emit(modal);\n      modal.onAnyCloseEventFinished.emit(modal);\n    }, modal.hideDelay);\n\n    return true;\n  }\n\n  private _deleteModal(modalInstance: ModalInstance) {\n    this.removeModal(modalInstance.id);\n\n    if (!this.getModalStack().length) {\n      modalInstance.modal.removeBodyClass();\n    }\n  }\n\n  /**\n   * Resolve content according to the types\n   * @param content The modal content (string, templateRef or Component)\n   */\n  private _resolveNgContent<T>(content: Content<T>): any[][] | Text[][] {\n    if (typeof content === 'string') {\n      const element = this._document.createTextNode(content);\n      return [[element]];\n    }\n\n    if (content instanceof TemplateRef) {\n      const viewRef = content.createEmbeddedView(null as any);\n      this.appRef.attachView(viewRef);\n      return [viewRef.rootNodes];\n    }\n\n    return [];\n  }\n\n  /**\n   * Close the latest opened modal if escape key event is emitted\n   * @param event The Keyboard Event\n   */\n  private _escapeKeyboardEvent = (event: KeyboardEvent) => {\n    if (event.key === 'Escape') {\n      try {\n        const modal = this.getTopOpenedModal();\n\n        if (!modal.escapable) {\n          return false;\n        }\n\n        modal.onEscape.emit(modal);\n        this.closeLatestModal();\n\n        return true;\n      } catch (e) {\n        return false;\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Is current platform browser\n   */\n  private get isBrowser(): boolean {\n    return isPlatformBrowser(this._platformId);\n  }\n\n  /**\n   * While modal is open, the focus stay on it\n   * @param event The Keyboar dEvent\n   */\n  private _trapFocusModal = (event: KeyboardEvent) => {\n    if (event.key === 'Tab') {\n      try {\n        const modal = this.getTopOpenedModal();\n\n        if (!modal.nsmDialog.first.nativeElement.contains(document.activeElement)) {\n          event.preventDefault();\n          event.stopPropagation();\n          modal.nsmDialog.first.nativeElement.focus();\n        }\n\n        return true;\n      } catch (e) {\n        return false;\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Remove dynamically created modal from DOM\n   */\n  private _destroyModal(modal: NgxSmartModalComponent): void {\n    // Prevent destruction of the inline modals\n    if (modal.createFrom !== 'service') {\n      return;\n    }\n\n    this._document.body.removeChild(modal.elementRef.nativeElement);\n  }\n\n  /**\n   * getter function to avoid circular dependency error\n   * @returns ApplicationRef instance\n   * */\n  private get appRef(): ApplicationRef {\n    return this._injector.get(ApplicationRef);\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NgxSmartModalComponent } from '../components/ngx-smart-modal.component';\nimport { NgxSmartModalService } from '../services/ngx-smart-modal.service';\nimport { NgxSmartModalStackService } from '../services/ngx-smart-modal-stack.service';\n\n@NgModule({\n  declarations: [\n    NgxSmartModalComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    NgxSmartModalComponent\n  ]\n})\nexport class NgxSmartModalModule {\n  /**\n   * Use in AppModule: new instance of NgxSmartModal.\n   */\n  public static forRoot(): ModuleWithProviders<NgxSmartModalModule> {\n    return {\n      ngModule: NgxSmartModalModule,\n      providers: [\n        NgxSmartModalService,\n        NgxSmartModalStackService\n      ]\n    };\n  }\n\n  /**\n   * Use in features modules with lazy loading: new instance of NgxSmartModal.\n   */\n  public static forChild(): ModuleWithProviders<NgxSmartModalModule> {\n    return {\n      ngModule: NgxSmartModalModule,\n      providers: [\n        NgxSmartModalService,\n        NgxSmartModalStackService\n      ]\n    };\n  }\n\n  constructor(public service: NgxSmartModalService) { }\n}\n","/*\n * Public API Surface of ngx-smart-modal\n */\n\nexport * from './lib/services/ngx-smart-modal.service';\nexport * from './lib/components/ngx-smart-modal.component';\nexport * from './lib/modules/ngx-smart-modal.module';\nexport * from './lib/config/ngx-smart-modal.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxSmartModalStackService","i1.NgxSmartModalService"],"mappings":"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"}