{"version":3,"file":"winarg-ng-snotify.mjs","sources":["../../../projects/ng-snotify/src/lib/enums/snotify-style.enum.ts","../../../projects/ng-snotify/src/lib/decorators/transform-argument.decorator.ts","../../../projects/ng-snotify/src/lib/utils.ts","../../../projects/ng-snotify/src/lib/decorators/set-toast-type.decorator.ts","../../../projects/ng-snotify/src/lib/models/snotify-toast.model.ts","../../../projects/ng-snotify/src/lib/services/snotify.service.ts","../../../projects/ng-snotify/src/lib/components/buttons/buttons.component.ts","../../../projects/ng-snotify/src/lib/components/buttons/buttons.component.html","../../../projects/ng-snotify/src/lib/pipes/truncate.pipe.ts","../../../projects/ng-snotify/src/lib/components/prompt/prompt.component.ts","../../../projects/ng-snotify/src/lib/components/prompt/prompt.component.html","../../../projects/ng-snotify/src/lib/enums/snotify-position.enum.ts","../../../projects/ng-snotify/src/lib/components/toast/toast.component.ts","../../../projects/ng-snotify/src/lib/components/toast/toast.component.html","../../../projects/ng-snotify/src/lib/pipes/keys.pipe.ts","../../../projects/ng-snotify/src/lib/components/snotify/snotify.component.ts","../../../projects/ng-snotify/src/lib/components/snotify/snotify.component.html","../../../projects/ng-snotify/src/lib/snotify.module.ts","../../../projects/ng-snotify/src/lib/toast-defaults.ts","../../../projects/ng-snotify/src/public-api.ts","../../../projects/ng-snotify/src/winarg-ng-snotify.ts"],"sourcesContent":["/**\r\n * Toast style.\r\n */\r\nexport enum SnotifyStyle {\r\n  simple = 'simple',\r\n  success = 'success',\r\n  error = 'error',\r\n  warning = 'warning',\r\n  info = 'info',\r\n  async = 'async',\r\n  confirm = 'confirm',\r\n  prompt = 'prompt'\r\n}\r\n","import { Snotify } from '../interfaces/snotify.interface';\r\nimport { SnotifyTypeType } from '../types/snotify-type.type';\r\nimport { SnotifyStyle } from '../enums/snotify-style.enum';\r\n\r\n/**\r\n * Transform arguments to Snotify object\r\n * @param target any\r\n * @param propertyKey SnotifyTypeType\r\n * @param descriptor PropertyDescriptor\r\n * @returns Snotify\r\n */\r\nexport function TransformArgument(target: any, propertyKey: SnotifyTypeType, descriptor: PropertyDescriptor) {\r\n  if (propertyKey === SnotifyStyle.async) {\r\n    return {\r\n      value(...args: any[]) {\r\n        let result;\r\n        if (args.length === 2) {\r\n          result = {\r\n            title: null,\r\n            body: args[0],\r\n            config: null,\r\n            action: args[1]\r\n          };\r\n        } else if (args.length === 3) {\r\n          if (typeof args[1] === 'string') {\r\n            result = {\r\n              title: args[1],\r\n              body: args[0],\r\n              config: null,\r\n              action: args[2]\r\n            };\r\n          } else {\r\n            result = {\r\n              title: null,\r\n              body: args[0],\r\n              config: args[2],\r\n              action: args[1]\r\n            };\r\n          }\r\n        } else {\r\n          result = {\r\n            title: args[1],\r\n            body: args[0],\r\n            config: args[3],\r\n            action: args[2]\r\n          };\r\n        }\r\n        return descriptor.value.apply(this, [result as Snotify]);\r\n      }\r\n    };\r\n  } else {\r\n    return {\r\n      value(...args: any[]) {\r\n        let result;\r\n        if (args.length === 1) {\r\n          result = {\r\n            title: null,\r\n            body: args[0],\r\n            config: null\r\n          };\r\n        } else if (args.length === 3) {\r\n          result = {\r\n            title: args[1],\r\n            body: args[0],\r\n            config: args[2]\r\n          };\r\n        } else {\r\n          result = {\r\n            title: null,\r\n            config: null,\r\n            body: args[0],\r\n            [typeof args[1] === 'string' ? 'title' : 'config']: args[1]\r\n          };\r\n        }\r\n        return descriptor.value.apply(this, [result as Snotify]);\r\n      }\r\n    };\r\n  }\r\n}\r\n","/**\r\n * Generates random id\r\n * @return number\r\n */\r\nexport function uuid(): number {\r\n  return Math.floor(Math.random() * (Date.now() - 1)) + 1;\r\n}\r\n\r\n/**\r\n * Simple is object check.\r\n * @param item Object<any>\r\n * @returns boolean\r\n */\r\nexport function isObject(item): boolean {\r\n  return item && typeof item === 'object' && !Array.isArray(item);\r\n}\r\n\r\n/**\r\n * Deep merge objects.\r\n * @param sources Array<Object<any>>\r\n * @returns Object<any>\r\n */\r\nexport function mergeDeep(...sources) {\r\n  const target = {};\r\n  if (!sources.length) {\r\n    return target;\r\n  }\r\n\r\n  while (sources.length > 0) {\r\n    const source = sources.shift();\r\n    if (isObject(source)) {\r\n      for (const key in source) {\r\n        if (isObject(source[key])) {\r\n          target[key] = mergeDeep(target[key], source[key]);\r\n        } else {\r\n          Object.assign(target, { [key]: source[key] });\r\n        }\r\n      }\r\n    }\r\n  }\r\n  return target;\r\n}\r\n\r\nexport function animate(start: number, duration: number, callback: (currentValue: number, progress: number) => {}) {\r\n  let endTime;\r\n  requestAnimationFrame(timestamp => (endTime = timestamp + duration));\r\n  const calculate = () => {\r\n    requestAnimationFrame(timestamp => {\r\n      const runtime = timestamp - endTime;\r\n      const progress = Math.min(runtime / duration, 1) + start;\r\n      if (runtime < duration) {\r\n        if (callback(+(100 * progress).toFixed(2), progress)) {\r\n          calculate();\r\n        }\r\n      }\r\n    });\r\n  };\r\n}\r\n","import { SnotifyTypeType } from '../types/snotify-type.type';\r\nimport { Snotify } from '../interfaces/snotify.interface';\r\n\r\n/**\r\n * Defines toast style depending on method name\r\n * @param target any\r\n * @param propertyKey SnotifyTypeType\r\n * @param descriptor PropertyDescriptor\r\n * @returns value: ((...args: any[]) => any)\r\n */\r\nexport function SetToastType(target: any, propertyKey: SnotifyTypeType, descriptor: PropertyDescriptor) {\r\n  return {\r\n    value(...args: any[]) {\r\n      (args[0] as Snotify).config = {\r\n        ...(args[0] as Snotify).config,\r\n        type: propertyKey\r\n      };\r\n      return descriptor.value.apply(this, args);\r\n    }\r\n  };\r\n}\r\n","import { SnotifyToastConfig } from '../interfaces/snotify-toast-config.interface';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { SnotifyEventType } from '../types/snotify-event.type';\r\nimport { SnotifyStyle } from '../enums/snotify-style.enum';\r\n// @TODO remove method in observable way\r\n/**\r\n * Toast main model\r\n */\r\nexport class SnotifyToast {\r\n  /**\r\n   * Emits SnotifyEventType\r\n   */\r\n  readonly eventEmitter = new Subject<SnotifyEventType>();\r\n  /**\r\n   * Holds all subscribers because we need to unsubscribe from all before toast get destroyed\r\n   */\r\n  private eventsHolder: Subscription[] = [];\r\n  /**\r\n   * Toast prompt value\r\n   */\r\n  value: string;\r\n  /**\r\n   * Toast validator\r\n   */\r\n  valid: boolean;\r\n  constructor(public id: number, public title: string, public body: string, public config: SnotifyToastConfig) {\r\n    if (this.config.type === SnotifyStyle.prompt) {\r\n      this.value = '';\r\n    }\r\n    this.on('hidden', () => {\r\n      this.eventsHolder.forEach((subscription: Subscription) => {\r\n        subscription.unsubscribe();\r\n      });\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Subscribe to toast events\r\n   * @returns this\r\n   * @param event SnotifyEventType\r\n   * @param action (toast: this) => void\r\n   */\r\n  on(event: SnotifyEventType, action: (toast: this) => void): this {\r\n    this.eventsHolder.push(\r\n      this.eventEmitter.subscribe((e: SnotifyEventType) => {\r\n        if (e === event) {\r\n          action(this);\r\n        }\r\n      })\r\n    );\r\n    return this;\r\n  }\r\n\r\n  /**\r\n   * Tests if a toast equals this toast.\r\n   * @returns boolean true then equals else false.\r\n   * @param toast SnotifyToast\r\n   */\r\n  equals(toast: SnotifyToast): boolean {\r\n    return this.body === toast.body && this.title === toast.title && this.config.type === toast.config.type;\r\n  }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { Observable, Subject, Subscription, from } from 'rxjs';\r\nimport { SnotifyToastConfig } from '../interfaces/snotify-toast-config.interface';\r\nimport { Snotify } from '../interfaces/snotify.interface';\r\nimport { SnotifyTypeType } from '../types/snotify-type.type';\r\nimport { SafeHtml } from '@angular/platform-browser';\r\nimport { TransformArgument } from '../decorators/transform-argument.decorator';\r\nimport { mergeDeep, uuid } from '../utils';\r\nimport { SetToastType } from '../decorators/set-toast-type.decorator';\r\nimport { SnotifyDefaults } from '../interfaces/snotify-defaults.interface';\r\nimport { SnotifyToast } from '../models/snotify-toast.model';\r\nimport { SnotifyStyle } from '../enums/snotify-style.enum';\r\n\r\n/**\r\n * SnotifyService - create, remove, config toasts\r\n */\r\n@Injectable()\r\n// tslint:disable:unified-signatures\r\nexport class SnotifyService {\r\n  readonly emitter = new Subject<SnotifyToast[]>();\r\n  readonly toastChanged = new Subject<SnotifyToast>();\r\n  readonly toastDeleted = new Subject<number>();\r\n  private notifications: SnotifyToast[] = [];\r\n\r\n  constructor(@Inject('SnotifyToastConfig') public config: SnotifyDefaults) {}\r\n  /**\r\n   * emit changes in notifications array\r\n   */\r\n  private emit(): void {\r\n    this.emitter.next(this.notifications.slice());\r\n  }\r\n\r\n  /**\r\n   * returns SnotifyToast object\r\n   * @param id Number\r\n   * @return SnotifyToast|undefined\r\n   */\r\n  get(id: number): SnotifyToast {\r\n    return this.notifications.find(toast => toast.id === id);\r\n  }\r\n\r\n  /**\r\n   * add SnotifyToast to notifications array\r\n   * @param toast SnotifyToast\r\n   */\r\n  private add(toast: SnotifyToast): void {\r\n    if (this.config.global.filterDuplicates && this.containsToast(toast)) {\r\n      return;\r\n    }\r\n    if (this.config.global.newOnTop) {\r\n      this.notifications.unshift(toast);\r\n    } else {\r\n      this.notifications.push(toast);\r\n    }\r\n    this.emit();\r\n  }\r\n\r\n  /**\r\n   * checks if the toast is in the collection.\r\n   * @param inToast SnotifyToast\r\n   * @returns boolean\r\n   */\r\n  private containsToast(inToast: SnotifyToast): boolean {\r\n    return this.notifications.some(toast => toast.equals(inToast));\r\n  }\r\n\r\n  /**\r\n   * If ID passed, emits toast animation remove, if ID & REMOVE passed, removes toast from notifications array\r\n   * @param id number\r\n   * @param remove boolean\r\n   */\r\n  remove(id?: number, remove?: boolean): void {\r\n    if (!id) {\r\n      return this.clear();\r\n    } else if (remove) {\r\n      this.notifications = this.notifications.filter(toast => toast.id !== id);\r\n      return this.emit();\r\n    }\r\n    this.toastDeleted.next(id);\r\n  }\r\n\r\n  /**\r\n   * Clear notifications array\r\n   */\r\n  clear(): void {\r\n    this.notifications = [];\r\n    this.emit();\r\n  }\r\n\r\n  /**\r\n   * Creates toast and add it to array, returns toast id\r\n   * @param snotify Snotify\r\n   * @return number\r\n   */\r\n  create(snotify: Snotify): SnotifyToast {\r\n    const config = mergeDeep(this.config.toast, this.config.type[snotify.config.type], snotify.config);\r\n    const toast = new SnotifyToast(uuid(), snotify.title, snotify.body, config);\r\n    this.add(toast);\r\n    return toast;\r\n  }\r\n\r\n  setDefaults(defaults: SnotifyDefaults): SnotifyDefaults {\r\n    return (this.config = mergeDeep(this.config, defaults) as SnotifyDefaults);\r\n  }\r\n\r\n  /**\r\n   * Create toast with simple style returns toast id;\r\n   * @param body string\r\n   * @returns number\r\n   */\r\n  simple(body: string): SnotifyToast;\r\n  /**\r\n   * Create toast with simple style returns toast id;\r\n   * @param body string\r\n   * @param title string\r\n   * @returns number\r\n   */\r\n  simple(body: string, title: string): SnotifyToast;\r\n  /**\r\n   * Create toast with simple style returns toast id;\r\n   * @param body string\r\n   * @param config SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  simple(body: string, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Create toast with simple style  returns toast id;\r\n   * @param [body] string\r\n   * @param [title] string\r\n   * @param [config] SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  simple(body: string, title: string, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Transform toast arguments into Snotify object\r\n   */\r\n  @TransformArgument\r\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\r\n  @SetToastType\r\n  simple(args: any): SnotifyToast {\r\n    return this.create(args);\r\n  }\r\n\r\n  /**\r\n   * Create toast with success style returns toast id;\r\n   * @param body string\r\n   * @returns number\r\n   */\r\n  success(body: string): SnotifyToast;\r\n  /**\r\n   * Create toast with success style returns toast id;\r\n   * @param body string\r\n   * @param title string\r\n   * @returns number\r\n   */\r\n  success(body: string, title: string): SnotifyToast;\r\n  /**\r\n   * Create toast with success style returns toast id;\r\n   * @param body string\r\n   * @param config SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  success(body: string, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Create toast with success style  returns toast id;\r\n   * @param [body] string\r\n   * @param [title] string\r\n   * @param [config] SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  success(body: string, title: string, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Transform toast arguments into Snotify object\r\n   */\r\n  @TransformArgument\r\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\r\n  @SetToastType\r\n  success(args: any): SnotifyToast {\r\n    return this.create(args);\r\n  }\r\n\r\n  /**\r\n   * Create toast with error style returns toast id;\r\n   * @param body string\r\n   * @returns number\r\n   */\r\n  error(body: string): SnotifyToast;\r\n  /**\r\n   * Create toast with error style returns toast id;\r\n   * @param body string\r\n   * @param title string\r\n   * @returns number\r\n   */\r\n  error(body: string, title: string): SnotifyToast;\r\n  /**\r\n   * Create toast with error style returns toast id;\r\n   * @param body string\r\n   * @param config SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  error(body: string, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Create toast with error style  returns toast id;\r\n   * @param [body] string\r\n   * @param [title] string\r\n   * @param [config] SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  error(body: string, title: string, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Transform toast arguments into Snotify object\r\n   */\r\n  @TransformArgument\r\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\r\n  @SetToastType\r\n  error(args: any): SnotifyToast {\r\n    return this.create(args);\r\n  }\r\n\r\n  /**\r\n   * Create toast with info style returns toast id;\r\n   * @param body string\r\n   * @returns number\r\n   */\r\n  info(body: string): SnotifyToast;\r\n  /**\r\n   * Create toast with info style returns toast id;\r\n   * @param body string\r\n   * @param title string\r\n   * @returns number\r\n   */\r\n  info(body: string, title: string): SnotifyToast;\r\n  /**\r\n   * Create toast with info style returns toast id;\r\n   * @param body string\r\n   * @param config SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  info(body: string, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Create toast with info style  returns toast id;\r\n   * @param [body] string\r\n   * @param [title] string\r\n   * @param [config] SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  info(body: string, title: string, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Transform toast arguments into Snotify object\r\n   */\r\n  @TransformArgument\r\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\r\n  @SetToastType\r\n  info(args: any): SnotifyToast {\r\n    return this.create(args);\r\n  }\r\n\r\n  /**\r\n   * Create toast with warning style returns toast id;\r\n   * @param body string\r\n   * @returns number\r\n   */\r\n  warning(body: string): SnotifyToast;\r\n  /**\r\n   * Create toast with warning style returns toast id;\r\n   * @param body string\r\n   * @param title string\r\n   * @returns number\r\n   */\r\n  warning(body: string, title: string): SnotifyToast;\r\n  /**\r\n   * Create toast with warning style returns toast id;\r\n   * @param body string\r\n   * @param config SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  warning(body: string, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Create toast with warning style  returns toast id;\r\n   * @param [body] string\r\n   * @param [title] string\r\n   * @param [config] SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  warning(body: string, title: string, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Transform toast arguments into Snotify object\r\n   */\r\n  @TransformArgument\r\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\r\n  @SetToastType\r\n  warning(args: any): SnotifyToast {\r\n    return this.create(args);\r\n  }\r\n\r\n  /**\r\n   * Create toast with confirm style returns toast id;\r\n   * @param body string\r\n   * @returns number\r\n   */\r\n  confirm(body: string): SnotifyToast;\r\n  /**\r\n   * Create toast with confirm style returns toast id;\r\n   * @param body string\r\n   * @param title string\r\n   * @returns number\r\n   */\r\n  confirm(body: string, title: string): SnotifyToast;\r\n  /**\r\n   * Create toast with confirm style returns toast id;\r\n   * @param body string\r\n   * @param config SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  confirm(body: string, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Create toast with confirm style  returns toast id;\r\n   * @param [body] string\r\n   * @param [title] string\r\n   * @param [config] SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  confirm(body: string, title: string, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Transform toast arguments into Snotify object\r\n   */\r\n  @TransformArgument\r\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\r\n  @SetToastType\r\n  confirm(args: any): SnotifyToast {\r\n    return this.create(args);\r\n  }\r\n\r\n  /**\r\n   * Create toast with Prompt style with two buttons, returns toast id;\r\n   * @param body string\r\n   * @returns number\r\n   */\r\n  prompt(body: string): SnotifyToast;\r\n  /**\r\n   * Create toast with Prompt style with two buttons, returns toast id;\r\n   * @param body string\r\n   * @param title string\r\n   * @returns number\r\n   */\r\n  prompt(body: string, title: string): SnotifyToast;\r\n  /**\r\n   * Create toast with Prompt style with two buttons, returns toast id;\r\n   * @param body string\r\n   * @param config SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  prompt(body: string, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Create toast with Prompt style with two buttons, returns toast id;\r\n   * @param [body] string\r\n   * @param [title] string\r\n   * @param [config] SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  prompt(body: string, title: string, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Transform toast arguments into Snotify object\r\n   */\r\n  @TransformArgument\r\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\r\n  @SetToastType\r\n  prompt(args: any): SnotifyToast {\r\n    return this.create(args);\r\n  }\r\n\r\n  /**\r\n   * Creates async toast with Info style. Pass action, and resolve or reject it.\r\n   * @param body string\r\n   * @param action Promise<Snotify> | Observable<Snotify>\r\n   * @returns number\r\n   */\r\n  async(body: string, action: Promise<Snotify> | Observable<Snotify>): SnotifyToast;\r\n  /**\r\n   * Creates async toast with Info style. Pass action, and resolve or reject it.\r\n   * @param body string\r\n   * @param title string\r\n   * @param action Promise<Snotify> | Observable<Snotify>\r\n   * @returns number\r\n   */\r\n  async(body: string, title: string, action: Promise<Snotify> | Observable<Snotify>): SnotifyToast;\r\n  /**\r\n   * Creates async toast with Info style. Pass action, and resolve or reject it.\r\n   * @param body string\r\n   * @param action Promise<Snotify> | Observable<Snotify>\r\n   * @param [config] SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  async(body: string, action: Promise<Snotify> | Observable<Snotify>, config: SnotifyToastConfig): SnotifyToast;\r\n  /**\r\n   * Creates async toast with Info style. Pass action, and resolve or reject it.\r\n   * @param body string\r\n   * @param title string\r\n   * @param action Promise<Snotify> | Observable<Snotify>\r\n   * @param [config] SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  async(\r\n    body: string,\r\n    title: string,\r\n    action: Promise<Snotify> | Observable<Snotify>,\r\n    config: SnotifyToastConfig\r\n  ): SnotifyToast;\r\n  /**\r\n   * Transform toast arguments into Snotify object\r\n   */\r\n  @TransformArgument\r\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\r\n  @SetToastType\r\n  async(args: any): SnotifyToast {\r\n    let async: Observable<any>;\r\n    if (args.action instanceof Promise) {\r\n      async = from(args.action);\r\n    } else {\r\n      async = args.action;\r\n    }\r\n\r\n    const toast = this.create(args);\r\n\r\n    toast.on('mounted', () => {\r\n      const subscription: Subscription = async.subscribe(\r\n        (next?: Snotify) => {\r\n          this.mergeToast(toast, next);\r\n        },\r\n        (error?: Snotify) => {\r\n          this.mergeToast(toast, error, SnotifyStyle.error);\r\n          subscription.unsubscribe();\r\n        },\r\n        () => {\r\n          this.mergeToast(toast, {}, SnotifyStyle.success);\r\n          subscription.unsubscribe();\r\n        }\r\n      );\r\n    });\r\n\r\n    return toast;\r\n  }\r\n\r\n  private mergeToast(toast, next, type?: SnotifyTypeType) {\r\n    if (next.body) {\r\n      toast.body = next.body;\r\n    }\r\n    if (next.title) {\r\n      toast.title = next.title;\r\n    }\r\n    if (type) {\r\n      toast.config = mergeDeep(toast.config, this.config.global, this.config.toast[type], { type }, next.config);\r\n    } else {\r\n      toast.config = mergeDeep(toast.config, next.config);\r\n    }\r\n    if (next.html) {\r\n      toast.config.html = next.html;\r\n    }\r\n    this.emit();\r\n    this.toastChanged.next(toast);\r\n  }\r\n\r\n  /**\r\n   * Creates empty toast with html string inside\r\n   * @param html string | SafeHtml\r\n   * @param config SnotifyToastConfig\r\n   * @returns number\r\n   */\r\n  html(html: string | SafeHtml, config?: SnotifyToastConfig): SnotifyToast {\r\n    return this.create({\r\n      title: null,\r\n      body: null,\r\n      config: {\r\n        ...config,\r\n        ...{ html }\r\n      }\r\n    });\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { SnotifyService } from '../../services/snotify.service';\r\nimport { SnotifyToast } from '../../models/snotify-toast.model';\r\n\r\n@Component({\r\n  selector: 'ng-snotify-button',\r\n  templateUrl: './buttons.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: false,\r\n})\r\n\r\n/**\r\n * Buttons component\r\n */\r\nexport class ButtonsComponent {\r\n  /**\r\n   * Get buttons Array\r\n   */\r\n  @Input() toast: SnotifyToast;\r\n  constructor(private service: SnotifyService) {}\r\n\r\n  /**\r\n   * remove toast\r\n   */\r\n  remove() {\r\n    this.service.remove(this.toast.id);\r\n  }\r\n}\r\n","<div class=\"snotifyToast__buttons\">\r\n  <button\r\n    type=\"button\"\r\n    *ngFor=\"let button of toast.config.buttons\"\r\n    [ngClass]=\"{ 'snotifyToast__buttons--bold': button.bold }\"\r\n    (click)=\"button.action ? button.action(toast) : remove()\"\r\n  >\r\n    {{ button.text }}\r\n  </button>\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'truncate',\r\n  standalone: false,\r\n})\r\n\r\n/**\r\n * Truncate toast text pipe\r\n */\r\nexport class TruncatePipe implements PipeTransform {\r\n  transform(value: string, ...args: Array<any>): any {\r\n    let limit = 40;\r\n    let trail = '...';\r\n    if (args.length > 0) {\r\n      limit = args.length > 0 ? parseInt(args[0], 10) : limit;\r\n      trail = args.length > 1 ? args[1] : trail;\r\n    }\r\n\r\n    return value.length > limit ? value.substring(0, limit) + trail : value;\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { SnotifyToast } from '../../models/snotify-toast.model';\r\n\r\n@Component({\r\n  selector: 'ng-snotify-prompt',\r\n  templateUrl: './prompt.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: false,\r\n})\r\n\r\n/**\r\n * Prompt component. Part of PROMPT type\r\n */\r\nexport class PromptComponent {\r\n  /**\r\n   * Get PROMPT placeholder\r\n   */\r\n  @Input() toast: SnotifyToast;\r\n  /**\r\n   * Is PROMPT focused\r\n   */\r\n  isPromptFocused = false;\r\n}\r\n","<span class=\"snotifyToast__input\" [ngClass]=\"{ 'snotifyToast__input--filled': isPromptFocused }\">\r\n  <input\r\n    (input)=\"toast.value = $any($event.target).value; toast.eventEmitter.next('input')\"\r\n    autofocus\r\n    class=\"snotifyToast__input__field\"\r\n    type=\"text\"\r\n    [id]=\"toast.id\"\r\n    (focus)=\"isPromptFocused = true\"\r\n    (blur)=\"isPromptFocused = !!toast.value.length\"\r\n  />\r\n  <label class=\"snotifyToast__input__label\" [for]=\"toast.id\">\r\n    <span class=\"snotifyToast__input__labelContent\">{{ toast.config.placeholder | truncate }}</span>\r\n  </label>\r\n</span>\r\n","/**\r\n * Toast position\r\n */\r\nexport enum SnotifyPosition {\r\n  leftTop = 'leftTop',\r\n  leftCenter = 'leftCenter',\r\n  leftBottom = 'leftBottom',\r\n  rightTop = 'rightTop',\r\n  rightCenter = 'rightCenter',\r\n  rightBottom = 'rightBottom',\r\n  centerTop = 'centerTop',\r\n  centerCenter = 'centerCenter',\r\n  centerBottom = 'centerBottom'\r\n}\r\n","import {\r\n  AfterContentInit,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  ViewEncapsulation\r\n} from '@angular/core';\r\nimport { SnotifyService } from '../../services/snotify.service';\r\nimport { SnotifyToast } from '../../models/snotify-toast.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { SnotifyEventType } from '../../types/snotify-event.type';\r\nimport { SnotifyStyle } from '../../enums/snotify-style.enum';\r\n\r\n@Component({\r\n  selector: 'ng-snotify-toast',\r\n  templateUrl: './toast.component.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: false,\r\n})\r\nexport class ToastComponent implements OnInit, OnDestroy, AfterContentInit {\r\n  /**\r\n   * Get toast from notifications array\r\n   */\r\n  @Input() toast: SnotifyToast | any;\r\n  @Output() stateChanged = new EventEmitter<SnotifyEventType>();\r\n\r\n  toastDeletedSubscription: Subscription;\r\n  toastChangedSubscription: Subscription;\r\n\r\n  /**\r\n   * requestAnimationFrame id\r\n   */\r\n  animationFrame: number;\r\n\r\n  /**\r\n   * Toast state\r\n   */\r\n  state = {\r\n    paused: false,\r\n    progress: 0,\r\n    animation: '',\r\n    isDestroying: false,\r\n    promptType: SnotifyStyle.prompt\r\n  };\r\n\r\n  constructor(private service: SnotifyService) {}\r\n\r\n  // Lifecycles\r\n\r\n  /**\r\n   * Init base options. Subscribe to toast changed, toast deleted\r\n   */\r\n  ngOnInit() {\r\n    this.toastChangedSubscription = this.service.toastChanged.subscribe((toast: SnotifyToast) => {\r\n      if (this.toast.id === toast.id) {\r\n        this.initToast();\r\n      }\r\n    });\r\n    this.toastDeletedSubscription = this.service.toastDeleted.subscribe(id => {\r\n      if (this.toast.id === id) {\r\n        this.onRemove();\r\n      }\r\n    });\r\n    if (!this.toast.config.timeout) {\r\n      this.toast.config.showProgressBar = false;\r\n    }\r\n    this.toast.eventEmitter.next('mounted');\r\n    this.state.animation = 'snotifyToast--in';\r\n  }\r\n\r\n  ngAfterContentInit() {\r\n    setTimeout(() => {\r\n      this.stateChanged.emit('beforeShow');\r\n      this.toast.eventEmitter.next('beforeShow');\r\n      this.state.animation = this.toast.config.animation.enter;\r\n    }, this.service.config.toast.animation.time / 5); // time to show toast push animation (snotifyToast--in)\r\n  }\r\n\r\n  /**\r\n   * Unsubscribe subscriptions\r\n   */\r\n  ngOnDestroy(): void {\r\n    cancelAnimationFrame(this.animationFrame);\r\n    this.toast.eventEmitter.next('destroyed');\r\n    this.toastChangedSubscription.unsubscribe();\r\n    this.toastDeletedSubscription.unsubscribe();\r\n  }\r\n\r\n  /*\r\n  Event hooks\r\n   */\r\n\r\n  /**\r\n   * Trigger OnClick lifecycle\r\n   */\r\n  onClick() {\r\n    this.toast.eventEmitter.next('click');\r\n    if (this.toast.config.closeOnClick) {\r\n      this.service.remove(this.toast.id);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Trigger beforeDestroy lifecycle. Removes toast\r\n   */\r\n  onRemove() {\r\n    this.state.isDestroying = true;\r\n    this.toast.eventEmitter.next('beforeHide');\r\n    this.stateChanged.emit('beforeHide');\r\n    this.state.animation = this.toast.config.animation.exit;\r\n    setTimeout(() => {\r\n      this.stateChanged.emit('hidden');\r\n      this.state.animation = 'snotifyToast--out';\r\n      this.toast.eventEmitter.next('hidden');\r\n      setTimeout(() => this.service.remove(this.toast.id, true), this.toast.config.animation.time / 2);\r\n    }, this.toast.config.animation.time / 2);\r\n  }\r\n\r\n  /**\r\n   * Trigger onHoverEnter lifecycle\r\n   */\r\n  onMouseEnter() {\r\n    this.toast.eventEmitter.next('mouseenter');\r\n    if (this.toast.config.pauseOnHover) {\r\n      this.state.paused = true;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Trigger onHoverLeave lifecycle\r\n   */\r\n  onMouseLeave() {\r\n    if (this.toast.config.pauseOnHover && this.toast.config.timeout) {\r\n      this.state.paused = false;\r\n      this.startTimeout(this.toast.config.timeout * this.state.progress);\r\n    }\r\n    this.toast.eventEmitter.next('mouseleave');\r\n  }\r\n\r\n  /**\r\n   * Remove toast completely after animation\r\n   */\r\n  onExitTransitionEnd() {\r\n    if (this.state.isDestroying) {\r\n      return;\r\n    }\r\n    this.initToast();\r\n    this.toast.eventEmitter.next('shown');\r\n  }\r\n\r\n  /*\r\n   Common\r\n   */\r\n\r\n  /**\r\n   * Initialize base toast config\r\n   *\r\n   */\r\n  initToast(): void {\r\n    if (this.toast.config.timeout > 0) {\r\n      this.startTimeout(0);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Start progress bar\r\n   * @param startTime number\r\n   */\r\n  startTimeout(startTime: number = 0) {\r\n    const start = performance.now();\r\n    const calculate = () => {\r\n      this.animationFrame = requestAnimationFrame(timestamp => {\r\n        const runtime = timestamp + startTime - start;\r\n        const progress = Math.min(runtime / this.toast.config.timeout, 1);\r\n        if (this.state.paused) {\r\n          cancelAnimationFrame(this.animationFrame);\r\n        } else if (runtime < this.toast.config.timeout) {\r\n          this.state.progress = progress;\r\n          calculate();\r\n        } else {\r\n          this.state.progress = 1;\r\n          cancelAnimationFrame(this.animationFrame);\r\n          this.service.remove(this.toast.id);\r\n        }\r\n      });\r\n    };\r\n    calculate();\r\n  }\r\n}\r\n","<div\r\n  [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\r\n  [attr.aria-labelledby]=\"'snotify_' + toast.id\"\r\n  [attr.aria-modal]=\"toast.config.type === state.promptType\"\r\n  [ngClass]=\"[\r\n    'snotifyToast animated',\r\n    'snotify-' + toast.config.type,\r\n    state.animation,\r\n    toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\r\n  ]\"\r\n  [ngStyle]=\"{\r\n    '-webkit-transition': toast.config.animation.time + 'ms',\r\n    transition: toast.config.animation.time + 'ms',\r\n    '-webkit-animation-duration': toast.config.animation.time + 'ms',\r\n    'animation-duration': toast.config.animation.time + 'ms'\r\n  }\"\r\n  (animationend)=\"onExitTransitionEnd()\"\r\n  (click)=\"onClick()\"\r\n  (mouseenter)=\"onMouseEnter()\"\r\n  (mouseleave)=\"onMouseLeave()\"\r\n>\r\n  <div class=\"snotifyToast__progressBar\" *ngIf=\"toast.config.showProgressBar\">\r\n    <span class=\"snotifyToast__progressBar__percentage\" [ngStyle]=\"{ width: state.progress * 100 + '%' }\"></span>\r\n  </div>\r\n  <div class=\"snotifyToast__inner\" *ngIf=\"!toast.config.html; else toastHTML\">\r\n    <div class=\"snotifyToast__title\" [attr.id]=\"'snotify_' + toast.id\" *ngIf=\"toast.title\">\r\n      {{ toast.title | truncate: toast.config.titleMaxLength }}\r\n    </div>\r\n    <div class=\"snotifyToast__body\" *ngIf=\"toast.body\">{{ toast.body | truncate: toast.config.bodyMaxLength }}</div>\r\n    <ng-snotify-prompt *ngIf=\"toast.config.type === state.promptType\" [toast]=\"toast\"> </ng-snotify-prompt>\r\n    <div\r\n      *ngIf=\"!toast.config.icon; else elseBlock\"\r\n      [ngClass]=\"['snotify-icon', toast.config.iconClass || 'snotify-icon--' + toast.config.type]\"\r\n    ></div>\r\n    <ng-template #elseBlock>\r\n      <img class=\"snotify-icon\" [src]=\"toast.config.icon\" />\r\n    </ng-template>\r\n  </div>\r\n  <ng-template #toastHTML>\r\n    <div class=\"snotifyToast__inner\" [innerHTML]=\"toast.config.html\"></div>\r\n  </ng-template>\r\n  <ng-snotify-button *ngIf=\"toast.config.buttons\" [toast]=\"toast\"></ng-snotify-button>\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'keys',\r\n  pure: false,\r\n  standalone: false,\r\n})\r\n/**\r\n * Extract object keys pipe\r\n */\r\nexport class KeysPipe implements PipeTransform {\r\n  transform(value: any, args: any[] = null): any {\r\n    if (!value) {\r\n      return value;\r\n    }\r\n    return Object.keys(value);\r\n  }\r\n}\r\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { SnotifyService } from '../../services/snotify.service';\r\nimport { SnotifyToast } from '../../models/snotify-toast.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { SnotifyNotifications } from '../../interfaces/snotify-notifications.interface';\r\nimport { SnotifyPosition } from '../../enums/snotify-position.enum';\r\nimport { SnotifyEventType } from '../../types/snotify-event.type';\r\n\r\n@Component({\r\n  selector: 'ng-snotify',\r\n  templateUrl: './snotify.component.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n  standalone: false,\r\n})\r\nexport class SnotifyComponent implements OnInit, OnDestroy {\r\n  /**\r\n   * Toasts array\r\n   */\r\n  notifications: SnotifyNotifications;\r\n  /**\r\n   * Toasts emitter\r\n   */\r\n  emitter: Subscription;\r\n  /**\r\n   * Helper for slice pipe (maxOnScreen)\r\n   */\r\n  dockSizeA: number;\r\n  /**\r\n   * Helper for slice pipe (maxOnScreen)\r\n   */\r\n  dockSizeB: number | undefined;\r\n  /**\r\n   * Helper for slice pipe (maxAtPosition)\r\n   */\r\n  blockSizeA: number;\r\n  /**\r\n   * Helper for slice pipe (maxAtPosition)\r\n   */\r\n  blockSizeB: number | undefined;\r\n  /**\r\n   * Backdrop Opacity\r\n   */\r\n  backdrop = -1;\r\n  /**\r\n   * How many toasts with backdrop in current queue\r\n   */\r\n  withBackdrop: SnotifyToast[];\r\n\r\n  constructor(private service: SnotifyService) {}\r\n\r\n  /**\r\n   * Init base options. Subscribe to options, lifecycle change\r\n   */\r\n  ngOnInit() {\r\n    this.emitter = this.service.emitter.subscribe((toasts: SnotifyToast[]) => {\r\n      if (this.service.config.global.newOnTop) {\r\n        this.dockSizeA = -this.service.config.global.maxOnScreen;\r\n        this.dockSizeB = undefined;\r\n        this.blockSizeA = -this.service.config.global.maxAtPosition;\r\n        this.blockSizeB = undefined;\r\n        this.withBackdrop = toasts.filter(toast => toast.config.backdrop >= 0);\r\n      } else {\r\n        this.dockSizeA = 0;\r\n        this.dockSizeB = this.service.config.global.maxOnScreen;\r\n        this.blockSizeA = 0;\r\n        this.blockSizeB = this.service.config.global.maxAtPosition;\r\n        this.withBackdrop = toasts.filter(toast => toast.config.backdrop >= 0).reverse();\r\n      }\r\n      this.notifications = this.splitToasts(toasts.slice(this.dockSizeA, this.dockSizeB));\r\n      this.stateChanged('mounted');\r\n    });\r\n  }\r\n\r\n  // TODO: fix backdrop if more than one toast called in a row\r\n  /**\r\n   * Changes the backdrop opacity\r\n   * @param event SnotifyEventType\r\n   */\r\n  stateChanged(event: SnotifyEventType) {\r\n    if (!this.withBackdrop.length) {\r\n      if (this.backdrop >= 0) {\r\n        this.backdrop = -1;\r\n      }\r\n      return;\r\n    }\r\n    switch (event) {\r\n      case 'mounted':\r\n        if (this.backdrop < 0) {\r\n          this.backdrop = 0;\r\n        }\r\n        break;\r\n      case 'beforeShow':\r\n        this.backdrop = this.withBackdrop[this.withBackdrop.length - 1].config.backdrop;\r\n        break;\r\n      case 'beforeHide':\r\n        if (this.withBackdrop.length === 1) {\r\n          this.backdrop = 0;\r\n        }\r\n        break;\r\n      case 'hidden':\r\n        if (this.withBackdrop.length === 1) {\r\n          this.backdrop = -1;\r\n        }\r\n        break;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Split toasts toasts into different objects\r\n   * @param toasts SnotifyToast[]\r\n   * @returns SnotifyNotifications\r\n   */\r\n  splitToasts(toasts: SnotifyToast[]): SnotifyNotifications {\r\n    const result: SnotifyNotifications = {};\r\n\r\n    for (const property in SnotifyPosition) {\r\n      if (SnotifyPosition.hasOwnProperty(property)) {\r\n        result[SnotifyPosition[property]] = [];\r\n      }\r\n    }\r\n\r\n    toasts.forEach((toast: SnotifyToast) => {\r\n      result[toast.config.position as string].push(toast);\r\n    });\r\n\r\n    return result;\r\n  }\r\n\r\n  /**\r\n   * Unsubscribe subscriptions\r\n   */\r\n  ngOnDestroy() {\r\n    this.emitter.unsubscribe();\r\n  }\r\n}\r\n","<div class=\"snotify-backdrop\" *ngIf=\"backdrop >= 0\" [style.opacity]=\"backdrop\"></div>\r\n<div *ngFor=\"let position of notifications | keys\" class=\"snotify snotify-{{ position }}\">\r\n  <ng-snotify-toast\r\n    *ngFor=\"let notification of notifications[position] | slice: blockSizeA:blockSizeB\"\r\n    [toast]=\"notification\"\r\n    (stateChanged)=\"stateChanged($event)\"\r\n  >\r\n  </ng-snotify-toast>\r\n</div>\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { SnotifyComponent } from './components/snotify/snotify.component';\r\nimport { SnotifyService } from './services/snotify.service';\r\nimport { KeysPipe } from './pipes/keys.pipe';\r\nimport { TruncatePipe } from './pipes/truncate.pipe';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonsComponent } from './components/buttons/buttons.component';\r\nimport { PromptComponent } from './components/prompt/prompt.component';\r\nimport { ToastComponent } from './components/toast/toast.component';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [SnotifyComponent, ToastComponent, TruncatePipe, ButtonsComponent, PromptComponent, KeysPipe],\r\n  exports: [SnotifyComponent, TruncatePipe, KeysPipe]\r\n})\r\nexport class SnotifyModule {\r\n  static forRoot(): ModuleWithProviders<SnotifyModule> {\r\n    return {\r\n      ngModule: SnotifyModule,\r\n      providers: [SnotifyService]\r\n    };\r\n  }\r\n}\r\n","import { SnotifyPosition } from './enums/snotify-position.enum';\r\nimport { SnotifyStyle } from './enums/snotify-style.enum';\r\n\r\n/**\r\n * Snotify default configuration object\r\n */\r\nexport const ToastDefaults = {\r\n  global: {\r\n    newOnTop: true,\r\n    maxOnScreen: 8,\r\n    maxAtPosition: 8,\r\n    filterDuplicates: false\r\n  },\r\n  toast: {\r\n    type: SnotifyStyle.simple,\r\n    showProgressBar: true,\r\n    timeout: 2000,\r\n    closeOnClick: true,\r\n    pauseOnHover: true,\r\n    bodyMaxLength: 150,\r\n    titleMaxLength: 16,\r\n    backdrop: -1,\r\n    icon: null,\r\n    iconClass: null,\r\n    html: null,\r\n    position: SnotifyPosition.rightBottom,\r\n    animation: { enter: 'fadeIn', exit: 'fadeOut', time: 400 }\r\n  },\r\n  type: {\r\n    [SnotifyStyle.prompt]: {\r\n      timeout: 0,\r\n      closeOnClick: false,\r\n      buttons: [\r\n        { text: 'Ok', action: null, bold: true },\r\n        { text: 'Cancel', action: null, bold: false }\r\n      ],\r\n      placeholder: 'Enter answer here...',\r\n      type: SnotifyStyle.prompt\r\n    },\r\n    [SnotifyStyle.confirm]: {\r\n      timeout: 0,\r\n      closeOnClick: false,\r\n      buttons: [\r\n        { text: 'Ok', action: null, bold: true },\r\n        { text: 'Cancel', action: null, bold: false }\r\n      ],\r\n      type: SnotifyStyle.confirm\r\n    },\r\n    [SnotifyStyle.simple]: {\r\n      type: SnotifyStyle.simple\r\n    },\r\n    [SnotifyStyle.success]: {\r\n      type: SnotifyStyle.success\r\n    },\r\n    [SnotifyStyle.error]: {\r\n      type: SnotifyStyle.error\r\n    },\r\n    [SnotifyStyle.warning]: {\r\n      type: SnotifyStyle.warning\r\n    },\r\n    [SnotifyStyle.info]: {\r\n      type: SnotifyStyle.info\r\n    },\r\n    [SnotifyStyle.async]: {\r\n      pauseOnHover: false,\r\n      closeOnClick: false,\r\n      timeout: 0,\r\n      showProgressBar: false,\r\n      type: SnotifyStyle.async\r\n    }\r\n  }\r\n};\r\n","/*\r\n * Public API Surface of ng-snotify\r\n */\r\n\r\nexport * from './lib/components';\r\nexport * from './lib/enums';\r\nexport * from './lib/interfaces';\r\nexport * from './lib/models';\r\nexport * from './lib/pipes';\r\nexport * from './lib/services';\r\nexport * from './lib/snotify.module';\r\nexport * from './lib/toast-defaults';\r\nexport * from './lib/types';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SnotifyService","i1","i2.TruncatePipe","i3.ButtonsComponent","i4.PromptComponent","i5.TruncatePipe","i3.ToastComponent","i4.KeysPipe"],"mappings":"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"}