{"version":3,"file":"ngx-sdcore-snotify.mjs","sources":["../../../projects/ngx-sdcore/snotify/src/enums/snotify-style.enum.ts","../../../projects/ngx-sdcore/snotify/src/decorators/transform-argument.decorator.ts","../../../projects/ngx-sdcore/snotify/src/utils.ts","../../../projects/ngx-sdcore/snotify/src/decorators/set-toast-type.decorator.ts","../../../projects/ngx-sdcore/snotify/src/models/snotify-toast.model.ts","../../../projects/ngx-sdcore/snotify/src/services/snotify.service.ts","../../../projects/ngx-sdcore/snotify/src/components/buttons/buttons.component.ts","../../../projects/ngx-sdcore/snotify/src/components/buttons/buttons.component.html","../../../projects/ngx-sdcore/snotify/src/pipes/truncate.pipe.ts","../../../projects/ngx-sdcore/snotify/src/components/prompt/prompt.component.ts","../../../projects/ngx-sdcore/snotify/src/components/prompt/prompt.component.html","../../../projects/ngx-sdcore/snotify/src/enums/snotify-position.enum.ts","../../../projects/ngx-sdcore/snotify/src/components/toast/toast.component.ts","../../../projects/ngx-sdcore/snotify/src/components/toast/toast.component.html","../../../projects/ngx-sdcore/snotify/src/pipes/keys.pipe.ts","../../../projects/ngx-sdcore/snotify/src/components/snotify/snotify.component.ts","../../../projects/ngx-sdcore/snotify/src/components/snotify/snotify.component.html","../../../projects/ngx-sdcore/snotify/src/snotify.module.ts","../../../projects/ngx-sdcore/snotify/src/toast-defaults.ts","../../../projects/ngx-sdcore/snotify/public-api.ts","../../../projects/ngx-sdcore/snotify/ngx-sdcore-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(\r\n  target: any,\r\n  propertyKey: SnotifyTypeType,\r\n  descriptor: PropertyDescriptor\r\n) {\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","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable @typescript-eslint/ban-types */\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(\r\n  start: number,\r\n  duration: number,\r\n  callback: (currentValue: number, progress: number) => {}\r\n) {\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(\r\n  target: any,\r\n  propertyKey: SnotifyTypeType,\r\n  descriptor: PropertyDescriptor\r\n) {\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(\r\n    public id: number,\r\n    public title: string,\r\n    public body: string,\r\n    public config: SnotifyToastConfig\r\n  ) {\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 (\r\n      this.body === toast.body &&\r\n      this.title === toast.title &&\r\n      this.config.type === toast.config.type\r\n    );\r\n  }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { 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(\r\n        (toast) => toast.id !== id\r\n      );\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(\r\n      this.config.toast,\r\n      this.config.type[snotify.config.type],\r\n      snotify.config\r\n    );\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(\r\n    body: string,\r\n    title: string,\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  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(\r\n    body: string,\r\n    title: string,\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  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(\r\n    body: string,\r\n    title: string,\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  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(\r\n    body: string,\r\n    action: Promise<Snotify> | Observable<Snotify>\r\n  ): 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(\r\n    body: string,\r\n    title: string,\r\n    action: Promise<Snotify> | Observable<Snotify>\r\n  ): 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(\r\n    body: string,\r\n    action: Promise<Snotify> | Observable<Snotify>,\r\n    config: SnotifyToastConfig\r\n  ): 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(\r\n        toast.config,\r\n        this.config.global,\r\n        this.config.toast[type],\r\n        { type },\r\n        next.config\r\n      );\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","/* eslint-disable @angular-eslint/component-selector */\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  Input,\r\n  ViewEncapsulation,\r\n} 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})\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","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'truncate',\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","/* eslint-disable @angular-eslint/component-selector */\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  Input,\r\n  ViewEncapsulation,\r\n} 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})\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  handleInput($event: Event) {\r\n    this.toast.value = ($event.target as HTMLInputElement).value;\r\n    this.toast.eventEmitter.next('input');\r\n  }\r\n}\r\n","<span\r\n  class=\"snotifyToast__input\"\r\n  [ngClass]=\"{ 'snotifyToast__input--filled': isPromptFocused }\"\r\n>\r\n  <input\r\n    (input)=\"handleInput($event)\"\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\">{{\r\n      toast.config.placeholder | truncate\r\n    }}</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","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @angular-eslint/component-selector */\r\nimport {\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})\r\nexport class ToastComponent implements OnInit, OnDestroy, AfterContentInit {\r\n  /**\r\n   * Get toast from notifications array\r\n   */\r\n  @Input() toast: any | SnotifyToast;\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(\r\n      (toast: SnotifyToast) => {\r\n        if (this.toast.id === toast.id) {\r\n          this.initToast();\r\n        }\r\n      }\r\n    );\r\n    this.toastDeletedSubscription = this.service.toastDeleted.subscribe(\r\n      (id) => {\r\n        if (this.toast.id === id) {\r\n          this.onRemove();\r\n        }\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(\r\n        () => this.service.remove(this.toast.id, true),\r\n        this.toast.config.animation.time / 2\r\n      );\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 = 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\r\n      ? ''\r\n      : toast.valid\r\n      ? 'snotifyToast--valid'\r\n      : '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\r\n      class=\"snotifyToast__progressBar__percentage\"\r\n      [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\r\n    ></span>\r\n  </div>\r\n  <div class=\"snotifyToast__inner\" *ngIf=\"!toast.config.html; else toastHTML\">\r\n    <div\r\n      class=\"snotifyToast__title\"\r\n      [attr.id]=\"'snotify_' + toast.id\"\r\n      *ngIf=\"toast.title\"\r\n    >\r\n      {{ toast.title | truncate : toast.config.titleMaxLength }}\r\n    </div>\r\n    <div\r\n      class=\"snotifyToast__body\"\r\n      style=\"white-space: pre-line\"\r\n      *ngIf=\"toast.body\"\r\n    >\r\n      {{ toast.body | truncate : toast.config.bodyMaxLength }}\r\n    </div>\r\n    <ng-snotify-prompt\r\n      *ngIf=\"toast.config.type === state.promptType\"\r\n      [toast]=\"toast\"\r\n    >\r\n    </ng-snotify-prompt>\r\n    <div\r\n      *ngIf=\"!toast.config.icon; else elseBlock\"\r\n      [ngClass]=\"[\r\n        'snotify-icon',\r\n        toast.config.iconClass || 'snotify-icon--' + toast.config.type\r\n      ]\"\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\r\n    *ngIf=\"toast.config.buttons\"\r\n    [toast]=\"toast\"\r\n  ></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})\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  // eslint-disable-next-line @angular-eslint/component-selector\r\n  selector: 'ng-snotify',\r\n  templateUrl: './snotify.component.html',\r\n  encapsulation: ViewEncapsulation.None,\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  closeOnBackground: boolean;\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(\r\n          (toast) => toast.config.backdrop >= 0\r\n        );\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\r\n          .filter((toast) => toast.config.backdrop >= 0)\r\n          .reverse();\r\n      }\r\n      this.closeOnBackground =\r\n        this.service.config.global.closeOnBackgroundClick;\r\n      this.notifications = this.splitToasts(\r\n        toasts.slice(this.dockSizeA, this.dockSizeB)\r\n      );\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.closeOnBackground) {\r\n      const notlen = this.getNotificationLength();\r\n      if (!this.withBackdrop.length) {\r\n        if (event == 'mounted') {\r\n          if (this.backdrop != -1 && notlen == 0) this.backdrop = -1;\r\n        } else {\r\n          if (this.backdrop != 0) this.backdrop = 0;\r\n        }\r\n      } else {\r\n        if (event == 'mounted') {\r\n          if (this.backdrop < 0) this.backdrop = 0;\r\n        } else\r\n          this.backdrop =\r\n            this.withBackdrop[this.withBackdrop.length - 1].config.backdrop;\r\n      }\r\n    } else {\r\n      if (!this.withBackdrop.length) this.backdrop = -1;\r\n      else\r\n        this.backdrop =\r\n          this.withBackdrop[this.withBackdrop.length - 1].config.backdrop;\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      // eslint-disable-next-line no-prototype-builtins\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  remove() {\r\n    const notlen = this.getNotificationLength();\r\n    if (this.closeOnBackground && notlen > 0) {\r\n      if (this.notifications.centerTop.length > 0)\r\n        this.notifications.centerTop.map((x) => this.service.remove(x.id));\r\n      if (this.notifications.centerCenter.length > 0)\r\n        this.notifications.centerCenter.map((x) => this.service.remove(x.id));\r\n      if (this.notifications.centerBottom.length > 0)\r\n        this.notifications.centerBottom.map((x) => this.service.remove(x.id));\r\n      if (this.notifications.leftTop.length > 0)\r\n        this.notifications.leftTop.map((x) => this.service.remove(x.id));\r\n      if (this.notifications.leftCenter.length > 0)\r\n        this.notifications.leftCenter.map((x) => this.service.remove(x.id));\r\n      if (this.notifications.leftBottom.length > 0)\r\n        this.notifications.leftBottom.map((x) => this.service.remove(x.id));\r\n      if (this.notifications.rightTop.length > 0)\r\n        this.notifications.rightTop.map((x) => this.service.remove(x.id));\r\n      if (this.notifications.rightCenter.length > 0)\r\n        this.notifications.rightCenter.map((x) => this.service.remove(x.id));\r\n      if (this.notifications.rightBottom.length > 0)\r\n        this.notifications.rightBottom.map((x) => this.service.remove(x.id));\r\n    }\r\n  }\r\n  getNotificationLength = (): number => {\r\n    const result =\r\n      this.notifications.centerBottom.length +\r\n      this.notifications.centerCenter.length +\r\n      this.notifications.centerTop.length +\r\n      this.notifications.leftBottom.length +\r\n      this.notifications.leftCenter.length +\r\n      this.notifications.leftTop.length +\r\n      this.notifications.rightBottom.length +\r\n      this.notifications.rightCenter.length +\r\n      this.notifications.rightTop.length;\r\n    return result;\r\n  };\r\n}\r\n","<div\r\n  class=\"snotify-backdrop\"\r\n  style=\"position: absolute\"\r\n  *ngIf=\"backdrop >= 0\"\r\n  [style.opacity]=\"backdrop\"\r\n  (click)=\"remove()\"\r\n></div>\r\n<div\r\n  *ngFor=\"let position of notifications | keys\"\r\n  class=\"snotify snotify-{{ position }}\"\r\n>\r\n  <ng-snotify-toast\r\n    *ngFor=\"\r\n      let notification of notifications[position]\r\n        | slice : blockSizeA : blockSizeB\r\n    \"\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: [\r\n    SnotifyComponent,\r\n    ToastComponent,\r\n    TruncatePipe,\r\n    ButtonsComponent,\r\n    PromptComponent,\r\n    KeysPipe,\r\n  ],\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 sdcore snotify\r\n */\r\n\r\nexport * from './src/components';\r\nexport * from './src/enums';\r\nexport * from './src/interfaces';\r\nexport * from './src/models';\r\nexport * from './src/pipes';\r\nexport * from './src/services';\r\nexport * from './src/snotify.module';\r\nexport * from './src/toast-defaults';\r\nexport * from './src/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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"}