{"version":3,"file":"angular-toaster.mjs","sources":["../../../packages/angular-toaster/src/angular-toaster.service.ts","../../../packages/angular-toaster/src/angular-toaster-config.ts","../../../packages/angular-toaster/src/angular-toaster-animations.ts","../../../packages/angular-toaster/src/trust-html.pipe.ts","../../../packages/angular-toaster/src/angular-toaster.component.ts","../../../packages/angular-toaster/src/angular-toaster.component.html","../../../packages/angular-toaster/src/angular-toaster-container.component.ts","../../../packages/angular-toaster/src/angular-toaster-container.component.html","../../../packages/angular-toaster/src/angular-toaster.injectors.ts","../../../packages/angular-toaster/src/angular-toaster.module.ts","../../../packages/angular-toaster/src/angular-toaster.provider.ts","../../../packages/angular-toaster/src/public-api.ts","../../../packages/angular-toaster/src/angular-toaster.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Observable, Observer, Subject, share } from 'rxjs';\nimport { IClearWrapper, Toast, ToastType } from './angular-toaster-config';\n\nclass Guid {\n  static newGuid() {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n      const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);\n      return v.toString(16);\n    });\n  }\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ToasterService {\n\n  public addToast: Observable<Toast>;\n  private _addToast!: Observer<Toast>;\n\n  public clearToasts: Observable<IClearWrapper>;\n  private _clearToasts!: Observer<IClearWrapper>;\n\n  removeToast: Observable<IClearWrapper>;\n  /** @internal */\n  _removeToastSubject: Subject<IClearWrapper>;\n\n  constructor() {\n    this.addToast = new Observable<Toast>((observer) => this._addToast = observer).pipe(share());\n    this.clearToasts = new Observable<IClearWrapper>((observer) => this._clearToasts = observer).pipe(share());\n    this._removeToastSubject = new Subject<IClearWrapper>()\n    this.removeToast = this._removeToastSubject.pipe(share());\n  }\n\n  /**\n    * Synchronously create and show a new toast instance.\n    *\n    * @param {(string | Toast)} type The type of the toast, or a Toast object.\n    * @param {string=} title The toast title.\n    * @param {string=} body The toast body.\n    * @returns {Toast}\n    *          The newly created Toast instance with a randomly generated GUID Id.\n    */\n  pop(type: ToastType | Toast, title?: string, body?: string): Toast {\n    const toast = typeof type === 'string' ? { type: type, title: title, body: body } : type;\n\n    if (!toast.toastId) {\n      toast.toastId = Guid.newGuid();\n    }\n\n    if (!this._addToast) {\n      throw new Error('No Toaster Containers have been initialized to receive toasts.');\n    }\n\n    this._addToast.next(toast);\n    return toast;\n  }\n\n  /**\n   * Asynchronously create and show a new toast instance.\n   *\n   * @param {(string | Toast)} type The type of the toast, or a Toast object.\n   * @param {string=} title The toast title.\n   * @param {string=} body The toast body.\n   * @returns {Observable<Toast>}\n   *          A hot Observable that can be subscribed to in order to receive the Toast instance\n   *          with a randomly generated GUID Id.\n   */\n  popAsync(type: ToastType | Toast, title?: string, body?: string): Observable<Toast> {\n    setTimeout(() => {\n      this.pop(type, title, body);\n    }, 0);\n\n    return this.addToast;\n  }\n\n  /**\n   * Clears a toast by toastId and/or toastContainerId.\n   *\n   * @param {string} toastId The toastId to clear.\n   * @param {number=} toastContainerId\n   *        The toastContainerId of the container to remove toasts from.\n   */\n  clear(toastId?: string, toastContainerId?: number) {\n    const clearWrapper: IClearWrapper = {\n      toastId: toastId, toastContainerId: toastContainerId\n    };\n\n    this._clearToasts.next(clearWrapper)\n  }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport type ToastType = \"success\" | \"info\" | \"warning\" | \"wait\" | \"error\";\nexport type OnActionCallback = (_toast: Toast) => void;\nexport type ProgressBarDirection = \"decreasing\" | \"increasing\";\n\nexport enum BodyOutputType {\n  Default,\n  TrustedHtml,\n  Component,\n}\n\nexport interface IClearWrapper {\n  toastId?: string;\n  toastContainerId?: number;\n}\n\nexport interface Toast {\n  type: ToastType;\n  title?: string;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  body?: any;\n  toastId?: string;\n  toastContainerId?: number;\n  onShowCallback?: OnActionCallback;\n  onHideCallback?: OnActionCallback;\n  onClickCallback?: OnActionCallback;\n  timeout?: number;\n  bodyOutputType?: BodyOutputType;\n  showCloseButton?: boolean;\n  closeHtml?: string;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  data?: any;\n  tapToDismiss?: boolean;\n  progressBar?: boolean;\n  progressBarDirection?: ProgressBarDirection;\n}\n\nexport const DefaultTypeClasses: Partial<Record<ToastType, string>> = {\n  error: \"angular-toast-error\",\n  info: \"angular-toast-info\",\n  wait: \"angular-toast-wait\",\n  success: \"angular-toast-success\",\n  warning: \"angular-toast-warning\",\n};\n\nexport const DefaultIconClasses: Partial<Record<ToastType, string>> = {\n  error: \"icon-error\",\n  info: \"icon-info\",\n  wait: \"icon-wait\",\n  success: \"icon-success\",\n  warning: \"icon-warning\",\n};\n\nexport interface IToasterConfig {\n  limit?: number | null;\n  tapToDismiss?: boolean;\n  showCloseButton?: boolean | Partial<Record<ToastType, boolean>>;\n  closeHtml?: string;\n  newestOnTop?: boolean;\n  timeout?: number | Partial<Record<ToastType, number>>;\n  typeClasses?: Partial<Record<ToastType, string>>;\n  iconClasses?: Partial<Record<ToastType, string>>;\n  bodyOutputType?: BodyOutputType;\n  bodyTemplate?: string;\n  defaultToastType?: ToastType;\n  // Options (see CSS):\n  // 'angular-toast-top-full-width', 'angular-toast-bottom-full-width', 'angular-toast-center',\n  // 'angular-toast-top-left', 'angular-toast-top-center', 'angular-toast-top-right',\n  // 'angular-toast-bottom-left', 'angular-toast-bottom-center', 'angular-toast-bottom-right',\n  positionClass?: string;\n  titleClass?: string;\n  messageClass?: string;\n  animation?: string;\n  preventDuplicates?: boolean;\n  mouseoverTimerStop?: boolean;\n  toastContainerId?: number | null;\n}\n\nexport const defaultToasterConfig: IToasterConfig = {\n  limit: null,\n  tapToDismiss: true,\n  showCloseButton: false,\n  closeHtml: \"<span>&times;</span>\",\n  newestOnTop: true,\n  timeout: 5000,\n  typeClasses: DefaultTypeClasses,\n  iconClasses: DefaultIconClasses,\n  bodyOutputType: BodyOutputType.Default,\n  bodyTemplate: \"toasterBodyTmpl.html\",\n  defaultToastType: \"info\",\n  positionClass: \"angular-toast-top-right\",\n  titleClass: \"angular-toast-title\",\n  messageClass: \"angular-toast-message\",\n  animation: \"\",\n  preventDuplicates: false,\n  mouseoverTimerStop: false,\n  toastContainerId: null,\n};\n\nexport const ToasterConfigInjectionToken: InjectionToken<IToasterConfig> =\n  new InjectionToken<IToasterConfig>(\"ToasterConfig\");\n\nexport class ToasterConfig implements IToasterConfig {\n  limit?: number | null;\n  tapToDismiss: boolean;\n  showCloseButton: boolean | Partial<Record<ToastType, boolean>>;\n  closeHtml: string;\n  newestOnTop: boolean;\n  timeout: number | Partial<Record<ToastType, number>>;\n  typeClasses: Partial<Record<ToastType, string>>;\n  iconClasses: Partial<Record<ToastType, string>>;\n  bodyOutputType: BodyOutputType;\n  bodyTemplate: string;\n  defaultToastType: ToastType;\n  // Options (see CSS):\n  // 'angular-toast-top-full-width', 'angular-toast-bottom-full-width', 'angular-toast-center',\n  // 'angular-toast-top-left', 'angular-toast-top-center', 'angular-toast-top-right',\n  // 'angular-toast-bottom-left', 'angular-toast-bottom-center', 'angular-toast-bottom-right',\n  positionClass: string;\n  titleClass: string;\n  messageClass: string;\n  animation: string;\n  preventDuplicates: boolean;\n  mouseoverTimerStop: boolean;\n  toastContainerId?: number | null;\n\n  constructor(configOverrides?: IToasterConfig) {\n    configOverrides = configOverrides || {};\n    this.limit = configOverrides.limit || null;\n    this.tapToDismiss =\n      configOverrides.tapToDismiss != null\n        ? configOverrides.tapToDismiss\n        : true;\n    this.showCloseButton =\n      configOverrides.showCloseButton != null\n        ? configOverrides.showCloseButton\n        : false;\n    this.closeHtml = configOverrides.closeHtml || \"<span>&times;</span>\";\n    this.newestOnTop =\n      configOverrides.newestOnTop != null ? configOverrides.newestOnTop : true;\n    this.timeout =\n      configOverrides.timeout != null ? configOverrides.timeout : 5000;\n    this.typeClasses = configOverrides.typeClasses || DefaultTypeClasses;\n    this.iconClasses = configOverrides.iconClasses || DefaultIconClasses;\n    this.bodyOutputType =\n      configOverrides.bodyOutputType || BodyOutputType.Default;\n    this.bodyTemplate = configOverrides.bodyTemplate || \"toasterBodyTmpl.html\";\n    this.defaultToastType = configOverrides.defaultToastType || \"info\";\n    this.positionClass =\n      configOverrides.positionClass || \"angular-toast-top-right\";\n    this.titleClass = configOverrides.titleClass || \"angular-toast-title\";\n    this.messageClass = configOverrides.messageClass || \"angular-toast-message\";\n    this.animation = configOverrides.animation || \"\";\n    this.preventDuplicates =\n      configOverrides.preventDuplicates != null\n        ? configOverrides.preventDuplicates\n        : false;\n    this.mouseoverTimerStop =\n      configOverrides.mouseoverTimerStop != null\n        ? configOverrides.mouseoverTimerStop\n        : false;\n    this.toastContainerId =\n      configOverrides.toastContainerId != null\n        ? configOverrides.toastContainerId\n        : null;\n  }\n}\n","import {\n  trigger, state, style, animate, transition, group\n} from '@angular/animations';\n\nexport const Transitions = [\n  trigger('toastState', [\n      state('flyRight, flyLeft, slideDown, slideDown, slideUp, slideUp, fade',\n          style({ opacity: 1, transform: 'translate(0,0)' })),\n      transition('void => flyRight', [\n          style({\n              opacity: 0,\n              transform: 'translateX(100%)',\n              height: 0\n          }),\n          animate('0.15s ease-in', style({\n              opacity: 1,\n              height: '*'\n          })),\n          animate('0.25s 15ms ease-in')\n      ]),\n      transition('flyRight => void', [\n          animate('0.25s ease-out', style({\n              opacity: 0,\n              transform: 'translateX(100%)'\n          })),\n          animate('0.15s ease-out', style({\n              height: 0\n          }))\n      ]),\n      transition('void => flyLeft', [\n          style({\n              opacity: 0,\n              transform: 'translateX(-100%)',\n              height: 0\n          }),\n          animate('0.15s ease-in', style({\n              opacity: 1,\n              height: '*'\n          })),\n          animate('0.25s 15ms ease-in')\n      ]),\n      transition('flyLeft => void', [\n          animate('0.25s 10ms ease-out', style({\n              opacity: 0,\n              transform: 'translateX(-100%)'\n          })),\n          animate('0.15s ease-out', style({\n              height: 0\n          }))\n      ]),\n      transition('void => slideDown', [\n          style({\n              opacity: 0,\n              transform: 'translateY(-500%)',\n              height: 0\n          }),\n          group([\n              animate('0.2s ease-in', style({\n                  height: '*'\n              })),\n              animate('0.4s ease-in', style({\n                  transform: 'translate(0,0)'\n              })),\n              animate('0.3s 0.1s ease-in', style({\n                  opacity: 1\n              }))\n          ])\n      ]),\n      transition('slideDown => void', group([\n          animate('0.3s ease-out', style({\n              opacity: 0\n          })),\n          animate('0.4s ease-out', style({\n              transform: 'translateY(-500%)'\n          })),\n          animate('0.2s 0.2s ease-out', style({\n              height: 0\n          }))\n      ])),\n      transition('void => slideUp', [\n          style({\n              opacity: 0,\n              transform: 'translateY(1000%)',\n              height: 0\n          }),\n          group([\n              animate('0.2s ease-in', style({\n                  height: '*'\n              })),\n              animate('0.5s ease-in', style({\n                  transform: 'translate(0,0)'\n              })),\n              animate('0.3s 0.1s ease-in', style({\n                  opacity: 1\n              }))\n          ])\n      ]),\n      transition('slideUp => void', group([\n          animate('0.3s ease-out', style({\n              opacity: 0\n          })),\n          animate('0.5s ease-out', style({\n              transform: 'translateY(1000%)'\n          })),\n          animate('0.3s 0.15s ease-out', style({\n              height: 0\n          }))\n      ])),\n      transition('void => fade', [\n          style({\n              opacity: 0,\n              height: 0\n          }),\n          animate('0.20s ease-in', style({\n              height: '*'\n          })),\n          animate('0.15s ease-in', style({\n              opacity: 1\n          }))\n\n      ]),\n      transition('fade => void', [\n          group([\n              animate('0.0s ease-out', style({\n                  // reposition the background to prevent\n                  // a ghost image during transition\n                  'background-position': '-99999px'\n              })),\n              animate('0.15s ease-out', style({\n                  opacity: 0,\n                  //'background-image': ''\n              })),\n              animate('0.3s 20ms ease-out', style({\n                  height: 0\n              }))\n          ])\n      ])\n  ]),\n]\n","import { Pipe, PipeTransform, inject } from \"@angular/core\";\nimport { DomSanitizer, SafeHtml } from \"@angular/platform-browser\";\n\n@Pipe({\n  name: \"trustHtml\",\n  pure: true,\n  standalone: true,\n})\nexport class TrustHtmlPipe implements PipeTransform {\n  private sanitizer: DomSanitizer = inject(DomSanitizer);\n  transform(content: string | undefined): SafeHtml {\n    return this.sanitizer.bypassSecurityTrustHtml(content ?? \"\");\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n  ViewChild,\n  ViewContainerRef,\n  inject,\n} from \"@angular/core\";\nimport { NgClass } from \"@angular/common\";\nimport {\n  BodyOutputType,\n  IToasterConfig,\n  Toast,\n} from \"./angular-toaster-config\";\nimport { TrustHtmlPipe } from \"./trust-html.pipe\";\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: \"[toastComp]\",\n  templateUrl: \"./angular-toaster.component.html\",\n  styleUrls: [\"./angular-toaster.component.css\"],\n  imports: [NgClass, TrustHtmlPipe],\n})\nexport class ToasterComponent implements OnInit, AfterViewInit, OnDestroy {\n  @Input() toasterconfig!: IToasterConfig;\n  @Input() toast!: Toast;\n  @Input() titleClass!: string;\n  @Input() messageClass!: string;\n  @ViewChild(\"componentBody\", { read: ViewContainerRef, static: false })\n  componentBody!: ViewContainerRef;\n\n  private viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n  private changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n  private ngZone: NgZone = inject(NgZone);\n  private element: ElementRef = inject(ElementRef);\n  private renderer2: Renderer2 = inject(Renderer2);\n\n  public progressBarWidth = -1;\n  public bodyOutputType = BodyOutputType;\n\n  @Output()\n  public clickEvent = new EventEmitter();\n  @Output()\n  public removeToastEvent = new EventEmitter<Toast>();\n\n  private timeoutId?: number | null = null;\n  private timeout: number | null = 0;\n  private progressBarIntervalId?: number | null = null;\n  private removeToastTick!: number | null;\n\n  private removeMouseOverListener!: () => void;\n\n  ngOnInit() {\n    if (this.toast.progressBar) {\n      this.toast.progressBarDirection =\n        this.toast.progressBarDirection || \"decreasing\";\n    }\n\n    let timeout =\n      typeof this.toast.timeout === \"number\"\n        ? this.toast.timeout\n        : this.toasterconfig.timeout;\n\n    if (typeof timeout === \"object\") {\n      timeout = timeout[this.toast.type];\n    }\n\n    this.timeout = timeout!;\n  }\n\n  ngAfterViewInit() {\n    if (this.toast.bodyOutputType === this.bodyOutputType.Component) {\n      const componentInstance: ComponentRef<typeof this.toast.body> =\n        this.viewContainerRef.createComponent(\n          this.toast.body,\n          undefined,\n          this.componentBody.injector\n        );\n      componentInstance.instance.toast = this.toast;\n      this.changeDetectorRef.detectChanges();\n    }\n\n    if (this.toasterconfig.mouseoverTimerStop) {\n      // only apply a mouseenter event when necessary to avoid\n      // unnecessary event and change detection cycles.\n      this.removeMouseOverListener = this.renderer2.listen(\n        this.element.nativeElement,\n        \"mouseenter\",\n        () => this.stopTimer()\n      );\n    }\n\n    this.configureTimer();\n  }\n\n  click(event: MouseEvent, toast: Toast) {\n    event.stopPropagation();\n    this.clickEvent.emit({ value: { toast: toast, isCloseButton: true } });\n  }\n\n  stopTimer() {\n    this.progressBarWidth = 0;\n    this.clearTimers();\n  }\n\n  @HostListener(\"mouseleave\")\n  restartTimer() {\n    if (this.toasterconfig.mouseoverTimerStop) {\n      if (!this.timeoutId) {\n        this.configureTimer();\n      }\n    } else if (this.timeout && !this.timeoutId) {\n      this.removeToast();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.removeMouseOverListener) {\n      this.removeMouseOverListener();\n    }\n    this.clearTimers();\n  }\n\n  private configureTimer() {\n    if (!this.timeout || this.timeout < 1) {\n      return;\n    }\n\n    if (this.toast.progressBar) {\n      this.removeToastTick = new Date().getTime() + this.timeout;\n      this.progressBarWidth = -1;\n    }\n\n    this.ngZone.runOutsideAngular(() => {\n      this.timeoutId = window.setTimeout(() => {\n        this.ngZone.run(() => {\n          this.changeDetectorRef.markForCheck();\n          this.removeToast();\n        });\n      }, this.timeout!);\n\n      if (this.toast.progressBar) {\n        this.progressBarIntervalId = window.setInterval(() => {\n          this.ngZone.run(() => {\n            this.updateProgressBar();\n          });\n        }, 10);\n      }\n    });\n  }\n\n  private updateProgressBar() {\n    if (this.progressBarWidth === 0 || this.progressBarWidth === 100) {\n      return;\n    }\n\n    this.progressBarWidth =\n      ((this.removeToastTick! - new Date().getTime()) / this.timeout!) * 100;\n\n    if (this.toast.progressBarDirection === \"increasing\") {\n      this.progressBarWidth = 100 - this.progressBarWidth;\n    }\n    if (this.progressBarWidth < 0) {\n      this.progressBarWidth = 0;\n    }\n    if (this.progressBarWidth > 100) {\n      this.progressBarWidth = 100;\n    }\n  }\n\n  private clearTimers() {\n    if (this.timeoutId) {\n      window.clearTimeout(this.timeoutId);\n    }\n\n    if (this.progressBarIntervalId) {\n      window.clearInterval(this.progressBarIntervalId);\n    }\n\n    this.timeoutId = null;\n    this.progressBarIntervalId = null;\n  }\n\n  private removeToast() {\n    this.removeToastEvent.emit(this.toast);\n  }\n}\n","<div class=\"angular-toast-content\">\n  <div [ngClass]=\"titleClass\">{{toast.title}}</div>\n  <div [ngClass]=\"messageClass\">\n    @switch (toast.bodyOutputType) {\n    @case (bodyOutputType.Component) {\n    <div #componentBody></div>\n    }\n    @case (bodyOutputType.TrustedHtml) {\n    <div [innerHTML]=\"toast.body | trustHtml\"></div>\n    }\n    @case (bodyOutputType.Default) {\n    <div>{{toast.body}}</div>\n    }\n    }\n  </div>\n</div>\n@if (toast.showCloseButton) {\n<button class=\"angular-toast-close-button\" (click)=\"click($event, toast)\" [innerHTML]=\"toast.closeHtml | trustHtml\">\n</button>\n}\n@if (toast.progressBar) {\n<div>\n  <div class=\"angular-toast-progress-bar\" [style.width]=\"progressBarWidth + '%'\"></div>\n</div>\n\n}\n","import { Component, Input, OnDestroy, OnInit, inject } from \"@angular/core\";\nimport { NgClass } from \"@angular/common\";\nimport { Subscription } from \"rxjs\";\nimport {\n  IClearWrapper,\n  IToasterConfig,\n  Toast,\n  ToasterConfigInjectionToken,\n  defaultToasterConfig,\n} from \"./angular-toaster-config\";\nimport { ToasterService } from \"./angular-toaster.service\";\nimport { Transitions } from \"./angular-toaster-animations\";\nimport { ToasterComponent } from \"./angular-toaster.component\";\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: `toaster-container, angular-toaster-container, div[toaster-container], div[angular-toaster-container]`,\n  templateUrl: \"./angular-toaster-container.component.html\",\n  styleUrl: \"./angular-toaster-container.component.css\",\n  animations: Transitions,\n  imports: [NgClass, ToasterComponent],\n})\nexport class ToasterContainerComponent implements OnInit, OnDestroy {\n  private _defaultToasterConfig = inject<IToasterConfig>(ToasterConfigInjectionToken, { optional: true });\n\n  private _toasterconfig: IToasterConfig;\n\n  @Input() public set toasterconfig(_toasterconfig: IToasterConfig) {\n    this._toasterconfig = (\n      this._defaultToasterConfig\n        ? {\n            ...defaultToasterConfig,\n            ...this._defaultToasterConfig,\n            ..._toasterconfig,\n          }\n        : { ...defaultToasterConfig, ..._toasterconfig }\n    ) as Required<IToasterConfig>;\n  }\n\n  public get toasterconfig(): IToasterConfig {\n    return this._toasterconfig;\n  }\n\n  public toasts: Toast[] = [];\n\n  private toasterService = inject<ToasterService>(ToasterService);\n\n  private addToastSubscriber!: Subscription;\n  private clearToastsSubscriber!: Subscription;\n\n  constructor() {\n    this._toasterconfig = (\n      this._defaultToasterConfig\n        ? { ...defaultToasterConfig, ...this._defaultToasterConfig }\n        : defaultToasterConfig\n    ) as Required<IToasterConfig>;\n  }\n\n  ngOnInit(): void {\n    this.registerSubscribers();\n  }\n\n  ngOnDestroy(): void {\n    if (this.addToastSubscriber) {\n      this.addToastSubscriber.unsubscribe();\n    }\n    if (this.clearToastsSubscriber) {\n      this.clearToastsSubscriber.unsubscribe();\n    }\n  }\n\n  // event handlers\n  click(toast: Toast, isCloseButton?: boolean) {\n    if (toast.onClickCallback) {\n      toast.onClickCallback(toast);\n    }\n\n    const tapToDismiss = !this.isNullOrUndefined(toast.tapToDismiss)\n      ? toast.tapToDismiss\n      : this.toasterconfig.tapToDismiss;\n\n    if (tapToDismiss || (toast.showCloseButton && isCloseButton)) {\n      this.removeToast(toast);\n    }\n  }\n\n  keypress(toast: Toast) {\n    this.removeToast(toast);\n  }\n\n  childClick($event: { value: { toast: Toast; isCloseButton?: boolean } }) {\n    this.click($event.value.toast, $event.value.isCloseButton);\n  }\n\n  removeToast(toast: Toast) {\n    const index = this.toasts.indexOf(toast);\n    if (index < 0) {\n      return;\n    }\n\n    const toastId = this.toastIdOrDefault(toast);\n\n    this.toasts.splice(index, 1);\n\n    if (toast.onHideCallback) {\n      toast.onHideCallback(toast);\n    }\n    this.toasterService._removeToastSubject.next({\n      toastId: toastId,\n      toastContainerId: toast.toastContainerId,\n    });\n  }\n\n  protected buildPositionClass(): string[] {\n    const classes: string[] = [\"angular-toast-container\"];\n    const position = this.toasterconfig.positionClass;\n    if (position) {\n      classes.push(position);\n    }\n    return classes;\n  }\n\n  protected buildToastCompClasses(toast: Toast): string[] {\n    const classes: string[] = [];\n    if (\n      this.toasterconfig.iconClasses &&\n      this.toasterconfig.iconClasses?.[toast.type]\n    ) {\n      classes.push(this.toasterconfig.iconClasses?.[toast.type] as string);\n    }\n    if (\n      this.toasterconfig.typeClasses &&\n      this.toasterconfig.typeClasses?.[toast.type]\n    ) {\n      classes.push(this.toasterconfig.typeClasses?.[toast.type] as string);\n    }\n    return classes;\n  }\n\n  // private functions\n  private registerSubscribers() {\n    this.addToastSubscriber = this.toasterService.addToast.subscribe(\n      (toast: Toast) => {\n        this.addToast(toast);\n      }\n    );\n\n    this.clearToastsSubscriber = this.toasterService.clearToasts.subscribe(\n      (clearWrapper: IClearWrapper) => {\n        this.clearToasts(clearWrapper);\n      }\n    );\n  }\n\n  private addToast(toast: Toast) {\n    if (\n      toast.toastContainerId &&\n      this.toasterconfig.toastContainerId &&\n      toast.toastContainerId !== this.toasterconfig.toastContainerId\n    ) {\n      return;\n    }\n\n    if (\n      !toast.type ||\n      !this.toasterconfig.typeClasses?.[toast.type] ||\n      !this.toasterconfig.iconClasses?.[toast.type]\n    ) {\n      toast.type = this.toasterconfig.defaultToastType!;\n    }\n\n    if (this.toasterconfig.preventDuplicates && this.toasts.length > 0) {\n      if (\n        toast.toastId &&\n        this.toasts.some((t) => t.toastId === toast.toastId)\n      ) {\n        return;\n      } else if (this.toasts.some((t) => t.body === toast.body)) {\n        return;\n      }\n    }\n\n    if (this.isNullOrUndefined(toast.showCloseButton)) {\n      if (typeof this.toasterconfig.showCloseButton === \"object\") {\n        toast.showCloseButton = this.toasterconfig.showCloseButton[toast.type];\n      } else if (typeof this.toasterconfig.showCloseButton === \"boolean\") {\n        toast.showCloseButton = this.toasterconfig.showCloseButton as boolean;\n      }\n    }\n\n    if (toast.showCloseButton) {\n      toast.closeHtml = toast.closeHtml || this.toasterconfig.closeHtml;\n    }\n\n    toast.bodyOutputType =\n      toast.bodyOutputType || this.toasterconfig.bodyOutputType;\n\n    if (this.toasterconfig.newestOnTop) {\n      this.toasts.unshift(toast);\n      if (this.isLimitExceeded()) {\n        this.toasts.pop();\n      }\n    } else {\n      this.toasts.push(toast);\n      if (this.isLimitExceeded()) {\n        this.toasts.shift();\n      }\n    }\n\n    if (toast.onShowCallback) {\n      toast.onShowCallback(toast);\n    }\n  }\n\n  private isLimitExceeded() {\n    return (\n      this.toasterconfig.limit && this.toasts.length > this.toasterconfig.limit\n    );\n  }\n\n  private removeAllToasts() {\n    for (let i = this.toasts.length - 1; i >= 0; i--) {\n      this.removeToast(this.toasts[i]);\n    }\n  }\n\n  private clearToasts(clearWrapper: IClearWrapper) {\n    const toastId = clearWrapper.toastId;\n    const toastContainerId = clearWrapper.toastContainerId;\n\n    if (\n      this.isNullOrUndefined(toastContainerId) ||\n      toastContainerId === this.toasterconfig.toastContainerId\n    ) {\n      this.clearToastsAction(toastId);\n    }\n  }\n\n  private clearToastsAction(toastId?: string) {\n    if (toastId) {\n      this.removeToast(this.toasts.filter((t) => t.toastId === toastId)[0]);\n    } else {\n      this.removeAllToasts();\n    }\n  }\n\n  private toastIdOrDefault(toast: Toast) {\n    return toast.toastId || \"\";\n  }\n\n  private isNullOrUndefined(value: unknown): boolean {\n    return value === null || typeof value === \"undefined\";\n  }\n}\n","<div [ngClass]=\"buildPositionClass()\">\n  @for (toast of toasts; track $index) {\n  <div\n    toastComp\n    class=\"angular-toast\"\n    aria-hidden=\"true\"\n    tabIndex=\"0\"\n    [toast]=\"toast\"\n    [toasterconfig]=\"toasterconfig\"\n    [@toastState]=\"toasterconfig.animation\"\n    [titleClass]=\"toasterconfig.titleClass!\"\n    [messageClass]=\"toasterconfig.messageClass!\"\n    [ngClass]=\"buildToastCompClasses(toast)\"\n    (click)=\"click(toast)\"\n    (keypress)=\"keypress(toast)\"\n    (clickEvent)=\"childClick($event)\"\n    (removeToastEvent)=\"removeToast($event)\"\n  ></div>\n  }\n</div>\n","import { IToasterConfig, ToasterConfigInjectionToken, defaultToasterConfig } from './angular-toaster-config';\n\nexport const toasterConfigProvider = (config?: IToasterConfig) => {\n    return {\n      provide: ToasterConfigInjectionToken, useFactory: () => {\n        const defaultConfig: IToasterConfig = config ? { ...defaultToasterConfig, ...config } : defaultToasterConfig;\n        return defaultConfig;\n      }\n    }\n  }","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { IToasterConfig } from \"./angular-toaster-config\";\nimport { ToasterContainerComponent } from \"./angular-toaster-container.component\";\nimport { ToasterComponent } from \"./angular-toaster.component\";\nimport { ToasterService } from \"./angular-toaster.service\";\nimport { toasterConfigProvider } from \"./angular-toaster.injectors\";\n\n\n@NgModule({\n  imports: [\n    CommonModule,\n    ToasterComponent,\n    ToasterContainerComponent,\n  ],\n  declarations: [],\n  exports: [\n    ToasterContainerComponent,\n    ToasterComponent\n  ]\n})\nexport class ToasterModule {\n\n  static forRoot(config?: IToasterConfig): ModuleWithProviders<ToasterModule> {\n    return {\n      ngModule: ToasterModule,\n      providers: [\n        toasterConfigProvider(config),\n        ToasterService,\n        ToasterContainerComponent\n      ]\n    };\n  }\n\n  static forChild(config?: IToasterConfig): ModuleWithProviders<ToasterModule> {\n    return {\n      ngModule: ToasterModule,\n      providers: [\n        toasterConfigProvider(config),\n        ToasterContainerComponent\n      ]\n    }\n  }\n}\n","import { makeEnvironmentProviders } from '@angular/core';\nimport { IToasterConfig } from './angular-toaster-config';\nimport { toasterConfigProvider } from './angular-toaster.injectors';\nimport { ToasterService } from './angular-toaster.service';\nimport { ToasterContainerComponent } from './angular-toaster-container.component';\n\nexport const provideAngularToaster = (config?: IToasterConfig) => {\n    return makeEnvironmentProviders([\n        toasterConfigProvider(config),\n        ToasterService,\n        ToasterContainerComponent\n    ])\n}\n\n","/*\n * Public API Surface of angular-toaster\n */\n\nexport * from './angular-toaster.service';\nexport * from './angular-toaster-container.component';\nexport * from './angular-toaster.component';\nexport * from './angular-toaster-config';\nexport * from './angular-toaster.module';\nexport * from './angular-toaster.provider';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}