{"version":3,"file":"ngx-toasta.mjs","sources":["../../../projects/ngx-toasta/src/lib/toasta.utils.ts","../../../projects/ngx-toasta/src/lib/toasta.service.ts","../../../projects/ngx-toasta/src/lib/shared.ts","../../../projects/ngx-toasta/src/lib/toast.component.ts","../../../projects/ngx-toasta/src/lib/toasta.component.ts","../../../projects/ngx-toasta/src/lib/toasta.module.ts","../../../projects/ngx-toasta/src/public-api.ts","../../../projects/ngx-toasta/src/ngx-toasta.ts"],"sourcesContent":["\r\n/**\r\n * Check and return true if an object is type of string\r\n * @param obj Analyse has to object the string type\r\n * @return result of analysis\r\n */\r\nexport function isString(obj: any): boolean {\r\n  return typeof obj === 'string';\r\n}\r\n\r\n/**\r\n * Check and return true if an object is type of number\r\n * @param obj Analyse has to object the boolean type\r\n * @return result of analysis\r\n */\r\nexport function isNumber(obj: any): boolean {\r\n  return typeof obj === 'number';\r\n}\r\n\r\n/**\r\n * Check and return true if an object is type of Function\r\n * @param obj Analyse has to object the function type\r\n * @return result of analysis\r\n */\r\nexport function isFunction(obj: any): boolean {\r\n  return typeof obj === 'function';\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nimport { isString, isNumber, isFunction } from './toasta.utils';\r\n\r\n\r\n\r\n/**\r\n * Options to configure a new Toast\r\n */\r\n@Injectable()\r\nexport class ToastOptions {\r\n  title?: string;\r\n  msg?: string;\r\n  showClose?: boolean;\r\n  showDuration?: boolean;\r\n  theme?: string;\r\n  timeout?: number;\r\n  onAdd?: Function;\r\n  onRemove?: Function;\r\n}\r\n\r\n/**\r\n * Structrure of a created Toast\r\n */\r\n@Injectable()\r\nexport class ToastData {\r\n  id!: number;\r\n  title?: string;\r\n  msg?: string;\r\n  showClose!: boolean;\r\n  showDuration!: boolean;\r\n  type!: string;\r\n  theme!: string;\r\n  timeout!: number;\r\n  onAdd?: Function;\r\n  onRemove?: Function;\r\n  onClick?: Function;\r\n}\r\n\r\n/**\r\n * Default configuration for all toasts and toasta container\r\n */\r\n@Injectable()\r\nexport class ToastaConfig {\r\n\r\n  // Maximum number of toasties to show at once\r\n  limit = 5;\r\n\r\n  // Whether to show the 'X' icon to close the toast\r\n  showClose = true;\r\n\r\n  // Whether to show a progress bar at the bottom of the notification\r\n  showDuration = true;\r\n\r\n  // The window position where the toast pops up\r\n  position: 'bottom-right' | 'bottom-left' | 'bottom-center' | 'bottom-fullwidth' | 'top-right' | 'top-left' | 'top-center' | 'top-fullwidth' | 'center-center' = 'bottom-right';\r\n\r\n  // How long (in miliseconds) the toasta shows before it's removed. Set to null/0 to turn off.\r\n  timeout = 5000;\r\n\r\n  // What theme to use\r\n  theme: 'default' | 'material' | 'bootstrap' = 'default';\r\n}\r\n\r\nexport enum ToastaEventType {\r\n  ADD,\r\n  CLEAR,\r\n  CLEAR_ALL\r\n}\r\n\r\nexport class ToastaEvent {\r\n  constructor(public type: ToastaEventType, public value?: ToastData | number) { }\r\n}\r\n\r\nexport function toastaServiceFactory(config: ToastaConfig): ToastaService {\r\n  return new ToastaService(config);\r\n}\r\n\r\n/**\r\n * Toasta service helps create different kinds of Toasts\r\n */\r\n@Injectable()\r\nexport class ToastaService {\r\n  // Allowed THEMES\r\n  static THEMES: Array<string> = ['default', 'material', 'bootstrap'];\r\n  // Init the counter\r\n  uniqueCounter = 0;\r\n  // ToastData event emitter\r\n  // private toastsEmitter: EventEmitter<ToastData> = new EventEmitter<ToastData>();\r\n  // Clear event emitter\r\n  // private clearEmitter: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n  private eventSource: Subject<ToastaEvent> = new Subject<ToastaEvent>();\r\n  public events: Observable<ToastaEvent> = this.eventSource.asObservable();\r\n\r\n  constructor(private config: ToastaConfig) { }\r\n\r\n  /**\r\n   * Get list of toats\r\n   */\r\n  // getToasts(): Observable<ToastData> {\r\n  //   return this.toastsEmitter.asObservable();\r\n  // }\r\n\r\n  // getClear(): Observable<number> {\r\n  //   return this.clearEmitter.asObservable();\r\n  // }\r\n\r\n  /**\r\n   * Create Toast of a default type\r\n   */\r\n  default(options: ToastOptions | string | number): void {\r\n    this.add(options, 'default');\r\n  }\r\n\r\n  /**\r\n   * Create Toast of info type\r\n   * @param options Individual toasta config overrides\r\n   */\r\n  info(options: ToastOptions | string | number): void {\r\n    this.add(options, 'info');\r\n  }\r\n\r\n  /**\r\n   * Create Toast of success type\r\n   * @param options Individual toasta config overrides\r\n   */\r\n  success(options: ToastOptions | string | number): void {\r\n    this.add(options, 'success');\r\n  }\r\n\r\n  /**\r\n   * Create Toast of wait type\r\n   * @param options Individual toasta config overrides\r\n   */\r\n  wait(options: ToastOptions | string | number): void {\r\n    this.add(options, 'wait');\r\n  }\r\n\r\n  /**\r\n   * Create Toast of error type\r\n   * @param options Individual toasta config overrides\r\n   */\r\n  error(options: ToastOptions | string | number): void {\r\n    this.add(options, 'error');\r\n  }\r\n\r\n  /**\r\n   * Create Toast of warning type\r\n   * @param options Individual toasta config overrides\r\n   */\r\n  warning(options: ToastOptions | string | number): void {\r\n    this.add(options, 'warning');\r\n  }\r\n\r\n\r\n  // Add a new toast item\r\n  private add(options: ToastOptions | string | number, type: string) {\r\n    let toastaOptions: ToastOptions;\r\n\r\n    if (isString(options) && options !== '' || isNumber(options)) {\r\n      toastaOptions = {\r\n        title: options.toString()\r\n      } as ToastOptions;\r\n    } else {\r\n      toastaOptions = options as ToastOptions;\r\n    }\r\n\r\n    if (!toastaOptions || !toastaOptions.title && !toastaOptions.msg) {\r\n      throw new Error('ngx-toasta: No toast title or message specified!');\r\n    }\r\n\r\n    type = type || 'default';\r\n\r\n    // Set a unique counter for an id\r\n    this.uniqueCounter++;\r\n\r\n    // Set the local vs global config items\r\n    const showClose = this._checkConfigBooleanItem(this.config, toastaOptions, 'showClose');\r\n\r\n    // Set the local vs global config items\r\n    const showDuration = this._checkConfigBooleanItem(this.config, toastaOptions, 'showDuration');\r\n\r\n    // If we have a theme set, make sure it's a valid one\r\n    let theme: string;\r\n    if (toastaOptions.theme) {\r\n      theme = ToastaService.THEMES.indexOf(toastaOptions.theme) > -1 ? toastaOptions.theme : this.config.theme;\r\n    } else {\r\n      theme = this.config.theme;\r\n    }\r\n\r\n    const toast: ToastData = {\r\n      id: this.uniqueCounter,\r\n      title: toastaOptions.title,\r\n      msg: toastaOptions.msg,\r\n      showClose,\r\n      showDuration,\r\n      type: 'toasta-type-' + type,\r\n      theme: 'toasta-theme-' + theme,\r\n      // If there's a timeout individually or globally, set the toast to timeout\r\n      // Allows a caller to pass null/0 and override the default. Can also set the default to null/0 to turn off.\r\n      timeout: toastaOptions.hasOwnProperty('timeout') ? toastaOptions.timeout ?? 0 : this.config.timeout,\r\n      onAdd: toastaOptions.onAdd && isFunction(toastaOptions.onAdd) ? toastaOptions.onAdd : undefined,\r\n      onRemove: toastaOptions.onRemove && isFunction(toastaOptions.onRemove) ? toastaOptions.onRemove : undefined\r\n    };\r\n\r\n    // Push up a new toast item\r\n    // this.toastsSubscriber.next(toast);\r\n    // this.toastsEmitter.next(toast);\r\n    this.emitEvent(new ToastaEvent(ToastaEventType.ADD, toast));\r\n    // If we have a onAdd function, call it here\r\n    if (toastaOptions.onAdd && isFunction(toastaOptions.onAdd)) {\r\n      toastaOptions.onAdd.call(this, toast);\r\n    }\r\n  }\r\n\r\n  // Clear all toasts\r\n  clearAll() {\r\n    // this.clearEmitter.next(null);\r\n    this.emitEvent(new ToastaEvent(ToastaEventType.CLEAR_ALL));\r\n  }\r\n\r\n  // Clear the specific one\r\n  clear(id: number) {\r\n    // this.clearEmitter.next(id);\r\n    this.emitEvent(new ToastaEvent(ToastaEventType.CLEAR, id));\r\n  }\r\n\r\n  // Checks whether the local option is set, if not,\r\n  // checks the global config\r\n  private _checkConfigBooleanItem(config: any, options: any, property: string) {\r\n    if (options[property] === false) {\r\n      return false;\r\n    } else if (!options[property]) {\r\n      return config[property] as boolean;\r\n    } else {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  private emitEvent(event: ToastaEvent) {\r\n    if (this.eventSource) {\r\n      // Push up a new event\r\n      this.eventSource.next(event);\r\n    }\r\n  }\r\n}\r\n","import { DomSanitizer } from '@angular/platform-browser';\r\nimport { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({ name: 'safeHtml' })\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n  constructor(private domSanitized: DomSanitizer) { }\r\n\r\n  transform(value: any, ...args: any[]): any {\r\n    return this.domSanitized.bypassSecurityTrustHtml(value);\r\n  }\r\n}\r\n","import { AfterViewInit, Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\nimport { ToastData } from './toasta.service';\r\n\r\n/**\r\n * A Toast component shows message with title and close button.\r\n */\r\n@Component({\r\n  selector: 'ngx-toast',\r\n  template: `\r\n        <div class=\"toast\" [ngClass]=\"[toast.type, toast.theme]\">\r\n            <div *ngIf=\"toast.showClose\" class=\"close-button\" (click)=\"close($event)\"></div>\r\n            <div *ngIf=\"toast.title || toast.msg\" class=\"toast-text\">\r\n                <span *ngIf=\"toast.title\" class=\"toast-title\" [innerHTML]=\"toast.title | safeHtml\"></span>\r\n                <br *ngIf=\"toast.title && toast.msg\" />\r\n                <span *ngIf=\"toast.msg\" class=\"toast-msg\" [innerHtml]=\"toast.msg | safeHtml\"></span>\r\n            </div>\r\n            <div class=\"durationbackground\" *ngIf=\"toast.showDuration && toast.timeout > 0\">\r\n                <div class=\"durationbar\" [style.width.%]=\"progressPercent\">\r\n                </div>\r\n            </div>\r\n        </div>`\r\n})\r\nexport class ToastComponent implements AfterViewInit {\r\n\r\n  progressInterval?: number;\r\n  progressPercent = 0;\r\n  startTime: number = performance.now();\r\n  @Input() toast!: ToastData;\r\n  @Output('closeToast') closeToastEvent = new EventEmitter();\r\n\r\n  ngAfterViewInit() {\r\n    if (this.toast.showDuration && this.toast.timeout > 0) {\r\n      this.progressInterval = window.setInterval(() => {\r\n        this.progressPercent = (100 - ((performance.now() - this.startTime) / this.toast.timeout * 100)); // Descending progress\r\n\r\n        if (this.progressPercent <= 0) {\r\n          clearInterval(this.progressInterval);\r\n        }\r\n      }, 16.7); // 60 fps\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Event handler invokes when user clicks on close button.\r\n   * This method emit new event into ToastaContainer to close it.\r\n   */\r\n  close($event: Event) {\r\n    $event.preventDefault();\r\n    this.closeToastEvent.next(this.toast);\r\n\r\n    if (this.progressInterval) {\r\n      clearInterval(this.progressInterval);\r\n    }\r\n  }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { isFunction } from './toasta.utils';\r\nimport { ToastaService, ToastData, ToastaConfig, ToastaEvent, ToastaEventType } from './toasta.service';\r\n\r\n/**\r\n * Toasta is container for Toast components\r\n */\r\n@Component({\r\n  selector: 'ngx-toasta',\r\n  template: `\r\n    <div id=\"toasta\" [ngClass]=\"[position]\">\r\n        <ngx-toast *ngFor=\"let toast of toasts\" [toast]=\"toast\" (closeToast)=\"closeToast(toast)\"></ngx-toast>\r\n    </div>`\r\n})\r\nexport class ToastaComponent implements OnInit {\r\n  /**\r\n   * Set of constants defines position of Toasta on the page.\r\n   */\r\n  static POSITIONS: Array<string> = ['bottom-right', 'bottom-left', 'bottom-center', 'bottom-fullwidth', 'top-right', 'top-left', 'top-center', 'top-fullwidth', 'center-center'];\r\n\r\n  private _position = '';\r\n  // The window position where the toast pops up. Possible values:\r\n  // - bottom-right (default value from ToastConfig)\r\n  // - bottom-left\r\n  // - bottom-center\r\n  // - bottom-fullwidth\r\n  // - top-right\r\n  // - top-left\r\n  // - top-center\r\n  // - top-fullwidth\r\n  // - center-center\r\n  @Input()\r\n  set position(value: string) {\r\n    if (value) {\r\n      let notFound = true;\r\n      for (let i = 0; i < ToastaComponent.POSITIONS.length; i++) {\r\n        if (ToastaComponent.POSITIONS[i] === value) {\r\n          notFound = false;\r\n          break;\r\n        }\r\n      }\r\n      if (notFound) {\r\n        // Position was wrong - clear it here to use the one from config.\r\n        value = this.config.position;\r\n      }\r\n    } else {\r\n      value = this.config.position;\r\n    }\r\n    this._position = 'toasta-position-' + value;\r\n  }\r\n\r\n  get position(): string {\r\n    return this._position;\r\n  }\r\n\r\n  // The storage for toasts.\r\n  toasts: Array<ToastData> = [];\r\n\r\n  constructor(private config: ToastaConfig, private toastaService: ToastaService) {\r\n    // Initialise position\r\n    this.position = '';\r\n  }\r\n\r\n  /**\r\n   * `ngOnInit` is called right after the directive's data-bound properties have been checked for the\r\n   * first time, and before any of its children have been checked. It is invoked only once when the\r\n   * directive is instantiated.\r\n   */\r\n  ngOnInit(): void {\r\n    // We listen events from our service\r\n    this.toastaService.events.subscribe((event: ToastaEvent) => {\r\n      if (event.type === ToastaEventType.ADD) {\r\n        // Add the new one\r\n        const toast = event.value as ToastData;\r\n        this.add(toast);\r\n      } else if (event.type === ToastaEventType.CLEAR) {\r\n        // Clear the one by number\r\n        const id = event.value as number;\r\n        this.clear(id);\r\n      } else if (event.type === ToastaEventType.CLEAR_ALL) {\r\n        // Lets clear all toasts\r\n        this.clearAll();\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Event listener of 'closeToast' event comes from ToastaComponent.\r\n   * This method removes ToastComponent assosiated with this Toast.\r\n   */\r\n  closeToast(toast: ToastData) {\r\n    this.clear(toast.id);\r\n  }\r\n\r\n  /**\r\n   * Add new Toast\r\n   */\r\n  add(toast: ToastData) {\r\n    // If we've gone over our limit, remove the earliest\r\n    // one from the array\r\n    if (this.config.limit && this.toasts.length >= this.config.limit) {\r\n      this.toasts.shift();\r\n    }\r\n    // Add toasta to array\r\n    this.toasts.push(toast);\r\n    //\r\n    // If there's a timeout individually or globally,\r\n    // set the toast to timeout\r\n    if (+toast.timeout) {\r\n      this._setTimeout(toast);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Clear individual toast by id\r\n   * @param id is unique identifier of Toast\r\n   */\r\n  clear(id: number) {\r\n    if (id) {\r\n      this.toasts.forEach((value, key) => {\r\n        if (value.id === id) {\r\n          if (value.onRemove && isFunction(value.onRemove)) {\r\n            value.onRemove.call(this, value);\r\n          }\r\n          this.toasts.splice(key, 1);\r\n        }\r\n      });\r\n    } else {\r\n      throw new Error('Please provide id of Toast to close');\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Clear all toasts\r\n   */\r\n  clearAll() {\r\n    this.toasts.forEach((value, key) => {\r\n      if (value.onRemove && isFunction(value.onRemove)) {\r\n        value.onRemove.call(this, value);\r\n      }\r\n    });\r\n    this.toasts = [];\r\n  }\r\n\r\n  /**\r\n   * Custom setTimeout function for specific setTimeouts on individual toasts.\r\n   */\r\n  private _setTimeout(toast: ToastData) {\r\n    window.setTimeout(() => {\r\n      this.clear(toast.id);\r\n    }, toast.timeout);\r\n  }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n\r\nimport { ToastaComponent } from './toasta.component';\r\nimport { ToastComponent } from './toast.component';\r\nimport { SafeHtmlPipe } from './shared';\r\nimport { ToastaService, ToastaConfig, toastaServiceFactory } from './toasta.service';\r\n\r\nexport let providers = [\r\n  ToastaConfig,\r\n  { provide: ToastaService, useFactory: toastaServiceFactory, deps: [ToastaConfig] }\r\n];\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [ToastComponent, ToastaComponent, SafeHtmlPipe],\r\n  exports: [ToastComponent, ToastaComponent],\r\n  providers\r\n})\r\nexport class ToastaModule {\r\n  static forRoot(): ModuleWithProviders<ToastaModule> {\r\n    return {\r\n      ngModule: ToastaModule,\r\n      providers\r\n    };\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of ngx-toasta\r\n */\r\n\r\nexport * from './lib/toasta.service';\r\nexport * from './lib/toasta.component';\r\nexport * from './lib/toast.component';\r\nexport * from './lib/shared';\r\nexport * from './lib/toasta.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.SafeHtmlPipe","i1.ToastaConfig","i1.ToastaService","i2","i3.ToastComponent"],"mappings":"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"}