{"version":3,"file":"cargos-cs-modal.mjs","sources":["../../../projects/cs-modal/src/lib/model/spinner.ts","../../../projects/cs-modal/src/lib/model/modal.ts","../../../projects/cs-modal/src/lib/utils/check-type.ts","../../../projects/cs-modal/src/lib/model/button-options.ts","../../../projects/cs-modal/src/lib/utils/button-icon.enum.ts","../../../projects/cs-modal/src/lib/utils/button-factory.ts","../../../projects/cs-modal/src/lib/cs-modal.service.ts","../../../projects/cs-modal/src/lib/utils/modal-instance.ts","../../../projects/cs-modal/src/lib/cs-modal.ts","../../../projects/cs-modal/src/lib/utils/dom.ts","../../../projects/cs-modal/src/lib/auto-close/auto-close.component.ts","../../../projects/cs-modal/src/lib/auto-close/auto-close.component.html","../../../projects/cs-modal/src/lib/spinner/spinner.component.ts","../../../projects/cs-modal/src/lib/spinner/spinner.component.html","../../../projects/cs-modal/src/lib/modal-content/modal-content.component.ts","../../../projects/cs-modal/src/lib/modal-content/modal-content.component.html","../../../projects/cs-modal/src/lib/directives/bg-dimiss-animated.directive.ts","../../../projects/cs-modal/src/lib/directives/cs-modal-visibility.directive.ts","../../../projects/cs-modal/src/lib/directives/modal.directive.ts","../../../projects/cs-modal/src/lib/maximize/maximize.component.ts","../../../projects/cs-modal/src/lib/maximize/maximize.component.html","../../../projects/cs-modal/src/lib/keydown-events/keydown-events.component.ts","../../../projects/cs-modal/src/lib/keydown-events/keydown-events.component.html","../../../projects/cs-modal/src/lib/cs-modal.component.ts","../../../projects/cs-modal/src/lib/cs-modal.component.html","../../../projects/cs-modal/src/lib/cs-modal.module.ts","../../../projects/cs-modal/src/public-api.ts","../../../projects/cs-modal/src/cargos-cs-modal.ts"],"sourcesContent":["export enum Spinner {\n  dots = 'dots',\n  circle = 'circle'\n}\n\nexport type SpinnerType = keyof typeof Spinner;\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { ButtonOptions } from './button-options';\nimport { FunctionAny, FunctionVoid } from './function-type';\nimport { ModalContent, ModalContentInstance } from './modal-content';\nimport { Spinner, SpinnerType } from './spinner';\n\nexport class Modal {\n\n  private visible: BehaviorSubject<boolean>;\n  private visible$: Observable<boolean>;\n  public contentInstance: ModalContentInstance;\n  public backgroundColor: string;\n\n  constructor(\n    public title: string = '',\n    public titleClass: string = '',\n    public titleAlign: 'left' | 'center' | 'right' = 'center',\n    public content: ModalContent = '',\n    public contentAlign: 'left' | 'center' | 'right' = 'center',\n    public type: 'default' | 'warning' | 'error' | 'success' | 'info' = 'default',\n    public spinner: SpinnerType = Spinner.dots,\n    public buttons: ButtonOptions[] = [],\n    public buttonsAlign: 'left' | 'center' | 'right' | 'space-evenly' = 'center',\n    public iconName: string = '',\n    public iconFontClass: string = 'material-icons',\n    public iconAlign: 'left' | 'center' | 'right' = 'center',\n    public bgTheme: 'black' | 'white' = 'black',\n    public theme: 'sprintpass' = 'sprintpass',\n    public animation: 'scale' | 'fade' = 'fade',\n    public closeAnimation: 'scale' | 'fade' = 'fade',\n    public closeIcon: FunctionAny = null,\n    public closeIconName: string = 'close',\n    public columnClass: 'xsmall' | 'small' | 'medium' | 'large' | 'cover' = 'small',\n    public fontSize: 'small' | 'medium' | 'large' = 'small',\n    public autoClose: number = 0,\n    public autoCloseAction: FunctionAny | string = '',\n    public backgroundDismiss: FunctionAny = null,\n    public backgroundDismissAnimation: 'none' | 'shake' = 'shake',\n    public escapeKey: FunctionAny = null,\n    public maximize: boolean = false,\n    public onContentReady: FunctionVoid = null,\n    public onContentError: FunctionVoid = null,\n    public zIndex: number = 1000,\n    visible: boolean = false\n  ) {\n    this.visible = new BehaviorSubject<boolean>(visible);\n    this.visible$ = this.visible.asObservable();\n    this.contentInstance = null;\n    this.backgroundColor = this.buildBackgroundColor();\n  }\n\n  static fromJson({\n    title,\n    titleClass,\n    titleAlign,\n    content,\n    contentAlign,\n    type,\n    spinner,\n    buttons,\n    buttonsAlign,\n    iconName,\n    iconFontClass,\n    iconAlign,\n    bgTheme,\n    theme,\n    animation,\n    closeAnimation,\n    closeIcon,\n    closeIconName,\n    columnClass,\n    fontSize,\n    autoClose,\n    autoCloseAction,\n    backgroundDismiss,\n    backgroundDismissAnimation,\n    escapeKey,\n    maximize,\n    onContentReady,\n    onContentError,\n    zIndex,\n    visible\n  }: { [propName: string]: any; }): Modal {\n    return new Modal(\n      title,\n      titleClass,\n      titleAlign,\n      content,\n      contentAlign,\n      type,\n      spinner,\n      buttons,\n      buttonsAlign,\n      iconName,\n      iconFontClass,\n      iconAlign,\n      bgTheme,\n      theme,\n      animation,\n      closeAnimation,\n      closeIcon,\n      closeIconName,\n      columnClass,\n      fontSize,\n      autoClose,\n      autoCloseAction,\n      backgroundDismiss,\n      backgroundDismissAnimation,\n      escapeKey,\n      maximize,\n      onContentReady,\n      onContentError,\n      zIndex,\n      visible\n    );\n  }\n\n  private buildBackgroundColor(): string {\n    const cssVar = `--csmodal-color-overlay-${this.bgTheme}`;\n\n    return `rgba(var(${cssVar}-r), var(${cssVar}-g), var(${cssVar}-b), var(--csmodal-color-overlay-a))`;\n  }\n\n  getVisibility(): Observable<boolean> {\n    return this.visible$;\n  }\n\n  close() {\n    this.visible.next(false);\n  }\n\n  requireClose(callback?: FunctionAny) {\n    return (callback && callback(this)) || this.close();\n  }\n\n  clearModal() {\n    const defaultModal = new Modal();\n    delete defaultModal.visible;\n    delete defaultModal.visible$;\n\n    Object.assign(this, defaultModal);\n  }\n\n  findButton(name: string): ButtonOptions {\n    return this.buttons.find(button => button.name === name);\n  }\n\n  updateButtons(names: string[], property: string, value: any) {\n    this.buttons.forEach(button => {\n      if (property in button && names.includes(button.name)) {\n        button[property] = value;\n      }\n    });\n  }\n\n  updateAllButtons(property: string, value: any) {\n    this.buttons.forEach(button => {\n      if (property in button) {\n        button[property] = value;\n      }\n    });\n  }\n\n  hideButtons(names: string[]) {\n    this.updateButtons(names, 'isHidden', true);\n  }\n\n  hideAllButtons() {\n    this.updateAllButtons('isHidden', true);\n  }\n\n  showButtons(names: string[]) {\n    this.updateButtons(names, 'isHidden', false);\n  }\n\n  showAllButtons() {\n    this.updateAllButtons('isHidden', false);\n  }\n\n  areAllButtonsHidden(): boolean {\n    return this.buttons.every(button => button.isHidden);\n  }\n\n  disableButtons(names: string[]) {\n    this.updateButtons(names, 'isDisabled', true);\n  }\n\n  disableAllButtons() {\n    this.updateAllButtons('isDisabled', true);\n  }\n\n  enableButtons(names: string[]) {\n    this.updateButtons(names, 'isDisabled', false);\n  }\n\n  enableAllButtons() {\n    this.updateAllButtons('isDisabled', false);\n  }\n\n  patchFromJson({\n    title = this.title,\n    titleClass = this.titleClass,\n    titleAlign = this.titleAlign,\n    content = this.content,\n    contentAlign = this.contentAlign,\n    type = this.type,\n    spinner = this.spinner,\n    buttons = this.buttons,\n    buttonsAlign = this.buttonsAlign,\n    iconName = this.iconName,\n    iconFontClass = this.iconFontClass,\n    iconAlign = this.iconAlign,\n    bgTheme = this.bgTheme,\n    theme = this.theme,\n    animation = this.animation,\n    closeAnimation = this.closeAnimation,\n    closeIcon = this.closeIcon,\n    closeIconName = this.closeIconName,\n    columnClass = this.columnClass,\n    fontSize = this.fontSize,\n    autoClose = this.autoClose,\n    autoCloseAction = this.autoCloseAction,\n    backgroundDismiss = this.backgroundDismiss,\n    backgroundDismissAnimation = this.backgroundDismissAnimation,\n    escapeKey = this.escapeKey,\n    maximize = this.maximize,\n    onContentReady = this.onContentReady,\n    zIndex = this.zIndex,\n    onContentError = this.onContentError,\n    visible = false\n  }): Modal {\n    return new Modal(\n      title,\n      titleClass,\n      titleAlign,\n      content,\n      contentAlign,\n      type,\n      spinner,\n      buttons,\n      buttonsAlign,\n      iconName,\n      iconFontClass,\n      iconAlign,\n      bgTheme,\n      theme,\n      animation,\n      closeAnimation,\n      closeIcon,\n      closeIconName,\n      columnClass,\n      fontSize,\n      autoClose,\n      autoCloseAction,\n      backgroundDismiss,\n      backgroundDismissAnimation,\n      escapeKey,\n      maximize,\n      onContentReady,\n      onContentError,\n      zIndex,\n      visible\n    );\n  }\n}\n","export const isFunction = (arg): boolean => {\n  return !!(arg && arg.constructor && arg.call && arg.apply);\n}","import { FunctionVoid, FunctionBoolean } from './function-type';\nimport { SpinnerType, Spinner } from './spinner';\n\nexport class ButtonOptions {\n\n  public loading: boolean;\n\n  constructor(\n    public name: string,\n    public text: string,\n    public action: FunctionVoid | FunctionBoolean = () => { },\n    public btnClass: string = '',\n    public iconName: string = '',\n    public iconFontClass: string = '',\n    public isHidden: boolean = false,\n    public isDisabled: boolean = false,\n    public spinner: SpinnerType = Spinner.circle\n  ) { }\n\n  static fromJson({\n    name,\n    text,\n    action,\n    btnClass,\n    iconName,\n    iconFontClass,\n    isHidden,\n    isDisabled,\n    spinner\n  }: ButtonOptionsProperties): ButtonOptions {\n    return new ButtonOptions(\n      name,\n      text,\n      action,\n      btnClass,\n      iconName,\n      iconFontClass,\n      isHidden,\n      isDisabled,\n      spinner\n    );\n  }\n\n  patchFromJson({\n    name = this.name,\n    text = this.text,\n    action = this.action,\n    btnClass = this.btnClass,\n    iconName = this.iconName,\n    iconFontClass = this.iconFontClass,\n    isHidden = this.isHidden,\n    isDisabled = this.isDisabled,\n    spinner = this.spinner\n  }: ButtonOptionsProperties): ButtonOptions {\n    return new ButtonOptions(\n      name,\n      text,\n      action,\n      btnClass,\n      iconName,\n      iconFontClass,\n      isHidden,\n      isDisabled,\n      spinner\n    );\n  }\n\n  setLoading() {\n    this.loading = true;\n    this.disable();\n  }\n\n  removeLoading() {\n    this.loading = false;\n    this.enable();\n  }\n\n  disable() {\n    this.isDisabled = true;\n  }\n\n  enable() {\n    this.isDisabled = false;\n  }\n\n  show() {\n    this.isHidden = false;\n  }\n\n  hide() {\n    this.isHidden = true;\n  }\n}\n\nexport class ButtonOptionsProperties {\n  name?: string;\n  text?: string;\n  action?: FunctionVoid | FunctionBoolean;\n  btnClass?: string;\n  iconName?: string;\n  iconFontClass?: string;\n  isHidden?: boolean;\n  isDisabled?: boolean;\n  spinner?: SpinnerType;\n}\n","export enum ButtonIcon {\n  confirm = 'check',\n  cancel = 'close'\n}\n","import { ButtonOptions, ButtonOptionsProperties } from '../model/button-options';\nimport { ButtonIcon } from './button-icon.enum';\n\nconst defaultClassPrefix = 'cs-modal__button--';\nconst parseExtrasOrAction = (extrasOrAction: ButtonOptionsProperties | ButtonOptionsProperties['action']): ButtonOptionsProperties => {\n  if (!extrasOrAction) {\n    return {};\n  }\n\n  if (extrasOrAction instanceof Function) {\n    return {\n      action: extrasOrAction\n    };\n  }\n\n  return extrasOrAction;\n};\n\nfunction ButtonFactory(name: string, extras?: ButtonOptionsProperties, classPrefix?: string): ButtonOptions;\nfunction ButtonFactory(name: string, action?: ButtonOptionsProperties['action'], classPrefix?: string): ButtonOptions;\nfunction ButtonFactory(name: string, extrasOrAction: ButtonOptionsProperties | ButtonOptionsProperties['action'] = {}, classPrefix: string = defaultClassPrefix): ButtonOptions {\n  return ButtonOptions.fromJson({\n    name,\n    text: `${name.charAt(0).toUpperCase()}${name.slice(1)}`,\n    btnClass: `${classPrefix}${name}`,\n    iconName: ButtonIcon[name] || '',\n    ...parseExtrasOrAction(extrasOrAction)\n  });\n};\n\nexport { ButtonFactory };\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { Modal } from './model/modal';\nimport { ModalParams } from './model/modal-params';\nimport { isFunction } from './utils/check-type';\nimport { ButtonFactory } from './utils/button-factory';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CsModalService {\n\n  private currentSettings: Modal;\n  private settings: Subject<Modal>;\n  protected settings$: Observable<Modal>;\n  public customSettings: ModalParams = {};\n\n  constructor() {\n    this.currentSettings = new Modal();\n    this.settings = new Subject();\n    this.settings$ = this.settings.asObservable();\n  }\n  private parseSettings(settings: ModalParams): ModalParams {\n    const close = (modal: Modal) => { modal.close(); };\n    const parseTypeBoolOrFunction = (param: boolean | Function) => {\n      if (typeof param === 'boolean') {\n        return param ? close : null;\n      }\n\n      if (isFunction(param)) {\n        return (modal: Modal) => { param(modal) };\n      }\n\n      return null;\n    };\n\n    const closeIcon = parseTypeBoolOrFunction(\n      (isFunction(settings.closeIcon) || typeof settings.closeIcon === 'boolean') ? settings.closeIcon : true\n    );\n    const backgroundDismiss = parseTypeBoolOrFunction(settings.backgroundDismiss);\n    const escapeKey = parseTypeBoolOrFunction(settings.escapeKey);\n\n    return {\n      ...settings,\n      closeIcon,\n      backgroundDismiss,\n      escapeKey\n    };\n  }\n\n  private validateSettingsType(settings: ModalParams | string): ModalParams {\n    if (settings) {\n      return typeof settings === 'string' ? {\n        content: settings\n      } : settings;\n    }\n\n    return {};\n  }\n\n  getSettings(): Observable<Modal> {\n    return this.settings$;\n  }\n\n  show(settings: ModalParams): Modal {\n    this.currentSettings = Modal.fromJson({\n      ...this.customSettings,\n      ...this.parseSettings(settings),\n      visible: true\n    });\n    this.settings.next(this.currentSettings);\n\n    return this.currentSettings;\n  }\n\n  confirm(settings: ModalParams): Modal {\n    return this.show(settings)\n  }\n\n  success(settings: ModalParams | string): Modal {\n    return this.confirm({\n      title: 'Success',\n      iconName: 'check_circle',\n      buttons: [\n        ButtonFactory('confirm')\n      ],\n      escapeKey: true,\n      ...this.validateSettingsType(settings),\n      type: 'success'\n    });\n  }\n\n  warning(settings: ModalParams | string): Modal {\n    return this.confirm({\n      title: 'Warning',\n      iconName: 'warning',\n      buttons: [\n        ButtonFactory('confirm')\n      ],\n      escapeKey: true,\n      ...this.validateSettingsType(settings),\n      type: 'warning'\n    });\n  }\n\n  error(settings: ModalParams | string): Modal {\n    return this.confirm({\n      title: 'Error',\n      iconName: 'error',\n      buttons: [\n        ButtonFactory('confirm')\n      ],\n      escapeKey: true,\n      ...this.validateSettingsType(settings),\n      type: 'error'\n    });\n  }\n\n  close() {\n    if (this.currentSettings && this.currentSettings.close) {\n      this.currentSettings.close();\n    }\n  }\n}\n","import { Injector } from '@angular/core';\nimport { CsModalService } from '../cs-modal.service';\nimport { ModalParams } from '../model/modal-params';\n\nexport class CsModal extends CsModalService { }\n\nexport class ModalInstance {\n\n    constructor() { }\n\n    static generate(customSettings: ModalParams = {}) {\n        const injector = Injector.create({\n            providers: [\n                {\n                    provide: CsModal,\n                    useClass: CsModalService,\n                    deps: []\n                }\n            ]\n        });\n\n        const csModal = injector.get(CsModal);\n        csModal.customSettings = customSettings;\n\n        return csModal;\n    }\n\n}\n","import { ModalInstance } from './utils/modal-instance';\n\nconst csModal = ModalInstance.generate();\n\nexport { csModal };\n","export const focusableSelectors = [\n  'a[href]',\n  'area[href]',\n  'input:not([disabled])',\n  'select:not([disabled])',\n  'textarea:not([disabled])',\n  'button:not([disabled])',\n  '[tabindex]:not([tabindex=\"-1\"])',\n  'iframe',\n  'object',\n  'embed',\n  '[contenteditable]',\n  'audio[controls]',\n  'video[controls]',\n];\n\nexport const isVisible = (element: HTMLElement): boolean =>\n  !!(\n    element\n    && (element.offsetWidth || element.offsetHeight || element.getClientRects().length)\n    && window.getComputedStyle(element).display !== 'none'\n    && window.getComputedStyle(element).visibility !== 'hidden'\n  );\n\nexport const getFocusableElements = (rootElement: HTMLElement): HTMLElement[] => {\n  return Array.from(\n    rootElement.querySelectorAll<HTMLElement>(focusableSelectors.join(','))\n  )\n    .filter(element =>\n      element.getAttribute('tabindex') !== '-1'\n      && isVisible(element)\n    )\n    .sort((a, b) => {\n      const tabIndexA = parseInt(a.getAttribute('tabindex')) || 0;\n      const tabIndexB = parseInt(b.getAttribute('tabindex')) || 0;\n\n      return tabIndexB - tabIndexA;\n    });\n};\n\nexport const getFirstFocusableElement = (rootElement: HTMLElement): HTMLElement => {\n  return getFocusableElements(rootElement)[0];\n};","import { Component, Input, OnDestroy } from '@angular/core';\nimport { Observable, Subscription, timer } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { Modal } from '../model/modal';\n\n@Component({\n  selector: 'cs-modal-auto-close',\n  templateUrl: './auto-close.component.html'\n})\nexport class AutoCloseComponent implements OnDestroy {\n\n  public missingSeconds: number;\n  public progress: number;\n  private _settings: Modal;\n  private autoCloseSub: Subscription;\n  private _aliveAutoClose$: Observable<void>;\n  private aliveAutoCloseSub: Subscription;\n\n  @Input()\n  set settings(settings: Modal) {\n    this.reset();\n    this._settings = settings;\n    if (settings.autoClose) {\n      this.subscribeAutoClose();\n    }\n  }\n\n  get settings(): Modal { return this._settings; }\n\n  @Input('unsubscribe')\n  set aliveAutoClose$(aliveAutoClose$: Observable<void>) {\n    this._aliveAutoClose$ = aliveAutoClose$;\n    this.subscribeAliveAutoClose();\n  }\n\n  get aliveAutoClose$(): Observable<void> { return this._aliveAutoClose$; }\n\n  constructor() { }\n\n  ngOnDestroy(): void {\n    this.reset();\n    this.unsubscribeAliveAutoClose();\n  }\n\n  private reset(): void {\n    this.unsubscribeAutoClose();\n    this.missingSeconds = 0;\n    this.progress = 0;\n  }\n\n  private unsubscribeAliveAutoClose(): void {\n    this.aliveAutoCloseSub && this.aliveAutoCloseSub.unsubscribe();\n  }\n\n  private subscribeAliveAutoClose(): void {\n    this.unsubscribeAliveAutoClose();\n\n    this.aliveAutoCloseSub = this.aliveAutoClose$\n      .subscribe(() => {\n        this.unsubscribeAutoClose();\n      });\n  }\n\n  private unsubscribeAutoClose(): void {\n    this.autoCloseSub && this.autoCloseSub.unsubscribe();\n  }\n\n  private subscribeAutoClose(): void {\n    const seconds = Math.floor(this.settings.autoClose / 1000) + 1;\n    const initialDelay = this.settings.autoClose % 1000;\n\n    this.missingSeconds = Math.round(this.settings.autoClose / 100) / 10;\n\n    this.autoCloseSub = timer(initialDelay, 1000).pipe(\n      take(seconds),\n      // takeUntil(this.unsubscribe$),\n    )\n      .subscribe(\n        value => {\n          if (value === 0) {\n            this.missingSeconds = Math.floor(this.missingSeconds);\n          } else if (this.missingSeconds > 0) {\n            this.missingSeconds -= 1;\n          } else {\n            this.missingSeconds = 0;\n          }\n\n          this.progress = this.calculateProgress(this.settings.autoClose / 1000, this.missingSeconds);\n        },\n        error => {\n          console.log(error);\n        },\n        () => {\n          this.missingSeconds = 0;\n          this.progress = 100;\n          if (this.settings.autoCloseAction) {\n            if (typeof this.settings.autoCloseAction === 'string') {\n              const buttonFound = this.settings.buttons.find(button => {\n                return button.name === this.settings.autoCloseAction;\n              });\n\n              if (buttonFound) {\n                this.settings.requireClose(buttonFound.action);\n              }\n            } else {\n              this.settings.autoCloseAction(this.settings);\n            }\n          } else {\n            this.settings.close();\n          }\n        }\n      );\n  }\n\n  calculateProgress(totalSeconds: number, missingSeconds: number): number {\n    if (missingSeconds > totalSeconds) {\n      return 0;\n    }\n\n    if (missingSeconds <= 0) {\n      return 100;\n    }\n\n    missingSeconds -= 1;\n\n    return (1 - (missingSeconds / totalSeconds)) * 100;\n  }\n\n}\n","<div class=\"cs-modal__progress\" *ngIf=\"settings.autoClose\">\n  <div class=\"cs-modal__progress__bar\" [ngStyle]=\"{'width': progress + '%'}\"></div>\n</div>","import { Component, HostBinding, Input } from '@angular/core';\nimport { SpinnerType } from '../model/spinner';\n\n@Component({\n  selector: 'cs-spinner',\n  templateUrl: './spinner.component.html'\n})\nexport class SpinnerComponent {\n\n  public spinnerClass: string;\n  @Input() spinner: SpinnerType;\n  @Input() spinnerSize: 'small' | 'default' = 'default';\n  @Input() transparency: boolean;\n  @HostBinding('class') get hostClasses(): string {\n    return this.spinnerClass;\n  };\n\n  constructor() { }\n\n  ngOnChanges() {\n    const transparencyClass = this.transparency ? '--transparency' : '';\n    this.spinnerClass = `cs-modal__spinner--${this.spinner}--size-${this.spinnerSize}${transparencyClass}`;\n  }\n\n}\n","<ng-container [ngSwitch]=\"spinner\">\n  <ng-container *ngSwitchCase=\"'dots'\">\n    <div class=\"{{spinnerClass}}__dot\"></div>\n    <div class=\"{{spinnerClass}}__dot\"></div>\n    <div class=\"{{spinnerClass}}__dot\"></div>\n  </ng-container>\n</ng-container>","import { Component, ComponentRef, Input, OnDestroy, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Observable, Subscription, isObservable } from 'rxjs';\nimport { ModalContentAsyncType, ModalContentComponentClassType } from '../model';\nimport { Modal } from '../model/modal';\n\n@Component({\n  selector: 'cs-modal-content',\n  templateUrl: './modal-content.component.html'\n})\nexport class ModalContentComponent implements OnDestroy {\n\n  private _settings: Modal;\n  private _aliveContent$: Observable<void>;\n  private aliveContentSub: Subscription;\n  private contentSub: Subscription;\n  public content: string;\n  public loading: boolean;\n  public spinner: string;\n  public componentRef: ComponentRef<any>;\n\n  @Input()\n  set settings(settings: Modal) {\n    this._settings = settings;\n    this.spinner = settings.spinner;\n    this.subscribeContent();\n  }\n\n  get settings(): Modal { return this._settings; }\n\n  @Input('unsubscribe')\n  set aliveContent$(aliveContent$: Observable<void>) {\n    this._aliveContent$ = aliveContent$;\n    this.subscribeAliveContent();\n  }\n\n  get aliveContent$(): Observable<void> { return this._aliveContent$; }\n\n  @ViewChild('componentContainer', { read: ViewContainerRef, static: true }) container;\n\n  constructor() {\n    this.content = '';\n    this.loading = false;\n  }\n\n  ngOnDestroy(): void {\n    this.componentRef && this.componentRef.destroy();\n    this.unsubscribeAliveContent();\n    this.unsubscribeContent();\n  }\n\n  private reset(): void {\n    this.unsubscribeContent();\n    this.content = '';\n    this.loading = false;\n    this.settings.contentInstance = null;\n    this.container.clear();\n  }\n\n  private executeContentReady(): void {\n    if (this.settings.onContentReady) {\n      this.settings.onContentReady(this.settings);\n    }\n  }\n\n  private executeContentError(): void {\n    if (this.settings.onContentError) {\n      this.settings.onContentError(this.settings);\n    }\n  }\n\n  private unsubscribeAliveContent(): void {\n    this.aliveContentSub && this.aliveContentSub.unsubscribe();\n  }\n\n  private subscribeAliveContent(): void {\n    this.unsubscribeAliveContent();\n\n    this.aliveContentSub = this.aliveContent$\n      .subscribe(() => {\n        this.unsubscribeContent();\n      });\n  }\n\n  private unsubscribeContent(): void {\n    this.contentSub && this.contentSub.unsubscribe();\n  }\n\n  private renderComponentRef<T>(componentRef: ComponentRef<T>): void {\n    this.content = '';\n    this.componentRef = componentRef;\n    this.settings.contentInstance = this.componentRef.instance;\n    this.executeContentReady();\n  }\n\n  private renderComponent<T>({ componentClass, options }: ModalContentComponentClassType): void {\n    this.renderComponentRef(this.container.createComponent(componentClass, options));\n  }\n\n  private renderContentAsync(observable: Observable<string>): void {\n    this.loading = true;\n\n    this.contentSub = observable\n      .subscribe(result => {\n        this.loading = false;\n        this.content = result;\n        this.executeContentReady();\n      }, () => {\n        this.loading = false;\n        this.content = '';\n        this.executeContentError();\n      });\n  }\n\n  private isFunction(obj): boolean {\n    return !!(obj && obj.constructor && obj.call && obj.apply);\n  }\n\n  private subscribeContent(): void {\n    this.reset();\n\n    if (typeof this.settings.content === 'string') {\n      this.content = this.settings.content;\n      this.executeContentReady();\n\n      return;\n    }\n\n    const content = this.settings.content;\n\n    if (content) {\n      if ((<ModalContentComponentClassType>content).componentClass) {\n        this.renderComponent((<ModalContentComponentClassType>content));\n\n        return;\n      }\n\n      if (this.isFunction((<ModalContentAsyncType>content).async) || this.isFunction(content)) {\n        const observable = this.isFunction(content) ? (<ModalContentAsyncType['async']>content)(this.settings) : (<ModalContentAsyncType>content).async(this.settings);\n\n        if (isObservable(observable)) {\n          this.renderContentAsync(observable);\n\n          return;\n        }\n      }\n    }\n\n    this.content = '';\n    this.executeContentError();\n  }\n}\n","<div class=\"cs-modal__loading\" *ngIf=\"loading; else modalContent\">\n  <cs-spinner [spinner]=\"spinner\"></cs-spinner>\n</div>\n<ng-template #modalContent>\n  <div class=\"cs-modal__content__wrapper\" [innerHTML]=\"content\" *ngIf=\"content\"></div>\n</ng-template>\n<ng-template #componentContainer></ng-template>","import { Directive, Input, ElementRef, HostListener, Renderer2 } from '@angular/core';\nimport { Modal } from '../model/modal';\n\n@Directive({\n  selector: '[csBgDimissAnimated]'\n})\nexport class BgDimissAnimatedDirective {\n\n  private animationTimerID: number;\n  private animationDuration: number;\n\n  @Input('csBgDimissAnimated') settings: Modal;\n\n  constructor(\n    private el: ElementRef,\n    private renderer: Renderer2\n  ) {\n    this.animationDuration = 500;\n  }\n\n  @HostListener('click') onClick() {\n    if (this.settings.backgroundDismiss) {\n      this.settings.backgroundDismiss(this.settings);\n    } else {\n      this.startAnimation();\n    }\n  }\n\n  startAnimation() {\n    this.stopAnimation();\n    this.renderer.addClass(this.el.nativeElement, `bg-dimiss-animation-${this.settings.backgroundDismissAnimation}`);\n\n    this.animationTimerID = window.setTimeout(() => {\n      this.renderer.removeClass(this.el.nativeElement, `bg-dimiss-animation-${this.settings.backgroundDismissAnimation}`);\n    }, this.animationDuration);\n  }\n\n  stopAnimation() {\n    window.clearTimeout(this.animationTimerID);\n    this.renderer.removeClass(this.el.nativeElement, `bg-dimiss-animation-${this.settings.backgroundDismissAnimation}`);\n  }\n\n}\n","import { Directive, OnDestroy, Input, ElementRef, Renderer2 } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { Modal } from '../model/modal';\n\n@Directive({\n  selector: '[csModalVisibility]'\n})\nexport class CsModalVisibilityDirective implements OnDestroy {\n\n  private _settings: Modal;\n  private visibleSub: Subscription;\n  private animationTimerID: number;\n  private animationDuration: number;\n\n  @Input('csModalVisibility')\n  set settings(settings: Modal) {\n    this.stopAnimation();\n    this._settings = settings;\n    this.subscribeVisibility();\n  }\n\n  get settings(): Modal { return this._settings; }\n\n  constructor(\n    private el: ElementRef,\n    private renderer: Renderer2\n  ) {\n    this.animationDuration = 300;\n  }\n\n  ngOnDestroy() {\n    this.unsubscribeVisibility();\n  }\n\n  subscribeVisibility() {\n    this.unsubscribeVisibility();\n    this.visibleSub = this.settings.getVisibility()\n      .subscribe(visible => {\n        if (visible) {\n          this.onVisible();\n        } else {\n          this.onHidden();\n        }\n      });\n  }\n\n  unsubscribeVisibility() {\n    this.visibleSub && this.visibleSub.unsubscribe();\n  }\n\n  onVisible() {\n    const animation = `animation-${this.settings.animation}`;\n    this.stopAnimation();\n    this.addClassName('visible');\n    this.addClassName(animation);\n\n    this.animationTimerID = window.setTimeout(() => {\n      this.removeClassName(animation);\n    }, this.animationDuration);\n  }\n\n  onHidden() {\n    const animation = `close-animation-${this.settings.closeAnimation}`;\n    this.stopAnimation();\n    this.addClassName(animation);\n    this.removeClassName('visible');\n\n    this.animationTimerID = window.setTimeout(() => {\n      this.settings.clearModal();\n      this.removeClassName(animation);\n    }, this.animationDuration);\n  }\n\n  addClassName(className: string) {\n    this.renderer.addClass(this.el.nativeElement, className);\n  }\n\n  removeClassName(className: string) {\n    this.renderer.removeClass(this.el.nativeElement, className);\n  }\n\n  stopAnimation() {\n    window.clearTimeout(this.animationTimerID);\n    if (this.settings) {\n      this.removeClassName(`animation-${this.settings.animation}`);\n      this.removeClassName(`close-animation-${this.settings.closeAnimation}`);\n    }\n  }\n\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n  // tslint:disable-next-line: directive-selector\n  selector: '.cs-modal-overlay'\n})\nexport class ModalDirective {\n\n  @HostBinding('class.cs-modal--maximize') public maximizeClassActive = false;\n\n  addMaximizeClass() {\n    this.maximizeClassActive = true;\n  }\n\n  removeMaximizeClass() {\n    this.maximizeClassActive = false;\n  }\n\n  constructor() { }\n\n}\n","import { Component, OnDestroy, Input, Host } from '@angular/core';\nimport { Modal } from '../model/modal';\nimport { ModalDirective } from '../directives/modal.directive';\n\n@Component({\n  selector: 'cs-maximize',\n  templateUrl: './maximize.component.html'\n})\nexport class MaximizeComponent implements OnDestroy {\n\n  private _settings: Modal;\n  public maximized: boolean;\n\n  @Input()\n  set settings(settings: Modal) {\n    this.reset();\n    this._settings = settings;\n  }\n\n  get settings(): Modal { return this._settings; }\n\n  constructor(\n    @Host() private modalDirectiveQuery: ModalDirective\n  ) { }\n\n  ngOnDestroy() {\n    this.reset();\n  }\n\n  private reset() {\n    this.maximized = false;\n    this.modalDirectiveQuery.removeMaximizeClass();\n  }\n\n  toggleMaximize() {\n    if (this.maximized) {\n      this.maximized = false;\n      this.modalDirectiveQuery.removeMaximizeClass();\n    } else {\n      this.maximized = true;\n      this.modalDirectiveQuery.addMaximizeClass();\n    }\n  }\n\n}\n","<button type=\"button\" class=\"cs-modal__maximize\" *ngIf=\"settings.maximize\" (click)=\"toggleMaximize()\" title=\"{{maximized ? 'Minimize' : 'Maximize'}}\">\n  <i [class]=\"settings.iconFontClass\">{{maximized ? 'minimize' : 'maximize'}}</i>\n</button>","import { Component, EventEmitter, HostListener, Output } from '@angular/core';\n\n@Component({\n    selector: 'cs-keydown-events',\n    templateUrl: './keydown-events.component.html'\n})\nexport class KeydownEventsComponent {\n\n    @Output() event = new EventEmitter<KeyboardEvent>();\n\n    @HostListener('document:keydown', ['$event'])\n    handleKeyDown(event: KeyboardEvent) {\n        this.event.emit(event);\n    }\n}\n","","import { Component, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Observable, Subject, Subscription, isObservable } from 'rxjs';\nimport { finalize, takeUntil } from 'rxjs/operators';\nimport { ButtonOptions } from './model/button-options';\nimport { Modal } from './model/modal';\nimport { getFirstFocusableElement, getFocusableElements } from './utils/dom';\n\n@Component({\n  selector: 'cs-modal',\n  templateUrl: './cs-modal.component.html',\n  styles: []\n})\nexport class CsModalComponent implements OnInit, OnDestroy {\n\n  public settings: Modal;\n  public opened: boolean;\n  private settingsSub: Subscription;\n  public settingsObservablesUnsubscribe: Subject<void>;\n  private focusedElementBeforeOpen: HTMLElement;\n\n  @Input('settings') settings$: Observable<Modal>;\n\n  constructor(\n    private el: ElementRef\n  ) {\n    this.settings = new Modal();\n    this.settingsObservablesUnsubscribe = new Subject<void>();\n  }\n\n  ngOnInit(): void {\n    this.subscribeSettings();\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribeSettings();\n    this.settingsObservablesUnsubscribe.next(null);\n    this.settingsObservablesUnsubscribe.complete();\n  }\n\n  handleKeyDown(event: KeyboardEvent): void {\n    if (this.checkIfListenKeyboardEvents(<HTMLElement>event.target)) {\n      switch (event.key) {\n        case 'Escape':\n          if (this.settings.escapeKey) {\n            this.settings.escapeKey(this.settings);\n            event.stopPropagation();\n            event.preventDefault();\n          }\n\n          break;\n        case 'Tab':\n          this.handleTab(event);\n          break;\n      }\n    }\n  }\n\n  handleTab(event: KeyboardEvent): void {\n    const targetElement = <HTMLElement>event.target\n    const focusableElements = getFocusableElements(this.el.nativeElement);\n\n    const elementIndex = focusableElements.findIndex(element => element === targetElement);\n    const totalElements = focusableElements.length;\n    const increment = event.shiftKey ? -1 : 1;\n\n    focusableElements[(Math.max(-1, elementIndex + increment) + totalElements) % totalElements].focus();\n\n    event.stopPropagation();\n    event.preventDefault();\n  }\n\n  checkIfListenKeyboardEvents(target: HTMLElement): boolean {\n    if (!this.opened) {\n      return false;\n    }\n\n    if (this.el.nativeElement.contains(target)) {\n      return true;\n    }\n\n    return !target.closest('[role=\"dialog\"]');\n  }\n\n  unsubscribeSettings(): void {\n    this.settingsSub && this.settingsSub.unsubscribe();\n  }\n\n  subscribeSettings(): void {\n    this.unsubscribeSettings();\n    this.settingsSub = this.settings$.subscribe(settings => {\n      this.settingsObservablesUnsubscribe.next(null);\n      this.settings = settings;\n      this.subscribeVisibility();\n    });\n  }\n\n  subscribeVisibility(): void {\n    this.settings\n      .getVisibility()\n      .pipe(\n        takeUntil(this.settingsObservablesUnsubscribe)\n      )\n      .subscribe(visible => {\n        if (visible) {\n          this.focusedElementBeforeOpen = <HTMLElement>document.activeElement;\n\n          window.setTimeout(() => {\n            this.opened = true;\n            this.focusedElementBeforeOpen && this.focusedElementBeforeOpen.blur();\n            this.focusFirstElement();\n          });\n        } else {\n          this.opened = false;\n          this.settingsObservablesUnsubscribe.next(null);\n          window.setTimeout(() => {\n            this.focusedElementBeforeOpen && this.focusedElementBeforeOpen.focus();\n          });\n        }\n      });\n  }\n\n  focusFirstElement(): void {\n    const focusableElement = getFirstFocusableElement(this.el.nativeElement) || this.el.nativeElement.querySelector('[tabindex=\"-1\"]');\n\n    if (focusableElement) {\n      focusableElement.focus();\n    }\n  }\n\n  onButtonAction(button: ButtonOptions) {\n    if (!button.action) {\n      return this.settings.close();\n    }\n\n    const response = button.action(this.settings);\n\n    if (!(response && isObservable(response))) {\n      return response || this.settings.close();\n    }\n\n    button.setLoading();\n\n    response\n      .pipe(\n        takeUntil(this.settingsObservablesUnsubscribe),\n        finalize(() => {\n          button && button.removeLoading();\n        })\n      )\n      .subscribe(result => {\n        return result || this.settings.close();\n      });\n  }\n\n}\n","<div class=\"cs-modal-overlay\" [ngClass]=\"['cs-modal--theme-' + settings.theme]\"\n  [class.no-padding]=\"settings.columnClass === 'cover'\"\n  [ngStyle]=\"{'background-color': settings.backgroundColor, 'z-index': settings.zIndex}\" [csModalVisibility]=\"settings\"\n  [csBgDimissAnimated]=\"settings\" [attr.aria-hidden]=\"!opened\">\n  @if(opened) {\n  <cs-keydown-events (event)=\"handleKeyDown($event)\"></cs-keydown-events>\n  }\n  <div\n    class=\"cs-modal cs-modal--{{settings.columnClass}} cs-modal--{{settings.type}} cs-modal--font-{{settings.fontSize}}\"\n    (click)=\"$event.stopPropagation()\" tabindex=\"-1\" role=\"dialog\" aria-modal=\"true\">\n    <cs-modal-auto-close [settings]=\"settings\" [unsubscribe]=\"settingsObservablesUnsubscribe\"></cs-modal-auto-close>\n    <div class=\"cs-modal__actions\" *ngIf=\"settings.closeIcon || settings.maximize\">\n      <cs-maximize [settings]=\"settings\"></cs-maximize>\n      <button type=\"button\" class=\"cs-modal__close\" *ngIf=\"settings.closeIcon\" (click)=\"settings.closeIcon(settings)\"\n        title=\"Close\">\n        <i [class]=\"settings.iconFontClass\">{{settings.closeIconName}}</i>\n      </button>\n    </div>\n    <div class=\"cs-modal__icon cs-modal__icon--{{settings.iconAlign}}\" *ngIf=\"settings.iconName\">\n      <i class=\"{{settings.iconFontClass}}\" *ngIf=\"settings.iconName\">{{settings.iconName}}</i>\n    </div>\n    <div class=\"cs-modal__title cs-modal__title--{{settings.titleAlign}}\" *ngIf=\"settings.title\">\n      <h1 class=\"cs-modal__title__text {{settings.titleClass}}\">{{settings.title}}</h1>\n    </div>\n    <cs-modal-content class=\"cs-modal__content cs-modal__content--{{settings.contentAlign}}\" *ngIf=\"settings.content\"\n      [settings]=\"settings\" [unsubscribe]=\"settingsObservablesUnsubscribe\"></cs-modal-content>\n    <div class=\"cs-modal__footer cs-modal__footer--{{settings.buttonsAlign}}\"\n      *ngIf=\"settings.buttons.length > 0 && !settings.areAllButtonsHidden()\">\n      <ng-container *ngFor=\"let button of settings.buttons\">\n        <button type=\"button\" (click)=\"onButtonAction(button)\" class=\"cs-modal__button {{button.btnClass}}\"\n          [class.cs-modal__button--icon]=\"!!button.iconName\" *ngIf=\"!button.isHidden\" [disabled]=\"button.isDisabled\">\n          <span class=\"cs-modal__button__text\" [innerHTML]=\"button.text\"></span>\n          <i class=\"cs-modal__button__icon {{button.iconFontClass || settings.iconFontClass}}\"\n            *ngIf=\"button.iconName && !button.loading\">{{button.iconName}}</i>\n          <cs-spinner [spinner]=\"button.spinner\" spinnerSize=\"small\" [transparency]=\"true\" *ngIf=\"button.loading\">\n          </cs-spinner>\n        </button>\n      </ng-container>\n    </div>\n  </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AutoCloseComponent } from './auto-close/auto-close.component';\nimport { CsModalComponent } from './cs-modal.component';\nimport { CsModalService } from './cs-modal.service';\nimport { BgDimissAnimatedDirective } from './directives/bg-dimiss-animated.directive';\nimport { CsModalVisibilityDirective } from './directives/cs-modal-visibility.directive';\nimport { ModalDirective } from './directives/modal.directive';\nimport { KeydownEventsComponent } from './keydown-events/keydown-events.component';\nimport { MaximizeComponent } from './maximize/maximize.component';\nimport { ModalContentComponent } from './modal-content/modal-content.component';\nimport { SpinnerComponent } from './spinner/spinner.component';\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  exports: [CsModalComponent],\n  declarations: [\n    CsModalComponent,\n    AutoCloseComponent,\n    ModalContentComponent,\n    BgDimissAnimatedDirective,\n    CsModalVisibilityDirective,\n    MaximizeComponent,\n    ModalDirective,\n    SpinnerComponent,\n    KeydownEventsComponent\n  ],\n  providers: [\n    CsModalService\n  ]\n})\nexport class CsModalModule { }\n","/*\n * Public API Surface of cs-modal\n */\n\nexport * from './lib/cs-modal';\nexport * from './lib/cs-modal.service';\nexport * from './lib/cs-modal.component';\nexport * from './lib/cs-modal.module';\nexport * from './lib/model/index';\nexport * from './lib/utils/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.SpinnerComponent","i1.ModalDirective","i2","i2.AutoCloseComponent","i3.ModalContentComponent","i4.BgDimissAnimatedDirective","i5.CsModalVisibilityDirective","i6.MaximizeComponent","i7.ModalDirective","i8.SpinnerComponent","i9.KeydownEventsComponent"],"mappings":"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"}