{"ast":null,"code":"import { __decorate, __param } from 'tslib';\nimport { Inject, Injectable, Input, Component, ChangeDetectionStrategy, ViewEncapsulation, EventEmitter, Output, Pipe, NgModule } from '@angular/core';\nimport { Subject, from } from 'rxjs';\nimport { CommonModule } from '@angular/common';\n/**\r\n * Toast style.\r\n */\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nconst _c0 = function (a0) {\n  return {\n    \"snotifyToast__buttons--bold\": a0\n  };\n};\n\nfunction ButtonsComponent_button_1_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r3 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"button\", 2);\n    ɵngcc0.ɵɵlistener(\"click\", function ButtonsComponent_button_1_Template_button_click_0_listener() {\n      const restoredCtx = ɵngcc0.ɵɵrestoreView(_r3);\n      const button_r1 = restoredCtx.$implicit;\n      const ctx_r2 = ɵngcc0.ɵɵnextContext();\n      return button_r1.action ? button_r1.action(ctx_r2.toast) : ctx_r2.remove();\n    });\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const button_r1 = ctx.$implicit;\n    ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(2, _c0, button_r1.bold));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", button_r1.text, \" \");\n  }\n}\n\nconst _c1 = function (a0) {\n  return {\n    \"snotifyToast__input--filled\": a0\n  };\n};\n\nfunction SnotifyComponent_div_0_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"div\", 2);\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵstyleProp(\"opacity\", ctx_r0.backdrop);\n  }\n}\n\nfunction SnotifyComponent_div_1_ng_snotify_toast_1_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r6 = ɵngcc0.ɵɵgetCurrentView();\n\n    ɵngcc0.ɵɵelementStart(0, \"ng-snotify-toast\", 4);\n    ɵngcc0.ɵɵlistener(\"stateChanged\", function SnotifyComponent_div_1_ng_snotify_toast_1_Template_ng_snotify_toast_stateChanged_0_listener($event) {\n      ɵngcc0.ɵɵrestoreView(_r6);\n      const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n      return ctx_r5.stateChanged($event);\n    });\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const notification_r4 = ctx.$implicit;\n    ɵngcc0.ɵɵproperty(\"toast\", notification_r4);\n  }\n}\n\nfunction SnotifyComponent_div_1_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\");\n    ɵngcc0.ɵɵtemplate(1, SnotifyComponent_div_1_ng_snotify_toast_1_Template, 1, 1, \"ng-snotify-toast\", 3);\n    ɵngcc0.ɵɵpipe(2, \"slice\");\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const position_r2 = ctx.$implicit;\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵclassMapInterpolate1(\"snotify snotify-\", position_r2, \"\");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind3(2, 4, ctx_r1.notifications[position_r2], ctx_r1.blockSizeA, ctx_r1.blockSizeB));\n  }\n}\n\nconst _c2 = function (a0) {\n  return {\n    width: a0\n  };\n};\n\nfunction ToastComponent_div_1_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 5);\n    ɵngcc0.ɵɵelement(1, \"span\", 6);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngStyle\", ɵngcc0.ɵɵpureFunction1(1, _c2, ctx_r0.state.progress * 100 + \"%\"));\n  }\n}\n\nfunction ToastComponent_div_2_div_1_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵpipe(2, \"truncate\");\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵattribute(\"id\", \"snotify_\" + ctx_r5.toast.id);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", ɵngcc0.ɵɵpipeBind2(2, 2, ctx_r5.toast.title, ctx_r5.toast.config.titleMaxLength), \" \");\n  }\n}\n\nfunction ToastComponent_div_2_div_2_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 13);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵpipe(2, \"truncate\");\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate(ɵngcc0.ɵɵpipeBind2(2, 1, ctx_r6.toast.body, ctx_r6.toast.config.bodyMaxLength));\n  }\n}\n\nfunction ToastComponent_div_2_ng_snotify_prompt_3_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"ng-snotify-prompt\", 14);\n  }\n\n  if (rf & 2) {\n    const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵproperty(\"toast\", ctx_r7.toast);\n  }\n}\n\nconst _c3 = function (a1) {\n  return [\"snotify-icon\", a1];\n};\n\nfunction ToastComponent_div_2_div_4_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"div\", 15);\n  }\n\n  if (rf & 2) {\n    const ctx_r8 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(1, _c3, ctx_r8.toast.config.iconClass || \"snotify-icon--\" + ctx_r8.toast.config.type));\n  }\n}\n\nfunction ToastComponent_div_2_ng_template_5_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"img\", 16);\n  }\n\n  if (rf & 2) {\n    const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵproperty(\"src\", ctx_r10.toast.config.icon, ɵngcc0.ɵɵsanitizeUrl);\n  }\n}\n\nfunction ToastComponent_div_2_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 7);\n    ɵngcc0.ɵɵtemplate(1, ToastComponent_div_2_div_1_Template, 3, 5, \"div\", 8);\n    ɵngcc0.ɵɵtemplate(2, ToastComponent_div_2_div_2_Template, 3, 4, \"div\", 9);\n    ɵngcc0.ɵɵtemplate(3, ToastComponent_div_2_ng_snotify_prompt_3_Template, 1, 1, \"ng-snotify-prompt\", 4);\n    ɵngcc0.ɵɵtemplate(4, ToastComponent_div_2_div_4_Template, 1, 3, \"div\", 10);\n    ɵngcc0.ɵɵtemplate(5, ToastComponent_div_2_ng_template_5_Template, 1, 1, \"ng-template\", null, 11, ɵngcc0.ɵɵtemplateRefExtractor);\n    ɵngcc0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const _r9 = ɵngcc0.ɵɵreference(6);\n\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.toast.title);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.toast.body);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.toast.config.type === ctx_r1.state.promptType);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r1.toast.config.icon)(\"ngIfElse\", _r9);\n  }\n}\n\nfunction ToastComponent_ng_template_3_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"div\", 17);\n  }\n\n  if (rf & 2) {\n    const ctx_r3 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r3.toast.config.html, ɵngcc0.ɵɵsanitizeHtml);\n  }\n}\n\nfunction ToastComponent_ng_snotify_button_5_Template(rf, ctx) {\n  if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"ng-snotify-button\", 14);\n  }\n\n  if (rf & 2) {\n    const ctx_r4 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"toast\", ctx_r4.toast);\n  }\n}\n\nconst _c4 = function (a1, a2, a3) {\n  return [\"snotifyToast animated\", a1, a2, a3];\n};\n\nconst _c5 = function (a0, a1, a2, a3) {\n  return {\n    \"-webkit-transition\": a0,\n    transition: a1,\n    \"-webkit-animation-duration\": a2,\n    \"animation-duration\": a3\n  };\n};\n\nvar SnotifyStyle = /*#__PURE__*/(() => {\n  (function (SnotifyStyle) {\n    SnotifyStyle[\"simple\"] = \"simple\";\n    SnotifyStyle[\"success\"] = \"success\";\n    SnotifyStyle[\"error\"] = \"error\";\n    SnotifyStyle[\"warning\"] = \"warning\";\n    SnotifyStyle[\"info\"] = \"info\";\n    SnotifyStyle[\"async\"] = \"async\";\n    SnotifyStyle[\"confirm\"] = \"confirm\";\n    SnotifyStyle[\"prompt\"] = \"prompt\";\n  })(SnotifyStyle || (SnotifyStyle = {}));\n\n  return SnotifyStyle;\n})();\n\n/**\r\n * Transform arguments to Snotify object\r\n * @param target any\r\n * @param propertyKey SnotifyType\r\n * @param descriptor PropertyDescriptor\r\n * @returns Snotify\r\n */\nfunction TransformArgument(target, propertyKey, descriptor) {\n  if (propertyKey === SnotifyStyle.async) {\n    return {\n      value(...args) {\n        let result;\n\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\n        return descriptor.value.apply(this, [result]);\n      }\n\n    };\n  } else {\n    return {\n      value(...args) {\n        let result;\n\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\n        return descriptor.value.apply(this, [result]);\n      }\n\n    };\n  }\n}\n/**\r\n * Generates random id\r\n * @return number\r\n */\n\n\nfunction uuid() {\n  return Math.floor(Math.random() * (Date.now() - 1)) + 1;\n}\n/**\r\n * Simple is object check.\r\n * @param item Object<any>\r\n * @returns boolean\r\n */\n\n\nfunction isObject(item) {\n  return item && typeof item === 'object' && !Array.isArray(item);\n}\n/**\r\n * Deep merge objects.\r\n * @param sources Array<Object<any>>\r\n * @returns Object<any>\r\n */\n\n\nfunction mergeDeep(...sources) {\n  const target = {};\n\n  if (!sources.length) {\n    return target;\n  }\n\n  while (sources.length > 0) {\n    const source = sources.shift();\n\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, {\n            [key]: source[key]\n          });\n        }\n      }\n    }\n  }\n\n  return target;\n}\n\nfunction animate(start, duration, callback) {\n  let endTime;\n  requestAnimationFrame(timestamp => endTime = timestamp + duration);\n\n  const calculate = () => {\n    requestAnimationFrame(timestamp => {\n      const runtime = timestamp - endTime;\n      const progress = Math.min(runtime / duration, 1) + start;\n\n      if (runtime < duration) {\n        if (callback(+(100 * progress).toFixed(2), progress)) {\n          calculate();\n        }\n      }\n    });\n  };\n}\n/**\r\n * Defines toast style depending on method name\r\n * @param target any\r\n * @param propertyKey SnotifyType\r\n * @param descriptor PropertyDescriptor\r\n * @returns value: ((...args: any[]) => any)\r\n */\n\n\nfunction SetToastType(target, propertyKey, descriptor) {\n  return {\n    value(...args) {\n      args[0].config = Object.assign(Object.assign({}, args[0].config), {\n        type: propertyKey\n      });\n      return descriptor.value.apply(this, args);\n    }\n\n  };\n} // @TODO remove method in observable way\n\n/**\r\n * Toast main model\r\n */\n\n\nclass SnotifyToast {\n  constructor(id, title, body, config) {\n    this.id = id;\n    this.title = title;\n    this.body = body;\n    this.config = config;\n    /**\r\n     * Emits SnotifyEvent\r\n     */\n\n    this.eventEmitter = new Subject();\n    /**\r\n     * Holds all subscribers because we need to unsubscribe from all before toast get destroyed\r\n     */\n\n    this.eventsHolder = [];\n\n    if (this.config.type === SnotifyStyle.prompt) {\n      this.value = '';\n    }\n\n    this.on('hidden', () => {\n      this.eventsHolder.forEach(subscription => {\n        subscription.unsubscribe();\n      });\n    });\n  }\n  /**\r\n   * Subscribe to toast events\r\n   * @returns this\r\n   * @param event SnotifyEvent\r\n   * @param action (toast: this) => void\r\n   */\n\n\n  on(event, action) {\n    this.eventsHolder.push(this.eventEmitter.subscribe(e => {\n      if (e === event) {\n        action(this);\n      }\n    }));\n    return this;\n  }\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   */\n\n\n  equals(toast) {\n    return this.body === toast.body && this.title === toast.title && this.config.type === toast.config.type;\n  }\n\n}\n/**\r\n * SnotifyService - create, remove, config toasts\r\n */\n\n\nlet SnotifyService =\n/*#__PURE__*/\n// tslint:disable:unified-signatures\n(() => {\n  let SnotifyService = class SnotifyService {\n    constructor(config) {\n      this.config = config;\n      this.emitter = new Subject();\n      this.toastChanged = new Subject();\n      this.toastDeleted = new Subject();\n      this.notifications = [];\n    }\n    /**\r\n     * emit changes in notifications array\r\n     */\n\n\n    emit() {\n      this.emitter.next(this.notifications.slice());\n    }\n    /**\r\n     * returns SnotifyToast object\r\n     * @param id Number\r\n     * @return SnotifyToast|undefined\r\n     */\n\n\n    get(id) {\n      return this.notifications.find(toast => toast.id === id);\n    }\n    /**\r\n     * add SnotifyToast to notifications array\r\n     * @param toast SnotifyToast\r\n     */\n\n\n    add(toast) {\n      if (this.config.global.filterDuplicates && this.containsToast(toast)) {\n        return;\n      }\n\n      if (this.config.global.newOnTop) {\n        this.notifications.unshift(toast);\n      } else {\n        this.notifications.push(toast);\n      }\n\n      this.emit();\n    }\n    /**\r\n     * checks if the toast is in the collection.\r\n     * @param inToast SnotifyToast\r\n     * @returns boolean\r\n     */\n\n\n    containsToast(inToast) {\n      return this.notifications.some(toast => toast.equals(inToast));\n    }\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     */\n\n\n    remove(id, remove) {\n      if (!id) {\n        return this.clear();\n      } else if (remove) {\n        this.notifications = this.notifications.filter(toast => toast.id !== id);\n        return this.emit();\n      }\n\n      this.toastDeleted.next(id);\n    }\n    /**\r\n     * Clear notifications array\r\n     */\n\n\n    clear() {\n      this.notifications = [];\n      this.emit();\n    }\n    /**\r\n     * Creates toast and add it to array, returns toast id\r\n     * @param snotify Snotify\r\n     * @return number\r\n     */\n\n\n    create(snotify) {\n      const config = mergeDeep(this.config.toast, this.config.type[snotify.config.type], snotify.config);\n      const toast = new SnotifyToast(uuid(), snotify.title, snotify.body, config);\n      this.add(toast);\n      return toast;\n    }\n\n    setDefaults(defaults) {\n      return this.config = mergeDeep(this.config, defaults);\n    }\n    /**\r\n     * Transform toast arguments into Snotify object\r\n     */\n\n\n    simple(args) {\n      return this.create(args);\n    }\n    /**\r\n     * Transform toast arguments into Snotify object\r\n     */\n\n\n    success(args) {\n      return this.create(args);\n    }\n    /**\r\n     * Transform toast arguments into Snotify object\r\n     */\n\n\n    error(args) {\n      return this.create(args);\n    }\n    /**\r\n     * Transform toast arguments into Snotify object\r\n     */\n\n\n    info(args) {\n      return this.create(args);\n    }\n    /**\r\n     * Transform toast arguments into Snotify object\r\n     */\n\n\n    warning(args) {\n      return this.create(args);\n    }\n    /**\r\n     * Transform toast arguments into Snotify object\r\n     */\n\n\n    confirm(args) {\n      return this.create(args);\n    }\n    /**\r\n     * Transform toast arguments into Snotify object\r\n     */\n\n\n    prompt(args) {\n      return this.create(args);\n    }\n    /**\r\n     * Transform toast arguments into Snotify object\r\n     */\n\n\n    async(args) {\n      let async;\n\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      toast.on('mounted', () => {\n        const subscription = async.subscribe(next => {\n          this.mergeToast(toast, next);\n        }, error => {\n          this.mergeToast(toast, error, SnotifyStyle.error);\n          subscription.unsubscribe();\n        }, () => {\n          this.mergeToast(toast, {}, SnotifyStyle.success);\n          subscription.unsubscribe();\n        });\n      });\n      return toast;\n    }\n\n    mergeToast(toast, next, type) {\n      if (next.body) {\n        toast.body = next.body;\n      }\n\n      if (next.title) {\n        toast.title = next.title;\n      }\n\n      if (type) {\n        toast.config = mergeDeep(toast.config, this.config.global, this.config.toast[type], {\n          type\n        }, next.config);\n      } else {\n        toast.config = mergeDeep(toast.config, next.config);\n      }\n\n      if (next.html) {\n        toast.config.html = next.html;\n      }\n\n      this.emit();\n      this.toastChanged.next(toast);\n    }\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     */\n\n\n    html(html, config) {\n      return this.create({\n        title: null,\n        body: null,\n        config: Object.assign(Object.assign({}, config), {\n          html\n        })\n      });\n    }\n\n  };\n\n  SnotifyService.ɵfac = function SnotifyService_Factory(t) {\n    return new (t || SnotifyService)(ɵngcc0.ɵɵinject('SnotifyToastConfig'));\n  };\n\n  SnotifyService.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n    token: SnotifyService,\n    factory: function (t) {\n      return SnotifyService.ɵfac(t);\n    }\n  });\n\n  __decorate([TransformArgument\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\n  , SetToastType], SnotifyService.prototype, \"simple\", null);\n\n  __decorate([TransformArgument\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\n  , SetToastType], SnotifyService.prototype, \"success\", null);\n\n  __decorate([TransformArgument\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\n  , SetToastType], SnotifyService.prototype, \"error\", null);\n\n  __decorate([TransformArgument\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\n  , SetToastType], SnotifyService.prototype, \"info\", null);\n\n  __decorate([TransformArgument\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\n  , SetToastType], SnotifyService.prototype, \"warning\", null);\n\n  __decorate([TransformArgument\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\n  , SetToastType], SnotifyService.prototype, \"confirm\", null);\n\n  __decorate([TransformArgument\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\n  , SetToastType], SnotifyService.prototype, \"prompt\", null);\n\n  __decorate([TransformArgument\n  /**\r\n   * Determines current toast type and collects default configuration\r\n   */\n  , SetToastType], SnotifyService.prototype, \"async\", null);\n\n  SnotifyService = __decorate([__param(0, Inject('SnotifyToastConfig'))], SnotifyService);\n  return SnotifyService;\n})();\nlet ButtonsComponent =\n/*#__PURE__*/\n\n/**\r\n * Buttons component\r\n */\n(() => {\n  let ButtonsComponent = class ButtonsComponent {\n    constructor(service) {\n      this.service = service;\n    }\n    /**\r\n     * remove toast\r\n     */\n\n\n    remove() {\n      this.service.remove(this.toast.id);\n    }\n\n  };\n\n  ButtonsComponent.ɵfac = function ButtonsComponent_Factory(t) {\n    return new (t || ButtonsComponent)(ɵngcc0.ɵɵdirectiveInject(SnotifyService));\n  };\n\n  ButtonsComponent.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: ButtonsComponent,\n    selectors: [[\"ng-snotify-button\"]],\n    inputs: {\n      toast: \"toast\"\n    },\n    decls: 2,\n    vars: 1,\n    consts: [[1, \"snotifyToast__buttons\"], [\"type\", \"button\", 3, \"ngClass\", \"click\", 4, \"ngFor\", \"ngForOf\"], [\"type\", \"button\", 3, \"ngClass\", \"click\"]],\n    template: function ButtonsComponent_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n        ɵngcc0.ɵɵtemplate(1, ButtonsComponent_button_1_Template, 2, 4, \"button\", 1);\n        ɵngcc0.ɵɵelementEnd();\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.toast.config.buttons);\n      }\n    },\n    directives: [ɵngcc1.NgForOf, ɵngcc1.NgClass],\n    encapsulation: 2,\n    changeDetection: 0\n  });\n\n  __decorate([Input()], ButtonsComponent.prototype, \"toast\", void 0);\n\n  return ButtonsComponent;\n})();\nlet PromptComponent =\n/*#__PURE__*/\n\n/**\r\n * Prompt component. Part of PROMPT type\r\n */\n(() => {\n  let PromptComponent = class PromptComponent {\n    constructor() {\n      /**\r\n       * Is PROMPT focused\r\n       */\n      this.isPromptFocused = false;\n    }\n\n  };\n\n  PromptComponent.ɵfac = function PromptComponent_Factory(t) {\n    return new (t || PromptComponent)();\n  };\n\n  PromptComponent.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: PromptComponent,\n    selectors: [[\"ng-snotify-prompt\"]],\n    inputs: {\n      toast: \"toast\"\n    },\n    decls: 6,\n    vars: 8,\n    consts: [[1, \"snotifyToast__input\", 3, \"ngClass\"], [\"autofocus\", \"\", \"type\", \"text\", 1, \"snotifyToast__input__field\", 3, \"id\", \"input\", \"focus\", \"blur\"], [1, \"snotifyToast__input__label\", 3, \"for\"], [1, \"snotifyToast__input__labelContent\"]],\n    template: function PromptComponent_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"span\", 0);\n        ɵngcc0.ɵɵelementStart(1, \"input\", 1);\n        ɵngcc0.ɵɵlistener(\"input\", function PromptComponent_Template_input_input_1_listener($event) {\n          ctx.toast.value = $event.target.value;\n          return ctx.toast.eventEmitter.next(\"input\");\n        })(\"focus\", function PromptComponent_Template_input_focus_1_listener() {\n          return ctx.isPromptFocused = true;\n        })(\"blur\", function PromptComponent_Template_input_blur_1_listener() {\n          return ctx.isPromptFocused = !!ctx.toast.value.length;\n        });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(2, \"label\", 2);\n        ɵngcc0.ɵɵelementStart(3, \"span\", 3);\n        ɵngcc0.ɵɵtext(4);\n        ɵngcc0.ɵɵpipe(5, \"truncate\");\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(6, _c1, ctx.isPromptFocused));\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"id\", ctx.toast.id);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"for\", ctx.toast.id);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵtextInterpolate(ɵngcc0.ɵɵpipeBind1(5, 4, ctx.toast.config.placeholder));\n      }\n    },\n    directives: function () {\n      return [ɵngcc1.NgClass];\n    },\n    pipes: function () {\n      return [TruncatePipe];\n    },\n    encapsulation: 2,\n    changeDetection: 0\n  });\n\n  __decorate([Input()], PromptComponent.prototype, \"toast\", void 0);\n  /**\r\n   * Toast position\r\n   */\n\n\n  return PromptComponent;\n})();\nvar SnotifyPosition = /*#__PURE__*/(() => {\n  (function (SnotifyPosition) {\n    SnotifyPosition[\"leftTop\"] = \"leftTop\";\n    SnotifyPosition[\"leftCenter\"] = \"leftCenter\";\n    SnotifyPosition[\"leftBottom\"] = \"leftBottom\";\n    SnotifyPosition[\"rightTop\"] = \"rightTop\";\n    SnotifyPosition[\"rightCenter\"] = \"rightCenter\";\n    SnotifyPosition[\"rightBottom\"] = \"rightBottom\";\n    SnotifyPosition[\"centerTop\"] = \"centerTop\";\n    SnotifyPosition[\"centerCenter\"] = \"centerCenter\";\n    SnotifyPosition[\"centerBottom\"] = \"centerBottom\";\n  })(SnotifyPosition || (SnotifyPosition = {}));\n\n  return SnotifyPosition;\n})();\nlet SnotifyComponent = /*#__PURE__*/(() => {\n  let SnotifyComponent = class SnotifyComponent {\n    constructor(service) {\n      this.service = service;\n      /**\r\n       * Backdrop Opacity\r\n       */\n\n      this.backdrop = -1;\n    }\n    /**\r\n     * Init base options. Subscribe to options, lifecycle change\r\n     */\n\n\n    ngOnInit() {\n      this.emitter = this.service.emitter.subscribe(toasts => {\n        if (this.service.config.global.newOnTop) {\n          this.dockSizeA = -this.service.config.global.maxOnScreen;\n          this.dockSizeB = undefined;\n          this.blockSizeA = -this.service.config.global.maxAtPosition;\n          this.blockSizeB = undefined;\n          this.withBackdrop = toasts.filter(toast => toast.config.backdrop >= 0);\n        } else {\n          this.dockSizeA = 0;\n          this.dockSizeB = this.service.config.global.maxOnScreen;\n          this.blockSizeA = 0;\n          this.blockSizeB = this.service.config.global.maxAtPosition;\n          this.withBackdrop = toasts.filter(toast => toast.config.backdrop >= 0).reverse();\n        }\n\n        this.notifications = this.splitToasts(toasts.slice(this.dockSizeA, this.dockSizeB));\n        this.stateChanged('mounted');\n      });\n    } // TODO: fix backdrop if more than one toast called in a row\n\n    /**\r\n     * Changes the backdrop opacity\r\n     * @param event SnotifyEvent\r\n     */\n\n\n    stateChanged(event) {\n      if (!this.withBackdrop.length) {\n        if (this.backdrop >= 0) {\n          this.backdrop = -1;\n        }\n\n        return;\n      }\n\n      switch (event) {\n        case 'mounted':\n          if (this.backdrop < 0) {\n            this.backdrop = 0;\n          }\n\n          break;\n\n        case 'beforeShow':\n          this.backdrop = this.withBackdrop[this.withBackdrop.length - 1].config.backdrop;\n          break;\n\n        case 'beforeHide':\n          if (this.withBackdrop.length === 1) {\n            this.backdrop = 0;\n          }\n\n          break;\n\n        case 'hidden':\n          if (this.withBackdrop.length === 1) {\n            this.backdrop = -1;\n          }\n\n          break;\n      }\n    }\n    /**\r\n     * Split toasts toasts into different objects\r\n     * @param toasts SnotifyToast[]\r\n     * @returns SnotifyNotifications\r\n     */\n\n\n    splitToasts(toasts) {\n      const result = {};\n\n      for (const property in SnotifyPosition) {\n        if (SnotifyPosition.hasOwnProperty(property)) {\n          result[SnotifyPosition[property]] = [];\n        }\n      }\n\n      toasts.forEach(toast => {\n        result[toast.config.position].push(toast);\n      });\n      return result;\n    }\n    /**\r\n     * Unsubscribe subscriptions\r\n     */\n\n\n    ngOnDestroy() {\n      this.emitter.unsubscribe();\n    }\n\n  };\n\n  SnotifyComponent.ɵfac = function SnotifyComponent_Factory(t) {\n    return new (t || SnotifyComponent)(ɵngcc0.ɵɵdirectiveInject(SnotifyService));\n  };\n\n  SnotifyComponent.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: SnotifyComponent,\n    selectors: [[\"ng-snotify\"]],\n    decls: 3,\n    vars: 4,\n    consts: [[\"class\", \"snotify-backdrop\", 3, \"opacity\", 4, \"ngIf\"], [3, \"class\", 4, \"ngFor\", \"ngForOf\"], [1, \"snotify-backdrop\"], [3, \"toast\", \"stateChanged\", 4, \"ngFor\", \"ngForOf\"], [3, \"toast\", \"stateChanged\"]],\n    template: function SnotifyComponent_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, SnotifyComponent_div_0_Template, 1, 2, \"div\", 0);\n        ɵngcc0.ɵɵtemplate(1, SnotifyComponent_div_1_Template, 3, 8, \"div\", 1);\n        ɵngcc0.ɵɵpipe(2, \"keys\");\n      }\n\n      if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.backdrop >= 0);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind1(2, 2, ctx.notifications));\n      }\n    },\n    directives: function () {\n      return [ɵngcc1.NgIf, ɵngcc1.NgForOf, ToastComponent];\n    },\n    pipes: function () {\n      return [KeysPipe, ɵngcc1.SlicePipe];\n    },\n    encapsulation: 2\n  });\n  return SnotifyComponent;\n})();\nlet ToastComponent = /*#__PURE__*/(() => {\n  let ToastComponent = class ToastComponent {\n    constructor(service) {\n      this.service = service;\n      this.stateChanged = new EventEmitter();\n      /**\r\n       * Toast state\r\n       */\n\n      this.state = {\n        paused: false,\n        progress: 0,\n        animation: '',\n        isDestroying: false,\n        promptType: SnotifyStyle.prompt\n      };\n    } // Lifecycles\n\n    /**\r\n     * Init base options. Subscribe to toast changed, toast deleted\r\n     */\n\n\n    ngOnInit() {\n      this.toastChangedSubscription = this.service.toastChanged.subscribe(toast => {\n        if (this.toast.id === toast.id) {\n          this.initToast();\n        }\n      });\n      this.toastDeletedSubscription = this.service.toastDeleted.subscribe(id => {\n        if (this.toast.id === id) {\n          this.onRemove();\n        }\n      });\n\n      if (!this.toast.config.timeout) {\n        this.toast.config.showProgressBar = false;\n      }\n\n      this.toast.eventEmitter.next('mounted');\n      this.state.animation = 'snotifyToast--in';\n    }\n\n    ngAfterContentInit() {\n      setTimeout(() => {\n        this.stateChanged.emit('beforeShow');\n        this.toast.eventEmitter.next('beforeShow');\n        this.state.animation = this.toast.config.animation.enter;\n      }, this.service.config.toast.animation.time / 5); // time to show toast push animation (snotifyToast--in)\n    }\n    /**\r\n     * Unsubscribe subscriptions\r\n     */\n\n\n    ngOnDestroy() {\n      cancelAnimationFrame(this.animationFrame);\n      this.toast.eventEmitter.next('destroyed');\n      this.toastChangedSubscription.unsubscribe();\n      this.toastDeletedSubscription.unsubscribe();\n    }\n    /*\r\n    Event hooks\r\n     */\n\n    /**\r\n     * Trigger OnClick lifecycle\r\n     */\n\n\n    onClick() {\n      this.toast.eventEmitter.next('click');\n\n      if (this.toast.config.closeOnClick) {\n        this.service.remove(this.toast.id);\n      }\n    }\n    /**\r\n     * Trigger beforeDestroy lifecycle. Removes toast\r\n     */\n\n\n    onRemove() {\n      this.state.isDestroying = true;\n      this.toast.eventEmitter.next('beforeHide');\n      this.stateChanged.emit('beforeHide');\n      this.state.animation = this.toast.config.animation.exit;\n      setTimeout(() => {\n        this.stateChanged.emit('hidden');\n        this.state.animation = 'snotifyToast--out';\n        this.toast.eventEmitter.next('hidden');\n        setTimeout(() => this.service.remove(this.toast.id, true), this.toast.config.animation.time / 2);\n      }, this.toast.config.animation.time / 2);\n    }\n    /**\r\n     * Trigger onHoverEnter lifecycle\r\n     */\n\n\n    onMouseEnter() {\n      this.toast.eventEmitter.next('mouseenter');\n\n      if (this.toast.config.pauseOnHover) {\n        this.state.paused = true;\n      }\n    }\n    /**\r\n     * Trigger onHoverLeave lifecycle\r\n     */\n\n\n    onMouseLeave() {\n      if (this.toast.config.pauseOnHover && this.toast.config.timeout) {\n        this.state.paused = false;\n        this.startTimeout(this.toast.config.timeout * this.state.progress);\n      }\n\n      this.toast.eventEmitter.next('mouseleave');\n    }\n    /**\r\n     * Remove toast completely after animation\r\n     */\n\n\n    onExitTransitionEnd() {\n      if (this.state.isDestroying) {\n        return;\n      }\n\n      this.initToast();\n      this.toast.eventEmitter.next('shown');\n    }\n    /*\r\n     Common\r\n     */\n\n    /**\r\n     * Initialize base toast config\r\n     *\r\n     */\n\n\n    initToast() {\n      if (this.toast.config.timeout > 0) {\n        this.startTimeout(0);\n      }\n    }\n    /**\r\n     * Start progress bar\r\n     * @param startTime number\r\n     */\n\n\n    startTimeout(startTime = 0) {\n      const start = performance.now();\n\n      const calculate = () => {\n        this.animationFrame = requestAnimationFrame(timestamp => {\n          const runtime = timestamp + startTime - start;\n          const progress = Math.min(runtime / this.toast.config.timeout, 1);\n\n          if (this.state.paused) {\n            cancelAnimationFrame(this.animationFrame);\n          } else if (runtime < this.toast.config.timeout) {\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\n      calculate();\n    }\n\n  };\n\n  ToastComponent.ɵfac = function ToastComponent_Factory(t) {\n    return new (t || ToastComponent)(ɵngcc0.ɵɵdirectiveInject(SnotifyService));\n  };\n\n  ToastComponent.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n    type: ToastComponent,\n    selectors: [[\"ng-snotify-toast\"]],\n    inputs: {\n      toast: \"toast\"\n    },\n    outputs: {\n      stateChanged: \"stateChanged\"\n    },\n    decls: 6,\n    vars: 18,\n    consts: [[3, \"ngClass\", \"ngStyle\", \"animationend\", \"click\", \"mouseenter\", \"mouseleave\"], [\"class\", \"snotifyToast__progressBar\", 4, \"ngIf\"], [\"class\", \"snotifyToast__inner\", 4, \"ngIf\", \"ngIfElse\"], [\"toastHTML\", \"\"], [3, \"toast\", 4, \"ngIf\"], [1, \"snotifyToast__progressBar\"], [1, \"snotifyToast__progressBar__percentage\", 3, \"ngStyle\"], [1, \"snotifyToast__inner\"], [\"class\", \"snotifyToast__title\", 4, \"ngIf\"], [\"class\", \"snotifyToast__body\", 4, \"ngIf\"], [3, \"ngClass\", 4, \"ngIf\", \"ngIfElse\"], [\"elseBlock\", \"\"], [1, \"snotifyToast__title\"], [1, \"snotifyToast__body\"], [3, \"toast\"], [3, \"ngClass\"], [1, \"snotify-icon\", 3, \"src\"], [1, \"snotifyToast__inner\", 3, \"innerHTML\"]],\n    template: function ToastComponent_Template(rf, ctx) {\n      if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n        ɵngcc0.ɵɵlistener(\"animationend\", function ToastComponent_Template_div_animationend_0_listener() {\n          return ctx.onExitTransitionEnd();\n        })(\"click\", function ToastComponent_Template_div_click_0_listener() {\n          return ctx.onClick();\n        })(\"mouseenter\", function ToastComponent_Template_div_mouseenter_0_listener() {\n          return ctx.onMouseEnter();\n        })(\"mouseleave\", function ToastComponent_Template_div_mouseleave_0_listener() {\n          return ctx.onMouseLeave();\n        });\n        ɵngcc0.ɵɵtemplate(1, ToastComponent_div_1_Template, 2, 3, \"div\", 1);\n        ɵngcc0.ɵɵtemplate(2, ToastComponent_div_2_Template, 7, 5, \"div\", 2);\n        ɵngcc0.ɵɵtemplate(3, ToastComponent_ng_template_3_Template, 1, 1, \"ng-template\", null, 3, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵtemplate(5, ToastComponent_ng_snotify_button_5_Template, 1, 1, \"ng-snotify-button\", 4);\n        ɵngcc0.ɵɵelementEnd();\n      }\n\n      if (rf & 2) {\n        const _r2 = ɵngcc0.ɵɵreference(4);\n\n        ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction3(9, _c4, \"snotify-\" + ctx.toast.config.type, ctx.state.animation, ctx.toast.valid === undefined ? \"\" : ctx.toast.valid ? \"snotifyToast--valid\" : \"snotifyToast--invalid\"))(\"ngStyle\", ɵngcc0.ɵɵpureFunction4(13, _c5, ctx.toast.config.animation.time + \"ms\", ctx.toast.config.animation.time + \"ms\", ctx.toast.config.animation.time + \"ms\", ctx.toast.config.animation.time + \"ms\"));\n        ɵngcc0.ɵɵattribute(\"role\", ctx.toast.config.type === ctx.state.promptType ? \"dialog\" : \"alert\")(\"aria-labelledby\", \"snotify_\" + ctx.toast.id)(\"aria-modal\", ctx.toast.config.type === ctx.state.promptType);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.toast.config.showProgressBar);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.toast.config.html)(\"ngIfElse\", _r2);\n        ɵngcc0.ɵɵadvance(3);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.toast.config.buttons);\n      }\n    },\n    directives: function () {\n      return [ɵngcc1.NgClass, ɵngcc1.NgStyle, ɵngcc1.NgIf, PromptComponent, ButtonsComponent];\n    },\n    pipes: function () {\n      return [TruncatePipe];\n    },\n    encapsulation: 2\n  });\n\n  __decorate([Input()], ToastComponent.prototype, \"toast\", void 0);\n\n  __decorate([Output()], ToastComponent.prototype, \"stateChanged\", void 0);\n\n  return ToastComponent;\n})();\nlet KeysPipe =\n/*#__PURE__*/\n\n/**\r\n * Extract object keys pipe\r\n */\n(() => {\n  let KeysPipe = class KeysPipe {\n    transform(value, args = null) {\n      if (!value) {\n        return value;\n      }\n\n      return Object.keys(value);\n    }\n\n  };\n\n  KeysPipe.ɵfac = function KeysPipe_Factory(t) {\n    return new (t || KeysPipe)();\n  };\n\n  KeysPipe.ɵpipe = /*@__PURE__*/ɵngcc0.ɵɵdefinePipe({\n    name: \"keys\",\n    type: KeysPipe,\n    pure: false\n  });\n  return KeysPipe;\n})();\nlet TruncatePipe =\n/*#__PURE__*/\n\n/**\r\n * Truncate toast text pipe\r\n */\n(() => {\n  let TruncatePipe = class TruncatePipe {\n    transform(value, ...args) {\n      let limit = 40;\n      let trail = '...';\n\n      if (args.length > 0) {\n        limit = args.length > 0 ? parseInt(args[0], 10) : limit;\n        trail = args.length > 1 ? args[1] : trail;\n      }\n\n      return value.length > limit ? value.substring(0, limit) + trail : value;\n    }\n\n  };\n\n  TruncatePipe.ɵfac = function TruncatePipe_Factory(t) {\n    return new (t || TruncatePipe)();\n  };\n\n  TruncatePipe.ɵpipe = /*@__PURE__*/ɵngcc0.ɵɵdefinePipe({\n    name: \"truncate\",\n    type: TruncatePipe,\n    pure: true\n  });\n  return TruncatePipe;\n})();\nvar SnotifyModule_1;\nlet SnotifyModule = SnotifyModule_1 = class SnotifyModule {\n  static forRoot() {\n    return {\n      ngModule: SnotifyModule_1,\n      providers: [SnotifyService]\n    };\n  }\n\n};\n\nSnotifyModule.ɵfac = function SnotifyModule_Factory(t) {\n  return new (t || SnotifyModule)();\n};\n\nSnotifyModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n  type: SnotifyModule\n});\nSnotifyModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n  imports: [[CommonModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n(function () {\n  (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(SnotifyModule, {\n    declarations: function () {\n      return [SnotifyComponent, ToastComponent, TruncatePipe, ButtonsComponent, PromptComponent, KeysPipe];\n    },\n    imports: function () {\n      return [CommonModule];\n    },\n    exports: function () {\n      return [SnotifyComponent, TruncatePipe, KeysPipe];\n    }\n  });\n})();\n/**\r\n * Snotify default configuration object\r\n */\n\n\nconst ToastDefaults = {\n  global: {\n    newOnTop: true,\n    maxOnScreen: 8,\n    maxAtPosition: 8,\n    filterDuplicates: false\n  },\n  toast: {\n    type: SnotifyStyle.simple,\n    showProgressBar: true,\n    timeout: 2000,\n    closeOnClick: true,\n    pauseOnHover: true,\n    bodyMaxLength: 150,\n    titleMaxLength: 16,\n    backdrop: -1,\n    icon: null,\n    iconClass: null,\n    html: null,\n    position: SnotifyPosition.rightBottom,\n    animation: {\n      enter: 'fadeIn',\n      exit: 'fadeOut',\n      time: 400\n    }\n  },\n  type: {\n    [SnotifyStyle.prompt]: {\n      timeout: 0,\n      closeOnClick: false,\n      buttons: [{\n        text: 'Ok',\n        action: null,\n        bold: true\n      }, {\n        text: 'Cancel',\n        action: null,\n        bold: false\n      }],\n      placeholder: 'Enter answer here...',\n      type: SnotifyStyle.prompt\n    },\n    [SnotifyStyle.confirm]: {\n      timeout: 0,\n      closeOnClick: false,\n      buttons: [{\n        text: 'Ok',\n        action: null,\n        bold: true\n      }, {\n        text: 'Cancel',\n        action: null,\n        bold: false\n      }],\n      type: SnotifyStyle.confirm\n    },\n    [SnotifyStyle.simple]: {\n      type: SnotifyStyle.simple\n    },\n    [SnotifyStyle.success]: {\n      type: SnotifyStyle.success\n    },\n    [SnotifyStyle.error]: {\n      type: SnotifyStyle.error\n    },\n    [SnotifyStyle.warning]: {\n      type: SnotifyStyle.warning\n    },\n    [SnotifyStyle.info]: {\n      type: SnotifyStyle.info\n    },\n    [SnotifyStyle.async]: {\n      pauseOnHover: false,\n      closeOnClick: false,\n      timeout: 0,\n      showProgressBar: false,\n      type: SnotifyStyle.async\n    }\n  }\n};\n/*\r\n * Public API Surface of ng-snotify\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { ButtonsComponent, KeysPipe, PromptComponent, SnotifyComponent, SnotifyModule, SnotifyPosition, SnotifyService, SnotifyStyle, SnotifyToast, ToastComponent, ToastDefaults, TruncatePipe, SnotifyComponent as ɵa, SnotifyService as ɵb, TransformArgument as ɵd, SetToastType as ɵe, ToastComponent as ɵf, TruncatePipe as ɵg, ButtonsComponent as ɵh, PromptComponent as ɵi, KeysPipe as ɵj }; //# sourceMappingURL=ng-snotify.js.map","map":null,"metadata":{},"sourceType":"module"}