{"version":3,"file":"ngx-snotifire.mjs","sources":["../../../projects/ngx-snotifire/src/lib/decorators/set-toast-type.decorator.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire-event.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire-position.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire.type.ts","../../../projects/ngx-snotifire/src/lib/models/snotifire.model.ts","../../../projects/ngx-snotifire/src/lib/decorators/transform-argument.decorator.ts","../../../projects/ngx-snotifire/src/lib/components/toast/notifire-toast.model.ts","../../../projects/ngx-snotifire/src/lib/utils.ts","../../../projects/ngx-snotifire/src/lib/services/notification.service.ts","../../../projects/ngx-snotifire/src/lib/components/buttons/buttons.component.ts","../../../projects/ngx-snotifire/src/lib/components/buttons/buttons.component.html","../../../projects/ngx-snotifire/src/lib/pipes/truncate.pipe.ts","../../../projects/ngx-snotifire/src/lib/components/prompt/prompt.component.ts","../../../projects/ngx-snotifire/src/lib/components/prompt/prompt.component.html","../../../projects/ngx-snotifire/src/lib/components/toast/toast.component.ts","../../../projects/ngx-snotifire/src/lib/components/toast/toast.component.html","../../../projects/ngx-snotifire/src/lib/pipes/keys.pipe.ts","../../../projects/ngx-snotifire/src/lib/components/ngx-notifire/ngx-snotifire.component.ts","../../../projects/ngx-snotifire/src/lib/components/ngx-notifire/ngx-snotifire.component.html","../../../projects/ngx-snotifire/src/lib/ngx-snotifire.module.ts","../../../projects/ngx-snotifire/src/lib/defaults/toast-defaults.ts","../../../projects/ngx-snotifire/src/public-api.ts","../../../projects/ngx-snotifire/src/ngx-snotifire.ts"],"sourcesContent":["import { SnotifireModel, SnotifireType } from '../models';\n\n/**\n * Defines toast style depending on method name\n * @param target any\n * @param propertyKey NotificationType\n * @param descriptor PropertyDescriptor\n * @returns value: ((...args: any[]) => any)\n */\nexport function SetToastType(\n  target: any,\n  propertyKey: string,\n  descriptor: PropertyDescriptor\n) {\n  return {\n    value(...args: any[]) {\n      (args[0] as SnotifireModel).config = {\n        ...(args[0] as SnotifireModel).config,\n        type: propertyKey as SnotifireType,\n      };\n      return descriptor.value.apply(this, args);\n    },\n  };\n}\n","export enum SnotifireEventType {\n  MOUNTED = 'mounted',\n  BEFORE_SHOW = 'beforeShow',\n  SHOWN = 'shown',\n  INPUT = 'input',\n  CLICK = 'click',\n  MOUSE_ENTER = 'mouseenter',\n  MOUSE_LEAVE = 'mouseleave',\n  BEFORE_HIDE = 'beforeHide',\n  HIDDEN = 'hidden',\n  DESTROYED = 'destroyed',\n}\n","export enum SnotificationPositionType {\n  LEFT_TOP = 'leftTop',\n  LEFT_CENTER = 'leftCenter',\n  LEFT_BOTTOM = 'leftBottom',\n  RIGHT_TOP = 'rightTop',\n  RIGHT_CENTER = 'rightCenter',\n  RIGHT_BOTTOM = 'rightBottom',\n  CENTER_TOP = 'centerTop',\n  CENTER_CENTER = 'centerCenter',\n  CENTER_BOTTOM = 'centerBottom',\n}\n","export enum SnotifireType {\n  SUCCESS = 'success',\n  INFO = 'info',\n  WARNING = 'warning',\n  ERROR = 'error',\n  ASYNC = 'async',\n  CONFIRM = 'confirm',\n  PROMPT = 'prompt',\n}\n","import { SafeHtml } from '@angular/platform-browser';\nimport { SnotifireConfig } from './snotifire-config.interface';\nimport { SnotifireType } from './snotifire.type';\n\nexport class SnotifireModel {\n  constructor(\n    public type?: SnotifireType,\n    /**\n     * Notification Title\n     */\n    public title?: string,\n    /**\n     * Notification message\n     */\n    public body?: string,\n    /**\n     * Config object\n     */\n    public config?: SnotifireConfig,\n    /**\n     * Html content\n     */\n    public html?: string | SafeHtml\n  ) {}\n}\n","import { SnotifireConfig, SnotifireModel, SnotifireType } from '../models';\n\n//todo: cp check if async\n/**\n * Transform arguments to Snotify object\n * @param target any\n * @param propertyKey SnotifyTypeType\n * @param descriptor PropertyDescriptor\n * @returns Snotify\n */\nexport function TransformArgument(\n  target: any,\n  propertyKey: string,\n  descriptor: PropertyDescriptor\n) {\n  if (propertyKey === SnotifireType.ASYNC) {\n    return {\n      value(...args: any[]) {\n        let result;\n        if (args.length === 2) {\n          result = {\n            title: null,\n            body: args[0],\n            config: null,\n            action: args[1],\n          };\n        } else if (args.length === 3) {\n          if (typeof args[1] === 'string') {\n            result = {\n              title: args[1],\n              body: args[0],\n              config: null,\n              action: args[2],\n            };\n          } else {\n            result = {\n              title: null,\n              body: args[0],\n              config: args[2],\n              action: args[1],\n            };\n          }\n        } else {\n          result = {\n            title: args[1],\n            body: args[0],\n            config: args[3],\n            action: args[2],\n          };\n        }\n        return descriptor.value.apply(this, [\n          result as unknown as Notification,\n        ]);\n      },\n    };\n  } else {\n    return {\n      value(...args: any[]) {\n        let result;\n        if (args.length === 1) {\n          result = {\n            title: null,\n            body: args[0],\n            config: null,\n          };\n        } else if (args.length === 3) {\n          result = {\n            title: args[1],\n            body: args[0],\n            config: args[2],\n          };\n        } else {\n          result = {\n            title: null,\n            config: null,\n            body: args[0],\n            [typeof args[1] === 'string' ? 'title' : 'config']: args[1],\n          };\n        }\n        return descriptor.value.apply(this, [\n          result as unknown as Notification,\n        ]);\n      },\n    };\n  }\n}\n","import { Subject, Subscription } from 'rxjs';\nimport { SnotifireConfig } from '../../models/snotifire-config.interface';\nimport { SnotifireEventType } from '../../models/snotifire-event.type';\nimport { SnotifireType } from '../../models/snotifire.type';\n\n/**\n * Toast main model\n */\nexport class SnotifireToastModel {\n  /**\n   * Emits NotifireEventType\n   */\n  readonly eventEmitter = new Subject<SnotifireEventType>();\n\n  /**\n   * Holds all subscribers because we need to unsubscribe from all before toast get destroyed\n   */\n  private eventsHolder: Subscription[] = [];\n\n  /**\n   * Toast prompt value\n   */\n  value?: string;\n\n  /**\n   * Toast validator\n   */\n  valid: boolean = true;\n\n  constructor(\n    public readonly id: number,\n    public readonly title: string,\n    public readonly body: string,\n    public readonly config: SnotifireConfig\n  ) {\n    if (this.config && this.config.type === SnotifireType.PROMPT) {\n      this.value = '';\n    }\n    this.on(SnotifireEventType.HIDDEN, () => {\n      this.eventsHolder.forEach((subscription: Subscription) => {\n        subscription.unsubscribe();\n      });\n    });\n  }\n  /**\n   * Subscribe to toast events\n   * @returns this\n   * @param event NotificationEventType\n   * @param action (toast: this) => void\n   */\n  on(event: SnotifireEventType, action: (toast: this) => void): this {\n    this.eventsHolder.push(\n      this.eventEmitter.subscribe((e: SnotifireEventType) => {\n        if (e === event) {\n          action(this);\n        }\n      })\n    );\n    return this;\n  }\n\n  /**\n   * Tests if a toast equals this toast.\n   * @returns boolean true then equals else false.\n   * @param toast notifire-toast\n   */\n  equals(toast: SnotifireToastModel): boolean {\n    return this.config && toast.config\n      ? this.body === toast.body &&\n          this.title === toast.title &&\n          this.config.type === toast.config.type\n      : this.body === toast.body && this.title === toast.title;\n  }\n}\n","/**\n * Deep merge objects.\n * @param sources Array<Object<any>>\n * @returns Object<any>\n */\nexport function mergeDeep(...sources: any[]) {\n  const target: any = {};\n  if (!sources.length) {\n    return target;\n  }\n\n  while (sources.length > 0) {\n    const source = sources.shift();\n    if (isObject(source)) {\n      for (const key in source) {\n        if (isObject(source[key])) {\n          target[key] = mergeDeep(target[key], source[key]);\n        } else {\n          Object.assign(target, { [key]: source[key] });\n        }\n      }\n    }\n  }\n  return target;\n}\n/**\n * Generates random id\n * @return number\n */\nexport function uuid(): number {\n  return Math.floor(Math.random() * (Date.now() - 1)) + 1;\n}\n/**\n * Simple is object check.\n * @param item Object<any>\n * @returns boolean\n */\nexport function isObject(item: any): boolean {\n  return item && typeof item === 'object' && !Array.isArray(item);\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport {\n  catchError,\n  finalize,\n  from,\n  Observable,\n  of,\n  Subject,\n  tap,\n  throwError,\n} from 'rxjs';\nimport { SetToastType } from '../decorators/set-toast-type.decorator';\nimport { TransformArgument } from '../decorators/transform-argument.decorator';\nimport { SnotifireConfig, SnotifireEventType, SnotifireType } from '../models';\nimport { SnotifireDefaults } from '../defaults/defaults.interface';\nimport { SnotifireModel } from '../models/snotifire.model';\nimport { SnotifireToastModel } from '../components/toast/notifire-toast.model';\nimport { mergeDeep, uuid } from '../utils';\n\n@Injectable()\nexport class SnotifireService {\n  /**\n   * Minimum display time of the notification message\n   */\n  private readonly minimumDisplayedTime = 3000;\n\n  /**\n   * Emits Notifire Notifications\n   */\n  readonly emitter = new Subject<SnotifireToastModel[]>();\n\n  readonly toastDeleted = new Subject<number>();\n  readonly toastChanged = new Subject<SnotifireToastModel>();\n\n  notifications: Array<SnotifireToastModel> = [];\n\n  constructor(\n    @Inject('snotifireConfig') public defaultConfig: SnotifireDefaults\n  ) {}\n\n  /**\n   * Creates toast and add it to array, returns toast id\n   * @param NotificationModel NotificationModel\n   * @return number\n   */\n  create(notif: SnotifireModel): SnotifireToastModel {\n    if (this.defaultConfig.type && notif.config && notif.config.type) {\n      const config = mergeDeep(\n        this.defaultConfig.snotifireConfig,\n        this.defaultConfig.type[notif.config.type],\n        notif.config\n      );\n      const toast = new SnotifireToastModel(\n        uuid(),\n        notif.title ? notif.title : '',\n        notif.body ? notif.body : '',\n        config\n      );\n      this.add(toast);\n      return toast;\n    }\n    const config = mergeDeep(this.defaultConfig.snotifireConfig, notif.config);\n    const defaulToast = new SnotifireToastModel(\n      uuid(),\n      notif.title ? notif.title : '',\n      notif.body ? notif.body : '',\n      config\n    );\n    this.add(defaulToast);\n    return defaulToast;\n  }\n  /**\n   * If ID passed, emits toast animation remove, if ID & REMOVE passed, removes toast from notifications array\n   * @param id number\n   * @param remove boolean\n   */\n  remove(id: number, remove?: boolean): void {\n    if (!id) {\n      return this.clear();\n    }\n    if (remove) {\n      this.notifications = this.notifications.filter(\n        (toast) => toast.id !== id\n      );\n      return this.emit();\n    }\n    this.toastDeleted.next(id);\n  }\n\n  setDefaults(defaults: SnotifireDefaults): SnotifireDefaults {\n    const mergedConfig = (this.defaultConfig = mergeDeep(\n      this.defaultConfig,\n      defaults\n    ) as SnotifireDefaults);\n    return mergedConfig;\n  }\n\n  /**\n   * Clear notifications array\n   */\n  clear(): void {\n    this.notifications = [];\n    this.emit();\n  }\n\n  /**\n   * add NotifireToast to notifications array\n   * @param toast NotifireToast\n   */\n  private add(toast: SnotifireToastModel): void {\n    if (\n      this.defaultConfig &&\n      this.defaultConfig.global &&\n      this.defaultConfig.global.filterDuplicates &&\n      this.containsToast(toast)\n    ) {\n      if (!this.defaultConfig.global.filterDuplicates) {\n        throw new Error('Missing global config');\n      }\n      return;\n    }\n    if (\n      this.defaultConfig &&\n      this.defaultConfig.global &&\n      this.defaultConfig.global.newOnTop\n    ) {\n      this.notifications.unshift(toast);\n    } else {\n      this.notifications.push(toast);\n    }\n    this.emit();\n  }\n\n  /**\n   * emit changes in notifications array\n   */\n  private emit(): void {\n    this.emitter.next(this.notifications.slice());\n  }\n\n  /**\n   * checks if the toast is in the collection.\n   * @param inToast NotifireToast\n   * @returns boolean\n   */\n  private containsToast(inToast: SnotifireToastModel): boolean {\n    return this.notifications.some((toast) => toast.equals(inToast));\n  }\n\n  /**\n   * Creates empty toast with html string inside\n   * @param html string | SafeHtml\n   * @param config NotifireConfig\n   * @returns number\n   */\n  html(html: string | SafeHtml, config?: SnotifireConfig): SnotifireToastModel {\n    return this.create({\n      title: undefined,\n      body: undefined,\n      config: {\n        ...config,\n        ...{ html },\n      },\n    });\n  }\n  /**\n   * Create toast with success style returns toast id;\n   * @param body string\n   * @returns number\n   */\n  success(body: string): SnotifireToastModel;\n  /**\n   * Create toast with success style returns toast id;\n   * @param body string\n   * @param title string\n   * @returns number\n   */\n  success(body: string, title: string): SnotifireToastModel;\n  /**\n   * Create toast with success style returns toast id;\n   * @param body string\n   * @param config NotificationConfig\n   * @returns number\n   */\n  success(body: string, config: SnotifireConfig): SnotifireToastModel;\n  /**\n   * Create toast with success style  returns toast id;\n   * @param [body] string\n   * @param [title] string\n   * @param [config] NotificationConfig\n   * @returns number\n   */\n  success(\n    body: string,\n    title: string,\n    config: SnotifireConfig\n  ): SnotifireToastModel;\n\n  /**\n   * Transform toast arguments into NotificationModel object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  success(args: any): SnotifireToastModel {\n    if (!args.config) {\n      throw new Error('Missing config, please configure service accordingly');\n    }\n    return this.create(args);\n  }\n\n  /**\n   * Create toast with error style returns toast id;\n   * @param body string\n   * @returns number\n   */\n  error(body: string): SnotifireToastModel;\n  /**\n   * Create toast with error style returns toast id;\n   * @param body string\n   * @param title string\n   * @returns number\n   */\n  error(body: string, title: string): SnotifireToastModel;\n  /**\n   * Create toast with error style returns toast id;\n   * @param body string\n   * @param config NotificationConfig\n   * @returns number\n   */\n  error(body: string, config: SnotifireConfig): SnotifireToastModel;\n  /**\n   * Create toast with error style  returns toast id;\n   * @param [body] string\n   * @param [title] string\n   * @param [config] NotificationConfig\n   * @returns number\n   */\n  error(\n    body: string,\n    title: string,\n    config: SnotifireConfig\n  ): SnotifireToastModel;\n  /**\n   * Transform toast arguments into NotificationModel object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  error(args: any): SnotifireToastModel {\n    return this.create(args);\n  }\n\n  /**\n   * Create toast with info style returns toast id;\n   * @param body string\n   * @returns number\n   */\n  info(body: string): SnotifireToastModel;\n  /**\n   * Create toast with info style returns toast id;\n   * @param body string\n   * @param title string\n   * @returns number\n   */\n  info(body: string, title: string): SnotifireToastModel;\n  /**\n   * Create toast with info style returns toast id;\n   * @param body string\n   * @param config NotificationConfig\n   * @returns number\n   */\n  info(body: string, config: SnotifireConfig): SnotifireToastModel;\n  /**\n   * Create toast with info style  returns toast id;\n   * @param [body] string\n   * @param [title] string\n   * @param [config] NotificationConfig\n   * @returns number\n   */\n  info(\n    body: string,\n    title: string,\n    config: SnotifireConfig\n  ): SnotifireToastModel;\n  /**\n   * Transform toast arguments into NotificationModel object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  info(args: any): SnotifireToastModel {\n    return this.create(args);\n  }\n\n  /**\n   * Create toast with warning style returns toast id;\n   * @param body string\n   * @returns number\n   */\n  warning(body: string): SnotifireToastModel;\n  /**\n   * Create toast with warning style returns toast id;\n   * @param body string\n   * @param title string\n   * @returns number\n   */\n  warning(body: string, title: string): SnotifireToastModel;\n  /**\n   * Create toast with warning style returns toast id;\n   * @param body string\n   * @param config NotificationConfig\n   * @returns number\n   */\n  warning(body: string, config: SnotifireConfig): SnotifireToastModel;\n  /**\n   * Create toast with warning style  returns toast id;\n   * @param [body] string\n   * @param [title] string\n   * @param [config] NotificationConfig\n   * @returns number\n   */\n  warning(\n    body: string,\n    title: string,\n    config: SnotifireConfig\n  ): SnotifireToastModel;\n  /**\n   * Transform toast arguments into NotificationModel object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  warning(args: any): SnotifireToastModel {\n    return this.create(args);\n  }\n\n  /**\n   * Create toast with confirm style returns toast id;\n   * @param body string\n   * @returns number\n   */\n  confirm(body: string): SnotifireToastModel;\n  /**\n   * Create toast with confirm style returns toast id;\n   * @param body string\n   * @param title string\n   * @returns number\n   */\n  confirm(body: string, title: string): SnotifireToastModel;\n  /**\n   * Create toast with confirm style returns toast id;\n   * @param body string\n   * @param config NotificationConfig\n   * @returns number\n   */\n  confirm(body: string, config: SnotifireConfig): SnotifireToastModel;\n  /**\n   * Create toast with confirm style  returns toast id;\n   * @param [body] string\n   * @param [title] string\n   * @param [config] NotificationConfig\n   * @returns number\n   */\n  confirm(\n    body: string,\n    title: string,\n    config: SnotifireConfig\n  ): SnotifireToastModel;\n  /**\n   * Transform toast arguments into NotificationModel object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  confirm(args: any): SnotifireToastModel {\n    return this.create(args);\n  }\n\n  /**\n   * Create toast with Prompt style with two buttons, returns toast id;\n   * @param body string\n   * @returns number\n   */\n  prompt(body: string): SnotifireToastModel;\n  /**\n   * Create toast with Prompt style with two buttons, returns toast id;\n   * @param body string\n   * @param title string\n   * @returns number\n   */\n  prompt(body: string, title: string): SnotifireToastModel;\n  /**\n   * Create toast with Prompt style with two buttons, returns toast id;\n   * @param body string\n   * @param config NotificationConfig\n   * @returns number\n   */\n  prompt(body: string, config: SnotifireConfig): SnotifireToastModel;\n  /**\n   * Create toast with Prompt style with two buttons, returns toast id;\n   * @param [body] string\n   * @param [title] string\n   * @param [config] NotificationConfig\n   * @returns number\n   */\n  prompt(\n    body: string,\n    title: string,\n    config: SnotifireConfig\n  ): SnotifireToastModel;\n  /**\n   * Transform toast arguments into NotificationModel object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  prompt(args: any): SnotifireToastModel {\n    return this.create(args);\n  }\n\n  /**\n   * Creates async toast with Info style. Pass action, and resolve or reject it.\n   * @param body string\n   * @param action Promise<NotificationModel> | Observable<NotificationModel>\n   * @returns number\n   */\n  async(\n    body: string,\n    action: Promise<SnotifireModel> | Observable<SnotifireModel>\n  ): SnotifireToastModel;\n  /**\n   * Creates async toast with Info style. Pass action, and resolve or reject it.\n   * @param body string\n   * @param title string\n   * @param action Promise<NotificationModel> | Observable<NotificationModel>\n   * @returns number\n   */\n  async(\n    body: string,\n    title: string,\n    action: Promise<SnotifireModel> | Observable<SnotifireModel>\n  ): SnotifireToastModel;\n  /**\n   * Creates async toast with Info style. Pass action, and resolve or reject it.\n   * @param body string\n   * @param action Promise<NotificationModel> | Observable<NotificationModel>\n   * @param [config] NotificationConfig\n   * @returns number\n   */\n  async(\n    body: string,\n    action: Promise<SnotifireModel> | Observable<SnotifireModel>,\n    config: SnotifireConfig\n  ): SnotifireToastModel;\n  /**\n   * Creates async toast with Info style. Pass action, and resolve or reject it.\n   * @param body string\n   * @param title string\n   * @param action Promise<NotificationModel> | Observable<NotificationModel>\n   * @param [config] NotificationConfig\n   * @returns number\n   */\n  async(\n    body: string,\n    title: string,\n    action: Promise<SnotifireModel> | Observable<SnotifireModel>,\n    config: SnotifireConfig\n  ): SnotifireToastModel;\n  /**\n   * Transform toast arguments into NotificationModel object\n   */\n  @TransformArgument\n  /**\n   * Determines current toast type and collects default configuration\n   */\n  @SetToastType\n  async(args: any): SnotifireToastModel {\n    let async: Observable<any>;\n    if (args.action instanceof Promise) {\n      async = from(args.action);\n    } else {\n      async = args.action;\n    }\n\n    const toast = this.create(args);\n    let failed = false;\n    async\n      .subscribe({\n        next: (next) => this.mergeToast(toast, next),\n        error: (error) => {\n          failed = true;\n          // As long as error is defined, and not an error object assume it is a new toast config\n          if (error && typeof error === 'object' && !(error instanceof Error)) {\n            this.mergeToast(toast, error);\n          }\n        },\n      })\n      .add(() => {\n        this.mergeToast(\n          toast,\n          {},\n          failed === true ? SnotifireType.ERROR : SnotifireType.SUCCESS\n        );\n      });\n    return toast;\n\n    // const toast = this.create(args);\n\n    // toast.on(SnotifireEventType.MOUNTED, () => {\n    //   const subscription: Subscription = async.subscribe({\n    //     next: (next?: SnotifireModel) => {\n    //       this.mergeToast(toast, next);\n    //     },\n    //     error: (error?: SnotifireModel) => {\n    //       this.mergeToast(toast, error, SnotifireType.ERROR);\n    //       subscription.unsubscribe();\n    //     },\n    //     complete: () => {\n    //       this.mergeToast(toast, {}, SnotifireType.SUCCESS);\n    //       subscription.unsubscribe();\n    //     },\n    //   });\n    // });\n\n    // return toast;\n  }\n\n  private mergeToast(toast: any, next: any, type?: SnotifireType) {\n    if (next.body) {\n      toast.body = next.body;\n    }\n    if (next.title) {\n      toast.title = next.title;\n    }\n\n    if (type && this.defaultConfig) {\n      console.log(type);\n      toast.config = mergeDeep(\n        toast.config,\n        this.defaultConfig.global,\n        this.defaultConfig.snotifireConfig?.type,\n        { type },\n        next.config\n      );\n    } else {\n      toast.config = mergeDeep(toast.config, next.config);\n    }\n    if (next.html) {\n      toast.config.html = next.html;\n    }\n    this.emit();\n    this.toastChanged.next(toast);\n  }\n  /**\n   * returns SnotifyToast object\n   * @param id Number\n   * @return SnotifyToast|undefined\n   */\n  get(id: number): SnotifireToastModel | undefined {\n    return (\n      this.notifications && this.notifications.find((toast) => toast.id === id)\n    );\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnInit,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { SnotifireToastModel } from '../toast/notifire-toast.model';\nimport { SnotifireService } from '../../services';\n\n@Component({\n    selector: 'notifire-button',\n    templateUrl: './buttons.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\n/**\n * Buttons component\n */\nexport class ButtonsComponent {\n  /**\n   * Get buttons Array\n   */\n  @Input() toast!: SnotifireToastModel;\n\n  constructor(private readonly service: SnotifireService) {}\n\n  /**\n   * remove toast\n   */\n  remove() {\n    this.service.remove(this.toast.id);\n  }\n}\n","<div class=\"notifire-toast__buttons\">\n    @if (toast.config) {\n        @for (button of toast.config.buttons; track button.text) {\n            <button\n                type=\"button\"\n                [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n                (click)=\"button.action ? button.action(toast) : remove()\"\n            >\n                {{ button.text }}\n            </button>\n        }\n    }\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'truncate',\n    standalone: false\n})\n\n/**\n * Truncate toast text pipe\n */\nexport class TruncatePipe implements PipeTransform {\n  private readonly DEFAULT_LIMIT = 40;\n  private readonly DEFAULT_TRAIL = '...';\n  transform(value: string, ...args: Array<any>): any {\n    const limit = args.length > 0 ? parseInt(args[0], 10) : this.DEFAULT_LIMIT;\n\n    return value.length > limit\n      ? value.substring(0, limit) +\n          (args.length > 1 ? args[1] : this.DEFAULT_TRAIL)\n      : value;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnInit,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { SnotifireEventType } from '../../models';\nimport { SnotifireToastModel } from '../toast/notifire-toast.model';\n\n@Component({\n    selector: 'ngx-snotify-prompt',\n    templateUrl: './prompt.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class PromptComponent {\n  inputType = SnotifireEventType.INPUT;\n  /**\n   * Get PROMPT placeholder\n   */\n  @Input() toast!: SnotifireToastModel;\n  /**\n   * Is PROMPT focused\n   */\n  isPromptFocused = false;\n\n  getValue($event: any): string {\n    return $event.target.value;\n  }\n}\n","<span\n    class=\"notifire-toast__input\"\n    [ngClass]=\"{ 'notifire-toast__input--filled': isPromptFocused }\"\n>\n    <input\n        (input)=\"toast.value = getValue($event); toast.eventEmitter.next(inputType)\"\n        autofocus\n        class=\"notifire-toast__input__field\"\n        type=\"text\"\n        [id]=\"toast.id\"\n        (focus)=\"isPromptFocused = true\"\n        (blur)=\"isPromptFocused = !!toast.value && !!toast.value.length\"\n    >\n    <label\n        class=\"notifire-toast__input__label\"\n        [for]=\"toast.id\"\n    >\n        @if (toast.config && toast.config.placeholder) {\n            <span class=\"notifire-toast__input__labelContent\">\n                {{ toast.config.placeholder | truncate }}\n            </span>\n        }\n    </label>\n</span>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { SnotifireEventType, SnotifireType } from '../../models';\nimport { SnotifireToastModel } from './notifire-toast.model';\nimport { SnotifireService } from '../../services';\n\n@Component({\n    selector: 'ngx-toast',\n    templateUrl: './toast.component.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n  private unsubscribe$ = new Subject<void>();\n\n  /**\n   * Get toast from notifications array\n   */\n  @Input() toast!: SnotifireToastModel;\n  @Output() stateChanged = new EventEmitter<SnotifireEventType>();\n\n  /**\n   * requestAnimationFrame id\n   */\n  animationFrame!: number;\n\n  /**\n   * Toast state\n   */\n  state = {\n    paused: false,\n    progress: 0,\n    animation: '',\n    isDestroying: false,\n    promptType: SnotifireType.PROMPT,\n  };\n\n  constructor(private readonly service: SnotifireService) {}\n\n  ngOnInit(): void {\n    this.service.toastChanged\n      .pipe(takeUntil(this.unsubscribe$))\n      .subscribe((toast: SnotifireToastModel) => {\n        if (this.toast.id === toast.id) {\n          this.initToast();\n        }\n      });\n\n    this.service.toastDeleted\n      .pipe(takeUntil(this.unsubscribe$))\n      .subscribe((id) => {\n        if (this.toast.id === id) {\n          this.onRemove();\n        }\n      });\n    if (this.toast && this.toast.config && !this.toast.config.timeout) {\n      this.toast.config.showProgressBar = false;\n    }\n\n    this.toast.eventEmitter.next(SnotifireEventType.MOUNTED);\n    this.state.animation = 'notifire-toast--in';\n  }\n  ngAfterContentInit() {\n    if (\n      this.service.defaultConfig.snotifireConfig &&\n      this.service.defaultConfig.snotifireConfig.animation\n    ) {\n      setTimeout(() => {\n        this.stateChanged.emit(SnotifireEventType.BEFORE_SHOW);\n        this.toast.eventEmitter.next(SnotifireEventType.BEFORE_SHOW);\n        this.state.animation =\n          this.toast.config &&\n          this.toast.config.animation &&\n          this.toast.config.animation.enter\n            ? this.toast.config.animation.enter\n            : '';\n      }, this.service.defaultConfig.snotifireConfig.animation.time / 5); // time to show toast push animation (notifire-toast--in)\n    }\n  }\n  /**\n   * Trigger beforeDestroy lifecycle. Removes toast\n   */\n  onRemove() {\n    this.state.isDestroying = true;\n    this.toast.eventEmitter.next(SnotifireEventType.BEFORE_HIDE);\n    this.stateChanged.emit(SnotifireEventType.BEFORE_HIDE);\n    this.state.animation =\n      (this.toast.config &&\n        this.toast.config.animation &&\n        this.toast.config.animation.exit) ||\n      '';\n    setTimeout(() => {\n      this.stateChanged.emit(SnotifireEventType.HIDDEN);\n      this.state.animation = 'notifire-toast--out';\n      this.toast.eventEmitter.next(SnotifireEventType.HIDDEN);\n      setTimeout(\n        () => this.service.remove(this.toast.id, true),\n        this.toast.config &&\n          this.toast.config.animation &&\n          this.toast.config.animation.time / 2\n      );\n    }, this.toast.config && this.toast.config.animation && this.toast.config.animation.time / 2);\n  }\n  /**\n   * Trigger OnClick lifecycle\n   */\n  onClick() {\n    this.toast.eventEmitter.next(SnotifireEventType.CLICK);\n    if (this.toast && this.toast.config && this.toast.config.closeOnClick) {\n      this.service.remove(this.toast.id);\n    }\n  }\n  /**\n   * Trigger onHoverEnter lifecycle\n   */\n  onMouseEnter() {\n    this.toast.eventEmitter.next(SnotifireEventType.MOUSE_ENTER);\n    if (this.toast && this.toast.config && this.toast.config.pauseOnHover) {\n      this.state.paused = true;\n    }\n  }\n\n  /**\n   * Trigger onHoverLeave lifecycle\n   */\n  onMouseLeave() {\n    if (\n      this.toast &&\n      this.toast.config &&\n      this.toast.config.pauseOnHover &&\n      this.toast.config.timeout\n    ) {\n      this.state.paused = false;\n      this.startTimeout(this.toast.config.timeout * this.state.progress);\n    }\n    this.toast.eventEmitter.next(SnotifireEventType.MOUSE_LEAVE);\n  }\n  /**\n   * Remove toast completely after animation\n   */\n  onExitTransitionEnd() {\n    if (this.state.isDestroying) {\n      return;\n    }\n    this.initToast();\n    this.toast.eventEmitter.next(SnotifireEventType.SHOWN);\n  }\n\n  /*\n   Common\n   */\n\n  /**\n   * Initialize base toast config\n   *\n   */\n  initToast(): void {\n    if (\n      (this.toast && this.toast.config && this.toast.config.timeout\n        ? this.toast.config.timeout\n        : 0) > 0\n    ) {\n      this.startTimeout(0);\n    }\n  }\n  /**\n   * Start progress bar\n   * @param startTime number\n   */\n  startTimeout(startTime: number = 0) {\n    const start = performance.now();\n    const calculate = () => {\n      this.animationFrame = requestAnimationFrame((timestamp) => {\n        const runtime = timestamp + startTime - start;\n        const progress = Math.min(\n          runtime /\n            (this.toast && this.toast.config && this.toast.config.timeout\n              ? this.toast.config.timeout\n              : 1),\n          1\n        );\n        if (this.state.paused) {\n          cancelAnimationFrame(this.animationFrame);\n        } else if (\n          runtime <\n          (this.toast && this.toast.config && this.toast.config.timeout\n            ? this.toast.config.timeout\n            : 1)\n        ) {\n          this.state.progress = progress;\n          calculate();\n        } else {\n          this.state.progress = 1;\n          cancelAnimationFrame(this.animationFrame);\n          this.service.remove(this.toast.id);\n        }\n      });\n    };\n    calculate();\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribe$.next();\n    this.unsubscribe$.complete();\n  }\n}\n","@if (toast && toast.config) {\n    <div\n        [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n        [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n        [attr.aria-modal]=\"toast.config.type === state.promptType\"\n        [ngClass]=\"[\n  'notifire-toast animated',\n  'snotify-' + toast.config.type,\n  state.animation,  toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n        [ngStyle]=\"{\n  '-webkit-transition': toast.config.animation && toast.config.animation.time  + 'ms',\n  transition:  toast.config.animation && toast.config.animation.time + 'ms',\n  '-webkit-animation-duration':  toast.config.animation &&  toast.config.animation.time + 'ms',\n  'animation-duration':  toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n        (animationend)=\"onExitTransitionEnd()\"\n        (click)=\"onClick()\"\n        (mouseenter)=\"onMouseEnter()\"\n        (mouseleave)=\"onMouseLeave()\"\n    >\n        @if (toast.config.showProgressBar) {\n            <div class=\"notifire-toast__progressBar\">\n                <span\n                    class=\"notifire-toast__progressBar__percentage\"\n                    [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n                ></span>\n            </div>\n        }\n        @if (!toast.config.html) {\n            <div class=\"notifire-toast__inner\">\n                @if (toast.title) {\n                    <div\n                        class=\"notifire-toast__title\"\n                        [attr.id]=\"'snotify_' + toast.id\"\n                    >\n                        {{ toast.title | truncate: toast.config.titleMaxLength }}\n                    </div>\n                }\n                @if (toast.body) {\n                    <div class=\"notifire-toast__body\">\n                        {{ toast.body | truncate: toast.config.bodyMaxLength }}\n                    </div>\n                }\n                @if (toast.config.type === state.promptType) {\n                    <ngx-snotify-prompt [toast]=\"toast\"></ngx-snotify-prompt>\n                }\n                @if (!toast.config.icon) {\n                    <div\n                        [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n                    ></div>\n                } @else {\n                    <img\n                        class=\"snotifire-icon\"\n                        [src]=\"toast.config.icon\"\n                    >\n                }\n            </div>\n        } @else {\n            <div\n                class=\"notifire-toast__inner\"\n                [innerHTML]=\"toast.config.html\"\n            ></div>\n        }\n        @if (toast.config.buttons) {\n            <notifire-button [toast]=\"toast\"></notifire-button>\n        }\n    </div>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'keys',\n    pure: false,\n    standalone: false\n})\n/**\n * Extract object keys pipe\n */\nexport class KeysPipe implements PipeTransform {\n  transform(value: any): any {\n    if (!value) {\n      return value;\n    }\n    return Object.keys(value);\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  OnDestroy,\n  OnInit,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, Subscription, takeUntil } from 'rxjs';\nimport { SnotifireEventType, SnotificationPositionType } from '../../models';\nimport { SnotifireNotifications } from '../../models/snotifire-notifications.interface';\nimport { SnotifireToastModel } from '../toast/notifire-toast.model';\nimport { SnotifireService } from '../../services';\n\n@Component({\n    selector: 'ngx-snotifire',\n    templateUrl: './ngx-snotifire.component.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class NgxSnotifireComponent implements OnInit, OnDestroy, AfterViewInit {\n  private readonly unsubscribe$ = new Subject<void>();\n  /**\n   * Toasts array\n   */\n  notifications!: SnotifireNotifications;\n  /**\n   * Toasts emitter\n   */\n  emitter!: Subscription;\n  /**\n   * Helper for slice pipe (maxOnScreen)\n   */\n  dockSizeA!: number;\n  /**\n   * Helper for slice pipe (maxOnScreen)\n   */\n  dockSizeB!: number | undefined;\n  /**\n   * Helper for slice pipe (maxAtPosition)\n   */\n  blockSizeA!: number;\n  /**\n   * Helper for slice pipe (maxAtPosition)\n   */\n  blockSizeB!: number | undefined;\n  /**\n   * Backdrop Opacity\n   */\n  backdrop: number | undefined = -1;\n  /**\n   * How many toasts with backdrop in current queue\n   */\n  withBackdrop: SnotifireToastModel[] = [];\n\n  constructor(readonly service: SnotifireService) {}\n  ngAfterViewInit(): void {}\n\n  ngOnInit(): void {\n    this.service.emitter\n      .pipe(takeUntil(this.unsubscribe$))\n      .subscribe((toasts: SnotifireToastModel[]) => {\n        if (\n          this.service.defaultConfig &&\n          this.service.defaultConfig.global &&\n          this.service.defaultConfig.global.newOnTop\n        ) {\n          this.dockSizeA = this.service.defaultConfig.global.maxOnScreen\n            ? -this.service.defaultConfig.global.maxOnScreen\n            : 6;\n          this.dockSizeB = undefined;\n          this.blockSizeA = this.service.defaultConfig.global.maxAtPosition\n            ? -this.service.defaultConfig.global.maxAtPosition\n            : 4;\n          this.blockSizeB = undefined;\n          this.withBackdrop = toasts.filter(\n            (toast) =>\n              toast.config &&\n              toast.config.backdrop &&\n              toast.config.backdrop >= 0\n          );\n        } else {\n          this.dockSizeA = 0;\n          this.dockSizeB =\n            this.service.defaultConfig.global &&\n            this.service.defaultConfig.global.maxOnScreen;\n          this.blockSizeA = 0;\n          this.blockSizeB =\n            this.service.defaultConfig.global &&\n            this.service.defaultConfig.global.maxAtPosition;\n          this.withBackdrop = toasts\n            .filter(\n              (toast) =>\n                toast.config &&\n                toast.config.backdrop &&\n                toast.config.backdrop >= 0\n            )\n            .reverse();\n        }\n        this.notifications = this.splitToasts(\n          toasts.slice(this.dockSizeA, this.dockSizeB)\n        );\n        this.stateChanged(SnotifireEventType.MOUNTED);\n      });\n  }\n\n  /**\n   * Split toasts toasts into different objects\n   * @param toasts notifire-toast[]\n   * @returns SnotifyNotifications\n   */\n  splitToasts(toasts: SnotifireToastModel[]): SnotifireNotifications {\n    const result: SnotifireNotifications = {};\n\n    for (const property in SnotificationPositionType) {\n      if (SnotificationPositionType.hasOwnProperty(property)) {\n        result[\n          SnotificationPositionType[\n            property as keyof typeof SnotificationPositionType\n          ]\n        ] = [];\n      }\n    }\n\n    toasts.forEach((toast: SnotifireToastModel) => {\n      if (toast.config.position) {\n        const keyIndex = Object.keys(SnotificationPositionType).indexOf(\n          toast.config.position\n        );\n        const searchedString = Object.values(SnotificationPositionType)[\n          keyIndex\n        ];\n        result[searchedString]?.push(toast);\n      }\n    });\n    return result;\n  }\n\n  getNotificationArray(\n    notifications: SnotifireNotifications,\n    position: SnotificationPositionType\n  ): SnotifireToastModel[] | undefined {\n    return notifications[position];\n  }\n\n  /**\n   * Changes the backdrop opacity\n   * @param event NotificationEventType\n   */\n  stateChanged(event: SnotifireEventType) {\n    if (!this.withBackdrop.length) {\n      if (this.backdrop && this.backdrop >= 0) {\n        this.backdrop = -1;\n      }\n      return;\n    }\n    switch (event) {\n      case 'mounted':\n        if (this.backdrop && this.backdrop < 0) {\n          this.backdrop = 0;\n        }\n        break;\n      case 'beforeShow':\n        this.backdrop =\n          this.withBackdrop[this.withBackdrop.length - 1].config?.backdrop;\n        break;\n      case 'beforeHide':\n        if (this.withBackdrop.length === 1) {\n          this.backdrop = 0;\n        }\n        break;\n      case 'hidden':\n        if (this.withBackdrop.length === 1) {\n          this.backdrop = -1;\n        }\n        break;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribe$.next();\n    this.unsubscribe$.complete();\n  }\n}\n","@if (backdrop && backdrop >= 0) {\n    <div\n        class=\"snotifire-backdrop\"\n        [style.opacity]=\"backdrop\"\n    ></div>\n}\n\n@for (position of notifications | keys; track position) {\n    <div class=\"snotify snotify-{{ position }}\">\n        @for (notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB; track notification.id) {\n            <ngx-toast\n                [toast]=\"notification\"\n                (stateChanged)=\"stateChanged($event)\"\n            >\n            </ngx-toast>\n        }\n    </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n  ButtonsComponent,\n  NgxSnotifireComponent,\n  PromptComponent,\n  ToastComponent,\n} from './components';\nimport { KeysPipe, TruncatePipe } from './pipes';\nimport { SnotifireService } from './services';\n\n@NgModule({\n  declarations: [\n    PromptComponent,\n    ToastComponent,\n    ButtonsComponent,\n    TruncatePipe,\n    KeysPipe,\n    NgxSnotifireComponent,\n  ],\n  imports: [CommonModule],\n  exports: [NgxSnotifireComponent],\n})\nexport class NgxSnotifireModule {\n  static forRoot(): ModuleWithProviders<NgxSnotifireModule> {\n    return {\n      ngModule: NgxSnotifireModule,\n      providers: [SnotifireService],\n    };\n  }\n}\n","import { SnotificationPositionType, SnotifireType } from '../models';\n\n/**\n * Snotify default configuration object\n */\nexport const ToastDefaults = {\n  global: {\n    newOnTop: true,\n    maxOnScreen: 8,\n    maxAtPosition: 8,\n    filterDuplicates: false,\n  },\n  snotifireConfig: {\n    type: SnotifireType.INFO,\n    showProgressBar: true,\n    timeout: 5000,\n    closeOnClick: true,\n    pauseOnHover: true,\n    bodyMaxLength: 150,\n    titleMaxLength: 16,\n    backdrop: -1,\n    icon: undefined,\n    iconClass: undefined,\n    html: undefined,\n    position: 'RIGHT_TOP' as SnotificationPositionType,\n    animation: { enter: 'fadeIn', exit: 'fadeOut', time: 400 },\n  },\n  type: {\n    [SnotifireType.PROMPT]: {\n      timeout: 0,\n      closeOnClick: false,\n      buttons: [\n        { text: 'Ok', action: null, bold: true },\n        { text: 'Cancel', action: null, bold: false },\n      ],\n      placeholder: 'Enter answer here...',\n      type: SnotifireType.PROMPT,\n    },\n    [SnotifireType.CONFIRM]: {\n      timeout: 0,\n      closeOnClick: false,\n      buttons: [\n        { text: 'Ok', action: null, bold: true },\n        { text: 'Cancel', action: null, bold: false },\n      ],\n      type: SnotifireType.CONFIRM,\n    },\n    [SnotifireType.SUCCESS]: {\n      type: SnotifireType.SUCCESS,\n    },\n    [SnotifireType.ERROR]: {\n      type: SnotifireType.ERROR,\n    },\n    [SnotifireType.WARNING]: {\n      type: SnotifireType.WARNING,\n    },\n    [SnotifireType.INFO]: {\n      type: SnotifireType.INFO,\n    },\n    [SnotifireType.ASYNC]: {\n      pauseOnHover: false,\n      closeOnClick: false,\n      timeout: 0,\n      showProgressBar: false,\n      type: SnotifireType.ASYNC,\n    },\n  },\n};\n","/*\n * Public API Surface of ngx-notifire\n */\n\nexport * from './lib/ngx-snotifire.module';\nexport * from './lib/components';\n\nexport * from './lib/models';\nexport * from './lib/pipes';\nexport * from './lib/services';\nexport * from './lib/defaults';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SnotifireService","i1","i2.TruncatePipe","i3.PromptComponent","i4.ButtonsComponent","i5.TruncatePipe","i2.ToastComponent","i3","i4.KeysPipe"],"mappings":"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"}