{"version":3,"file":"ngxpert-hot-toast.mjs","sources":["../../../../projects/ngxpert/hot-toast/src/lib/constants.ts","../../../../projects/ngxpert/hot-toast/src/lib/hot-toast-ref.ts","../../../../projects/ngxpert/hot-toast/src/lib/utils.ts","../../../../projects/ngxpert/hot-toast/src/lib/components/indicator/icons/loader/loader.component.ts","../../../../projects/ngxpert/hot-toast/src/lib/components/indicator/icons/loader/loader.component.html","../../../../projects/ngxpert/hot-toast/src/lib/components/indicator/icons/error/error.component.ts","../../../../projects/ngxpert/hot-toast/src/lib/components/indicator/icons/error/error.component.html","../../../../projects/ngxpert/hot-toast/src/lib/components/indicator/icons/checkmark/checkmark.component.ts","../../../../projects/ngxpert/hot-toast/src/lib/components/indicator/icons/checkmark/checkmark.component.html","../../../../projects/ngxpert/hot-toast/src/lib/components/indicator/icons/warning/warning.component.ts","../../../../projects/ngxpert/hot-toast/src/lib/components/indicator/icons/warning/warning.component.html","../../../../projects/ngxpert/hot-toast/src/lib/components/indicator/icons/info/info.component.ts","../../../../projects/ngxpert/hot-toast/src/lib/components/indicator/icons/info/info.component.html","../../../../projects/ngxpert/hot-toast/src/lib/components/indicator/indicator.component.ts","../../../../projects/ngxpert/hot-toast/src/lib/components/indicator/indicator.component.html","../../../../projects/ngxpert/hot-toast/src/lib/components/animated-icon/animated-icon.component.ts","../../../../projects/ngxpert/hot-toast/src/lib/components/animated-icon/animated-icon.component.html","../../../../projects/ngxpert/hot-toast/src/lib/components/hot-toast-group-item/hot-toast-group-item.component.ts","../../../../projects/ngxpert/hot-toast/src/lib/components/hot-toast-group-item/hot-toast-group-item.component.html","../../../../projects/ngxpert/hot-toast/src/lib/components/hot-toast/hot-toast.component.ts","../../../../projects/ngxpert/hot-toast/src/lib/components/hot-toast/hot-toast.component.html","../../../../projects/ngxpert/hot-toast/src/lib/components/hot-toast-container/hot-toast-container.component.ts","../../../../projects/ngxpert/hot-toast/src/lib/components/hot-toast-container/hot-toast-container.component.html","../../../../projects/ngxpert/hot-toast/src/lib/hot-toast.model.ts","../../../../projects/ngxpert/hot-toast/src/lib/hot-toast.service.ts","../../../../projects/ngxpert/hot-toast/src/lib/hot-toast.provide.ts","../../../../projects/ngxpert/hot-toast/src/lib/hot-toast-builder.ts","../../../../projects/ngxpert/hot-toast/src/public-api.ts","../../../../projects/ngxpert/hot-toast/src/ngxpert-hot-toast.ts"],"sourcesContent":["import { ToastType } from './hot-toast.model';\n\nexport const HOT_TOAST_DEFAULT_TIMEOUTS: {\n  [key in ToastType]: number;\n} = {\n  blank: 4000,\n  error: 4000,\n  success: 4000,\n  loading: 30000,\n  warning: 4000,\n  info: 4000,\n};\n\nexport const EXIT_ANIMATION_DURATION = 800;\nexport const ENTER_ANIMATION_DURATION = 350;\n\nexport const HOT_TOAST_MARGIN = 8;\n\nexport const HOT_TOAST_DEPTH_SCALE = 0.05;\nexport const HOT_TOAST_DEPTH_SCALE_ADD = 1;","import { Content } from '@ngneat/overview';\nimport { Observable, race, Subject } from 'rxjs';\n\n// This should be a `type` import since it causes `ng-packagr` compilation to fail because of a cyclic dependency.\nimport type { HotToastContainerComponent } from './components/hot-toast-container/hot-toast-container.component';\nimport {\n  HotToastClose,\n  Toast,\n  UpdateToastOptions,\n  HotToastRefProps,\n  DefaultDataType,\n  CreateHotToastRef,\n  HotToastGroupEvent,\n} from './hot-toast.model';\n\nexport class HotToastRef<DataType = DefaultDataType> implements HotToastRefProps<DataType> {\n  updateMessage: (message: Content) => void;\n  updateToast: (options: UpdateToastOptions<DataType>) => void;\n  afterClosed: Observable<HotToastClose>;\n  afterGroupToggled: Observable<HotToastGroupEvent>;\n  afterGroupRefsAttached: Observable<CreateHotToastRef<unknown>[]>;\n  groupRefs: CreateHotToastRef<unknown>[] = [];\n  groupExpanded = false;\n\n  private _dispose: () => void;\n\n  /** Subject for notifying the user that the toast has been closed. */\n  private _onClosed = new Subject<HotToastClose>();\n\n  /** Subject for notifying the user that the toast has been closed. */\n  private _onGroupToggle = new Subject<HotToastGroupEvent>();\n\n  constructor(private toast: Toast<DataType>) {}\n\n  set data(data: DataType) {\n    this.toast.data = data;\n  }\n\n  get data() {\n    return this.toast.data;\n  }\n\n  set dispose(value: () => void) {\n    this._dispose = value;\n  }\n\n  getToast() {\n    return this.toast;\n  }\n\n  /**\n   * Used for internal purpose\n   * Attach ToastRef to container\n   */\n  appendTo(container: HotToastContainerComponent, skipAttachToParent?: boolean) {\n    const { dispose, updateMessage, updateToast, afterClosed, afterGroupToggled, afterGroupRefsAttached } =\n      container.addToast(this, skipAttachToParent);\n\n    this.dispose = dispose;\n    this.updateMessage = updateMessage;\n    this.updateToast = updateToast;\n    this.afterClosed = race(this._onClosed.asObservable(), afterClosed);\n    this.afterGroupToggled = race(this._onGroupToggle.asObservable(), afterGroupToggled);\n    this.afterGroupRefsAttached = afterGroupRefsAttached;\n    return this;\n  }\n\n  /**\n   * Closes the toast\n   *\n   * @param [closeData={ dismissedByAction: false }] -\n   * Make sure to pass { dismissedByAction: true } when closing from template\n   * @memberof HotToastRef\n   */\n  close(closeData: { dismissedByAction: boolean } = { dismissedByAction: false }) {\n    this.groupRefs.forEach((ref) => ref.close());\n    this._dispose();\n    this._onClosed.next({ dismissedByAction: closeData.dismissedByAction, id: this.toast.id });\n    this._onClosed.complete();\n  }\n\n  toggleGroup(eventData: { byAction: boolean } = { byAction: false }) {\n    this.groupExpanded = !this.groupExpanded;\n    this._onGroupToggle.next({\n      byAction: eventData.byAction,\n      id: this.toast.id,\n      event: this.groupExpanded ? 'expand' : 'collapse',\n    });\n  }\n\n  show() {\n    this.toast.visible = true;\n  }\n}\n","import { Renderer2 } from '@angular/core';\n\nexport const animate = (renderer: Renderer2, element: HTMLElement, animation: string) => {\n  renderer.setStyle(element, 'animation', animation);\n};\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { IconTheme } from '../../../../hot-toast.model';\n\n@Component({\n  selector: 'hot-toast-loader',\n  templateUrl: './loader.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoaderComponent {\n  @Input() theme: IconTheme;\n}\n","<div\n  class=\"hot-toast-loader-icon\"\n  [style.border-color]=\"theme?.primary\"\n  [style.border-right-color]=\"theme?.secondary\"\n></div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IconTheme } from '../../../../hot-toast.model';\n\n@Component({\n  selector: 'hot-toast-error',\n  templateUrl: './error.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class ErrorComponent {\n  @Input() theme: IconTheme;\n}\n","<div\n  class=\"hot-toast-error-icon\"\n  [style.--error-primary]=\"theme?.primary\"\n  [style.--error-secondary]=\"theme?.secondary\"\n></div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IconTheme } from '../../../../hot-toast.model';\n\n@Component({\n  selector: 'hot-toast-checkmark',\n  templateUrl: './checkmark.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class CheckMarkComponent {\n  @Input() theme: IconTheme;\n}\n","<div\n  class=\"hot-toast-checkmark-icon\"\n  [style.--check-primary]=\"theme?.primary\"\n  [style.--check-secondary]=\"theme?.secondary\"\n></div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IconTheme } from '../../../../hot-toast.model';\n\n@Component({\n  selector: 'hot-toast-warning',\n  templateUrl: './warning.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class WarningComponent {\n  @Input() theme: IconTheme;\n}\n","<div\n  class=\"hot-toast-warning-icon\"\n  [style.--warn-primary]=\"theme?.primary\"\n  [style.--warn-secondary]=\"theme?.secondary\"\n></div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IconTheme } from '../../../../hot-toast.model';\n\n@Component({\n  selector: 'hot-toast-info',\n  templateUrl: './info.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class InfoComponent {\n  @Input() theme: IconTheme;\n}\n","<div\n  class=\"hot-toast-info-icon\"\n  [style.--info-primary]=\"theme?.primary\"\n  [style.--info-secondary]=\"theme?.secondary\"\n></div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { IconTheme, ToastType } from '../../hot-toast.model';\nimport { LoaderComponent } from './icons/loader/loader.component';\nimport { ErrorComponent } from './icons/error/error.component';\nimport { CheckMarkComponent } from './icons/checkmark/checkmark.component';\nimport { WarningComponent } from './icons/warning/warning.component';\nimport { InfoComponent } from './icons/info/info.component';\n\n@Component({\n    selector: 'hot-toast-indicator',\n    templateUrl: 'indicator.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [LoaderComponent, ErrorComponent, CheckMarkComponent, WarningComponent, InfoComponent]\n})\nexport class IndicatorComponent {\n  @Input() theme: IconTheme;\n  @Input() type: ToastType;\n}\n","@if (type !== 'blank') {\n<div class=\"hot-toast-indicator-wrapper\">\n  @if (type === 'loading') {\n  <hot-toast-loader [theme]=\"theme\"></hot-toast-loader>\n  } @if (type !== 'loading') {\n  <div class=\"hot-toast-status-wrapper\">\n    <div>\n      @switch (type) { @case ('error') {\n      <div>\n        <hot-toast-error [theme]=\"theme\"></hot-toast-error>\n      </div>\n      } @case ('success') {\n      <div>\n        <hot-toast-checkmark [theme]=\"theme\"></hot-toast-checkmark>\n      </div>\n      } @case ('warning') {\n      <div>\n        <hot-toast-warning [theme]=\"theme\"></hot-toast-warning>\n      </div>\n      } @case ('info') {\n      <div>\n        <hot-toast-info [theme]=\"theme\"></hot-toast-info>\n      </div>\n      } }\n    </div>\n  </div>\n  }\n</div>\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IconTheme } from '../../hot-toast.model';\nimport { Content, DynamicViewDirective } from '@ngneat/overview';\n\n@Component({\n  selector: 'hot-toast-animated-icon',\n  templateUrl: './animated-icon.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [DynamicViewDirective],\n})\nexport class AnimatedIconComponent {\n  @Input() iconTheme: IconTheme;\n  @Input() icon: Content;\n}\n\n","<div class=\"hot-toast-animated-icon\" [style.color]=\"iconTheme?.primary\">\n  <ng-container *dynamicView=\"icon\"></ng-container>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Injector,\n  Input,\n  NgZone,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  OnChanges,\n  OnInit,\n  AfterViewInit,\n  OnDestroy,\n  signal,\n  ChangeDetectorRef,\n  inject,\n} from '@angular/core';\nimport { AnimatedIconComponent } from '../animated-icon/animated-icon.component';\nimport { IndicatorComponent } from '../indicator/indicator.component';\nimport { DynamicViewDirective, isComponent, isTemplateRef } from '@ngneat/overview';\nimport { ENTER_ANIMATION_DURATION, EXIT_ANIMATION_DURATION, HOT_TOAST_DEPTH_SCALE } from '../../constants';\nimport { HotToastRef } from '../../hot-toast-ref';\nimport { Toast, ToastConfig, CreateHotToastRef, HotToastClose, HotToastGroupEvent } from '../../hot-toast.model';\nimport { animate } from '../../utils';\n\n@Component({\n  selector: 'hot-toast-group-item',\n  templateUrl: 'hot-toast-group-item.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AnimatedIconComponent, IndicatorComponent, DynamicViewDirective],\n})\nexport class HotToastGroupItemComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n  private _toast: Toast<unknown>;\n  @Input()\n  set toast(value: Toast<unknown>) {\n    this._toast = value;\n    const ogStyle = this.toastBarBaseStylesSignal();\n    const newStyle: Record<string, string> = { ...value.style };\n\n    if (ogStyle['animation']?.includes('hotToastExitAnimation')) {\n      // if toast is set for exit, we don't need want set the enter animation\n      newStyle['animation'] = ogStyle['animation'];\n    } else {\n      const top = value.position.includes('top');\n      const enterAnimation = `hotToastEnterAnimation${\n        top ? 'Negative' : 'Positive'\n      } ${ENTER_ANIMATION_DURATION}ms cubic-bezier(0.21, 1.02, 0.73, 1) forwards`;\n      newStyle['animation'] = enterAnimation;\n    }\n\n    this.toastBarBaseStylesSignal.set(newStyle);\n  }\n  get toast() {\n    return this._toast;\n  }\n  @Input() offset = 0;\n  @Input() defaultConfig: ToastConfig;\n  @Input() toastRef: CreateHotToastRef<unknown>;\n\n  private _toastsAfter = 0;\n  get toastsAfter() {\n    return this._toastsAfter;\n  }\n  @Input()\n  set toastsAfter(value) {\n    this._toastsAfter = value;\n  }\n\n  @Input() isShowingAllToasts = false;\n\n  @Output() height = new EventEmitter<number>();\n  @Output() beforeClosed = new EventEmitter();\n  @Output() afterClosed = new EventEmitter<HotToastClose>();\n  @Output() showAllToasts = new EventEmitter<boolean>();\n  @Output() toggleGroup = new EventEmitter<HotToastGroupEvent>();\n\n  @ViewChild('hotToastBarBase', { static: true }) protected toastBarBase: ElementRef<HTMLElement>;\n\n  isManualClose = false;\n  context: Record<string, unknown>;\n  toastComponentInjector: Injector;\n  toastBarBaseStylesSignal = signal({});\n\n  private unlisteners: VoidFunction[] = [];\n  protected softClosed = false;\n\n  private injector = inject(Injector);\n  private renderer = inject(Renderer2);\n  private ngZone = inject(NgZone);\n  private cdr = inject(ChangeDetectorRef);\n\n  get toastBarBaseHeight() {\n    return this.toastBarBase.nativeElement.offsetHeight;\n  }\n\n  get scale() {\n    return this.defaultConfig.stacking !== 'vertical' && !this.isShowingAllToasts\n      ? this.toastsAfter * -HOT_TOAST_DEPTH_SCALE + 1\n      : 1;\n  }\n\n  get translateY() {\n    return this.offset * (this.top ? 1 : -1) + 'px';\n  }\n\n  get exitAnimationDelay() {\n    return this.toast.duration + 'ms';\n  }\n\n  get top() {\n    return this.toast.position.includes('top');\n  }\n\n  get containerPositionStyle() {\n    const verticalStyle = this.top ? { top: 0 } : { bottom: 0 };\n    const transform = `translateY(var(--hot-toast-translate-y)) scale(var(--hot-toast-scale))`;\n\n    const horizontalStyle = this.toast.position.includes('left')\n      ? {\n          left: 0,\n        }\n      : this.toast.position.includes('right')\n      ? {\n          right: 0,\n        }\n      : {\n          left: 0,\n          right: 0,\n          justifyContent: 'center',\n        };\n    return {\n      transform,\n      ...verticalStyle,\n      ...horizontalStyle,\n    };\n  }\n\n  get isIconString() {\n    return typeof this.toast.icon === 'string';\n  }\n\n  get groupChildrenToastRefs() {\n    return this.toastRef.groupRefs.filter((ref) => !!ref);\n  }\n  set groupChildrenToastRefs(value: CreateHotToastRef<unknown>[]) {\n    (this.toastRef as { groupRefs: CreateHotToastRef<unknown>[] }).groupRefs = value;\n  }\n\n  get groupChildrenToasts() {\n    return this.groupChildrenToastRefs.map((ref) => ref.getToast());\n  }\n\n  get groupHeight() {\n    return this.visibleToasts.map((t) => t.height).reduce((prev, curr) => prev + curr, 0);\n  }\n\n  get isExpanded() {\n    return this.toastRef.groupExpanded;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.toast && !changes.toast.firstChange && changes.toast.currentValue?.message) {\n      requestAnimationFrame(() => {\n        this.height.emit(this.toastBarBase.nativeElement.offsetHeight);\n      });\n    }\n  }\n\n  ngOnInit() {\n    if (isTemplateRef(this.toast.message)) {\n      this.context = { $implicit: this.toastRef };\n    }\n    if (isComponent(this.toast.message)) {\n      this.toastComponentInjector = Injector.create({\n        providers: [\n          {\n            provide: HotToastRef,\n            useValue: this.toastRef,\n          },\n        ],\n        parent: this.toast.injector || this.injector,\n      });\n    }\n\n    const nativeElement = this.toastBarBase.nativeElement;\n    // Caretaker note: `animationstart` and `animationend` events are event tasks that trigger change detection.\n    // We'd want to trigger the change detection only if it's an exit animation.\n    this.ngZone.runOutsideAngular(() => {\n      this.unlisteners.push(\n        // Caretaker note: we have to remove these event listeners at the end (even if the element is removed from DOM).\n        // zone.js stores its `ZoneTask`s within the `nativeElement[Zone.__symbol__('animationstart') + 'false']` property\n        // with callback that capture `this`.\n        this.renderer.listen(nativeElement, 'animationstart', (event: AnimationEvent) => {\n          if (this.isExitAnimation(event)) {\n            this.ngZone.run(() => {\n              this.renderer.setStyle(nativeElement, 'pointer-events', 'none');\n              this.renderer.setStyle(nativeElement.parentElement, 'pointer-events', 'none');\n              this.beforeClosed.emit();\n            });\n          }\n        }),\n        this.renderer.listen(nativeElement, 'animationend', (event: AnimationEvent) => {\n          if (this.isEnterAnimation(event)) {\n            this.ngZone.run(() => {\n              if (this.toast.autoClose) {\n                const exitAnimation = `hotToastExitAnimation${\n                  this.top ? 'Negative' : 'Positive'\n                } ${EXIT_ANIMATION_DURATION}ms forwards cubic-bezier(0.06, 0.71, 0.55, 1) var(--hot-toast-exit-animation-delay) var(--hot-toast-exit-animation-state)`;\n                this.toastBarBaseStylesSignal.set({ ...this.toast.style, animation: exitAnimation });\n              }\n            });\n          }\n          if (this.isExitAnimation(event)) {\n            this.ngZone.run(() => this.afterClosed.emit({ dismissedByAction: this.isManualClose, id: this.toast.id }));\n          }\n        })\n      );\n    });\n  }\n\n  ngAfterViewInit() {\n    const nativeElement = this.toastBarBase.nativeElement;\n    // Caretaker note: accessing `offsetHeight` triggers the whole layout update.\n    // Macro tasks (like `setTimeout`) might be executed within the current rendering frame and cause a frame drop.\n    requestAnimationFrame(() => {\n      this.height.emit(nativeElement.offsetHeight);\n    });\n\n    this.setToastAttributes();\n  }\n\n  softClose() {\n    const exitAnimation = `hotToastExitSoftAnimation${\n      this.top ? 'Negative' : 'Positive'\n    } ${EXIT_ANIMATION_DURATION}ms forwards cubic-bezier(0.06, 0.71, 0.55, 1)`;\n\n    const nativeElement = this.toastBarBase.nativeElement;\n\n    animate(this.renderer, nativeElement, exitAnimation);\n    this.softClosed = true;\n  }\n  softOpen() {\n    const softEnterAnimation = `hotToastEnterSoftAnimation${\n      top ? 'Negative' : 'Positive'\n    } ${ENTER_ANIMATION_DURATION}ms cubic-bezier(0.21, 1.02, 0.73, 1) forwards`;\n\n    const nativeElement = this.toastBarBase.nativeElement;\n\n    animate(this.renderer, nativeElement, softEnterAnimation);\n    this.softClosed = false;\n  }\n\n  close() {\n    this.isManualClose = true;\n    this.cdr.markForCheck();\n\n    const exitAnimation = `hotToastExitAnimation${\n      this.top ? 'Negative' : 'Positive'\n    } ${EXIT_ANIMATION_DURATION}ms forwards cubic-bezier(0.06, 0.71, 0.55, 1)`;\n    this.toastBarBaseStylesSignal.set({ ...this.toast.style, animation: exitAnimation });\n  }\n\n  handleMouseEnter() {\n    this.showAllToasts.emit(true);\n  }\n  handleMouseLeave() {\n    this.showAllToasts.emit(false);\n  }\n\n  ngOnDestroy() {\n    this.close();\n    while (this.unlisteners.length) {\n      this.unlisteners.pop()();\n    }\n  }\n\n  private isExitAnimation(ev: AnimationEvent) {\n    return ev.animationName.includes('hotToastExitAnimation');\n  }\n\n  private isEnterAnimation(ev: AnimationEvent) {\n    return ev.animationName.includes('hotToastEnterAnimation');\n  }\n\n  private setToastAttributes() {\n    const toastAttributes: Record<string, string> = this.toast.attributes;\n    for (const [key, value] of Object.entries(toastAttributes)) {\n      this.renderer.setAttribute(this.toastBarBase.nativeElement, key, value);\n    }\n  }\n\n  get visibleToasts() {\n    return this.groupChildrenToasts.filter((t) => t.visible);\n  }\n}\n","<div\n  class=\"hot-toast-bar-base-container\"\n  [style]=\"containerPositionStyle\"\n  [class]=\"'hot-toast-theme-' + toast.theme\"\n  [style.--hot-toast-scale]=\"scale\"\n  [style.--hot-toast-translate-y]=\"translateY\"\n>\n  <div class=\"hot-toast-bar-base-wrapper\" (mouseenter)=\"handleMouseEnter()\" (mouseleave)=\"handleMouseLeave()\">\n    <div\n      class=\"hot-toast-bar-base\"\n      #hotToastBarBase\n      [style]=\"toastBarBaseStylesSignal()\"\n      [class]=\"toast.className\"\n      [style.--hot-toast-animation-state]=\"isManualClose ? 'running' : 'paused'\"\n      [style.--hot-toast-exit-animation-state]=\"isShowingAllToasts ? 'paused' : 'running'\"\n      [style.--hot-toast-exit-animation-delay]=\"exitAnimationDelay\"\n      [attr.aria-live]=\"toast.ariaLive\"\n      [attr.role]=\"toast.role\"\n    >\n      <div class=\"hot-toast-icon\" aria-hidden=\"true\">\n        @if (toast.icon !== undefined) { @if (isIconString) {\n        <hot-toast-animated-icon [iconTheme]=\"toast.iconTheme\">{{ toast.icon }}</hot-toast-animated-icon>\n        } @else {\n        <div>\n          <ng-container *dynamicView=\"toast.icon\"></ng-container>\n        </div>\n        } } @else {\n        <hot-toast-indicator [theme]=\"toast.iconTheme\" [type]=\"toast.type\"></hot-toast-indicator>\n        }\n      </div>\n      <div class=\"hot-toast-message\">\n        <ng-container *dynamicView=\"toast.message; context: context; injector: toastComponentInjector\"></ng-container>\n      </div>\n      @if (toast.dismissible) {\n      <button\n        (click)=\"close()\"\n        type=\"button\"\n        class=\"hot-toast-close-btn\"\n        aria-label=\"Close\"\n        [style]=\"toast.closeStyle\"\n      ></button>\n      }\n    </div>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DoCheck,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Injector,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n  signal,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { DynamicViewDirective, isComponent, isTemplateRef } from '@ngneat/overview';\n\nimport { ENTER_ANIMATION_DURATION, EXIT_ANIMATION_DURATION, HOT_TOAST_DEPTH_SCALE } from '../../constants';\nimport { HotToastRef } from '../../hot-toast-ref';\nimport { CreateHotToastRef, HotToastClose, HotToastGroupEvent, Toast, ToastConfig } from '../../hot-toast.model';\nimport { animate } from '../../utils';\nimport { IndicatorComponent } from '../indicator/indicator.component';\nimport { AnimatedIconComponent } from '../animated-icon/animated-icon.component';\nimport { HotToastGroupItemComponent } from '../hot-toast-group-item/hot-toast-group-item.component';\n\n@Component({\n  selector: 'hot-toast',\n  templateUrl: 'hot-toast.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [DynamicViewDirective, IndicatorComponent, AnimatedIconComponent, HotToastGroupItemComponent],\n})\nexport class HotToastComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges, DoCheck {\n  private _toast: Toast<unknown>;\n  @Input()\n  set toast(value: Toast<unknown>) {\n    this._toast = value;\n    const ogStyle = this.toastBarBaseStylesSignal();\n    const newStyle: Record<string, string> = { ...value.style };\n\n    if (ogStyle['animation']?.includes('hotToastExitAnimation')) {\n      // if toast is set for exit, we don't need want set the enter animation\n      newStyle['animation'] = ogStyle['animation'];\n    } else {\n      const top = value.position.includes('top');\n      const enterAnimation = `hotToastEnterAnimation${\n        top ? 'Negative' : 'Positive'\n      } ${ENTER_ANIMATION_DURATION}ms cubic-bezier(0.21, 1.02, 0.73, 1) forwards`;\n      newStyle['animation'] = enterAnimation;\n    }\n\n    this.toastBarBaseStylesSignal.set(newStyle);\n  }\n  get toast() {\n    return this._toast;\n  }\n  @Input() offset = 0;\n  @Input() defaultConfig: ToastConfig;\n  @Input() toastRef: CreateHotToastRef<unknown>;\n\n  private _toastsAfter = 0;\n  get toastsAfter() {\n    return this._toastsAfter;\n  }\n  @Input()\n  set toastsAfter(value) {\n    this._toastsAfter = value;\n    if (this.defaultConfig?.visibleToasts > 0) {\n      if (this.toast.autoClose) {\n        // if (value >= this.defaultConfig?.visibleToasts) {\n        //   this.close();\n        // }\n      } else {\n        if (value >= this.defaultConfig?.visibleToasts) {\n          this.softClose();\n        } else if (this.softClosed) {\n          this.softOpen();\n        }\n      }\n    }\n  }\n\n  @Input() isShowingAllToasts = false;\n\n  @Output() height = new EventEmitter<number>();\n  @Output() beforeClosed = new EventEmitter();\n  @Output() afterClosed = new EventEmitter<HotToastClose>();\n  @Output() showAllToasts = new EventEmitter<boolean>();\n  @Output() toggleGroup = new EventEmitter<HotToastGroupEvent>();\n\n  @ViewChild('hotToastBarBase', { static: true }) private toastBarBase: ElementRef<HTMLElement>;\n\n  isManualClose = false;\n  context: Record<string, unknown>;\n  toastComponentInjector: Injector;\n  isExpanded = false;\n  toastBarBaseStylesSignal = signal<Record<string, string>>({});\n\n  private unlisteners: VoidFunction[] = [];\n  private softClosed = false;\n  private groupRefs: CreateHotToastRef<unknown>[] = [];\n\n  private injector = inject(Injector);\n  private renderer = inject(Renderer2);\n  private ngZone = inject(NgZone);\n  private cdr = inject(ChangeDetectorRef);\n\n  get toastBarBaseHeight() {\n    return this.toastBarBase.nativeElement.offsetHeight;\n  }\n\n  get scale() {\n    return this.defaultConfig.stacking !== 'vertical' && !this.isShowingAllToasts\n      ? this.toastsAfter * -HOT_TOAST_DEPTH_SCALE + 1\n      : 1;\n  }\n\n  get translateY() {\n    return this.offset * (this.top ? 1 : -1) + 'px';\n  }\n\n  get exitAnimationDelay() {\n    return this.toast.duration + 'ms';\n  }\n\n  get top() {\n    return this.toast.position.includes('top');\n  }\n\n  get containerPositionStyle() {\n    const verticalStyle = this.top ? { top: 0 } : { bottom: 0 };\n    const transform = `translateY(var(--hot-toast-translate-y)) scale(var(--hot-toast-scale))`;\n\n    const horizontalStyle = this.toast.position.includes('left')\n      ? {\n          left: 0,\n        }\n      : this.toast.position.includes('right')\n      ? {\n          right: 0,\n        }\n      : {\n          left: 0,\n          right: 0,\n          justifyContent: 'center',\n        };\n    return {\n      transform,\n      ...verticalStyle,\n      ...horizontalStyle,\n    };\n  }\n\n  get isIconString() {\n    return typeof this.toast.icon === 'string';\n  }\n\n  get groupChildrenToastRefs() {\n    return this.groupRefs.filter((ref) => !!ref);\n  }\n  set groupChildrenToastRefs(value: CreateHotToastRef<unknown>[]) {\n    this.groupRefs = value;\n\n    (this.toastRef as { groupRefs: CreateHotToastRef<unknown>[] }).groupRefs = value;\n  }\n\n  get groupChildrenToasts() {\n    return this.groupChildrenToastRefs.map((ref) => ref.getToast());\n  }\n\n  get groupHeight() {\n    return this.visibleToasts\n      .slice(-this.defaultConfig.visibleToasts)\n      .map((t) => t.height)\n      .reduce((prev, curr) => prev + curr, 0);\n  }\n\n  get visibleToasts() {\n    return this.groupChildrenToasts.filter((t) => t.visible);\n  }\n\n  ngDoCheck() {\n    if (this.toastRef.groupRefs.length !== this.groupRefs.length) {\n      this.groupRefs = this.toastRef.groupRefs.slice();\n      this.cdr.markForCheck();\n\n      this.emiHeightWithGroup(this.isExpanded);\n    }\n    if (this.toastRef.groupExpanded !== this.isExpanded) {\n      this.isExpanded = this.toastRef.groupExpanded;\n      this.cdr.markForCheck();\n\n      this.emiHeightWithGroup(this.isExpanded);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.toast && !changes.toast.firstChange && changes.toast.currentValue?.message) {\n      this, this.emiHeightWithGroup(this.isExpanded);\n    }\n  }\n\n  ngOnInit() {\n    if (isTemplateRef(this.toast.message)) {\n      this.context = { $implicit: this.toastRef };\n    }\n    if (isComponent(this.toast.message)) {\n      this.toastComponentInjector = Injector.create({\n        providers: [\n          {\n            provide: HotToastRef,\n            useValue: this.toastRef,\n          },\n        ],\n        parent: this.toast.injector || this.injector,\n      });\n    }\n\n    const nativeElement = this.toastBarBase.nativeElement;\n    // Caretaker note: `animationstart` and `animationend` events are event tasks that trigger change detection.\n    // We'd want to trigger the change detection only if it's an exit animation.\n    this.ngZone.runOutsideAngular(() => {\n      this.unlisteners.push(\n        // Caretaker note: we have to remove these event listeners at the end (even if the element is removed from DOM).\n        // zone.js stores its `ZoneTask`s within the `nativeElement[Zone.__symbol__('animationstart') + 'false']` property\n        // with callback that capture `this`.\n        this.renderer.listen(nativeElement, 'animationstart', (event: AnimationEvent) => {\n          if (this.isExitAnimation(event)) {\n            this.ngZone.run(() => {\n              this.renderer.setStyle(nativeElement, 'pointer-events', 'none');\n              this.renderer.setStyle(nativeElement.parentElement, 'pointer-events', 'none');\n              this.beforeClosed.emit();\n            });\n          }\n        }),\n        this.renderer.listen(nativeElement, 'animationend', (event: AnimationEvent) => {\n          if (this.isEnterAnimation(event)) {\n            this.ngZone.run(() => {\n              if (this.toast.autoClose) {\n                const exitAnimation = `hotToastExitAnimation${\n                  this.top ? 'Negative' : 'Positive'\n                } ${EXIT_ANIMATION_DURATION}ms forwards cubic-bezier(0.06, 0.71, 0.55, 1) var(--hot-toast-exit-animation-delay) var(--hot-toast-exit-animation-state)`;\n                this.toastBarBaseStylesSignal.set({ ...this.toast.style, animation: exitAnimation });\n              }\n            });\n          }\n          if (this.isExitAnimation(event)) {\n            this.ngZone.run(() => this.afterClosed.emit({ dismissedByAction: this.isManualClose, id: this.toast.id }));\n          }\n        })\n      );\n    });\n  }\n\n  ngAfterViewInit() {\n    const nativeElement = this.toastBarBase.nativeElement;\n    // Caretaker note: accessing `offsetHeight` triggers the whole layout update.\n    // Macro tasks (like `setTimeout`) might be executed within the current rendering frame and cause a frame drop.\n    requestAnimationFrame(() => {\n      this.height.emit(nativeElement.offsetHeight);\n    });\n\n    this.setToastAttributes();\n  }\n\n  softClose() {\n    const exitAnimation = `hotToastExitSoftAnimation${\n      this.top ? 'Negative' : 'Positive'\n    } ${EXIT_ANIMATION_DURATION}ms forwards cubic-bezier(0.06, 0.71, 0.55, 1)`;\n\n    const nativeElement = this.toastBarBase.nativeElement;\n\n    animate(this.renderer, nativeElement, exitAnimation);\n    this.softClosed = true;\n\n    if (this.isExpanded) {\n      this.toggleToastGroup();\n    }\n  }\n\n  softOpen() {\n    const softEnterAnimation = `hotToastEnterSoftAnimation${\n      top ? 'Negative' : 'Positive'\n    } ${ENTER_ANIMATION_DURATION}ms cubic-bezier(0.21, 1.02, 0.73, 1) forwards`;\n\n    const nativeElement = this.toastBarBase.nativeElement;\n\n    animate(this.renderer, nativeElement, softEnterAnimation);\n    this.softClosed = false;\n  }\n\n  close() {\n    this.isManualClose = true;\n    this.cdr.markForCheck();\n\n    const exitAnimation = `hotToastExitAnimation${\n      this.top ? 'Negative' : 'Positive'\n    } ${EXIT_ANIMATION_DURATION}ms forwards cubic-bezier(0.06, 0.71, 0.55, 1)`;\n\n    this.toastBarBaseStylesSignal.set({ ...this.toast.style, animation: exitAnimation });\n  }\n\n  handleMouseEnter() {\n    this.showAllToasts.emit(true);\n  }\n  handleMouseLeave() {\n    this.showAllToasts.emit(false);\n  }\n\n  ngOnDestroy() {\n    this.close();\n    while (this.unlisteners.length) {\n      this.unlisteners.pop()();\n    }\n  }\n\n  private isExitAnimation(ev: AnimationEvent) {\n    return ev.animationName.includes('hotToastExitAnimation');\n  }\n\n  private isEnterAnimation(ev: AnimationEvent) {\n    return ev.animationName.includes('hotToastEnterAnimation');\n  }\n\n  private setToastAttributes() {\n    const toastAttributes: Record<string, string> = this.toast.attributes;\n    for (const [key, value] of Object.entries(toastAttributes)) {\n      this.renderer.setAttribute(this.toastBarBase.nativeElement, key, value);\n    }\n  }\n\n  calculateOffset(toastId: string) {\n    const visibleToasts = this.visibleToasts;\n    const index = visibleToasts.findIndex((toast) => toast.id === toastId);\n    const offset =\n      index !== -1\n        ? visibleToasts.slice(...(this.defaultConfig.reverseOrder ? [index + 1] : [0, index])).reduce((acc, t, i) => {\n            return this.defaultConfig.visibleToasts !== 0 && i < visibleToasts.length - this.defaultConfig.visibleToasts\n              ? 0\n              : acc + (t.height || 0);\n          }, 0)\n        : 0;\n    return offset;\n  }\n\n  updateHeight(height: number, toast: Toast<unknown>) {\n    toast.height = height;\n    this.cdr.markForCheck();\n  }\n\n  beforeClosedGroupItem(toast: Toast<unknown>) {\n    toast.visible = false;\n    this.cdr.markForCheck();\n    if (this.visibleToasts.length === 0 && this.isExpanded) {\n      this.toggleToastGroup();\n    } else {\n      this.emiHeightWithGroup(this.isExpanded);\n    }\n  }\n\n  afterClosedGroupItem(closeToast: HotToastClose) {\n    const toastIndex = this.groupChildrenToasts.findIndex((t) => t.id === closeToast.id);\n    if (toastIndex > -1) {\n      this.groupChildrenToastRefs = this.groupChildrenToastRefs.filter((t) => t.getToast().id !== closeToast.id);\n      this.cdr.markForCheck();\n    }\n  }\n\n  toggleToastGroup() {\n    const event = this.isExpanded ? 'collapse' : 'expand';\n    this.toggleGroup.emit({\n      byAction: true,\n      event,\n      id: this.toast.id,\n    });\n    this.emiHeightWithGroup(event === 'expand');\n  }\n\n  private emiHeightWithGroup(isExpanded: boolean) {\n    if (isExpanded) {\n      requestAnimationFrame(() => {\n        this.height.emit(this.toastBarBase.nativeElement.offsetHeight + this.groupHeight);\n      });\n    } else {\n      requestAnimationFrame(() => {\n        this.height.emit(this.toastBarBase.nativeElement.offsetHeight);\n      });\n    }\n  }\n}\n","<div\n  class=\"hot-toast-bar-base-container\"\n  [style]=\"containerPositionStyle\"\n  [class]=\"'hot-toast-theme-' + toast.theme\"\n  [style.--hot-toast-scale]=\"scale\"\n  [style.--hot-toast-translate-y]=\"translateY\"\n>\n  <div\n    class=\"hot-toast-bar-base-wrapper\"\n    [class.expanded]=\"isExpanded\"\n    (mouseenter)=\"handleMouseEnter()\"\n    (mouseleave)=\"handleMouseLeave()\"\n  >\n    <div\n      class=\"hot-toast-bar-base\"\n      #hotToastBarBase\n      [style]=\"toastBarBaseStylesSignal()\"\n      [class]=\"toast.className\"\n      [style.--hot-toast-animation-state]=\"isManualClose ? 'running' : 'paused'\"\n      [style.--hot-toast-exit-animation-state]=\"isShowingAllToasts ? 'paused' : 'running'\"\n      [style.--hot-toast-exit-animation-delay]=\"exitAnimationDelay\"\n      [attr.aria-live]=\"toast.ariaLive\"\n      [attr.role]=\"toast.role\"\n    >\n      <div class=\"hot-toast-icon\" aria-hidden=\"true\">\n        @if (toast.icon !== undefined) { @if (isIconString) {\n        <hot-toast-animated-icon [iconTheme]=\"toast.iconTheme\" [icon]=\"toast.icon\"></hot-toast-animated-icon>\n        } @else {\n        <div>\n          <ng-container *dynamicView=\"toast.icon\"></ng-container>\n        </div>\n        } } @else {\n        <hot-toast-indicator [theme]=\"toast.iconTheme\" [type]=\"toast.type\"></hot-toast-indicator>\n        }\n      </div>\n\n      <div class=\"hot-toast-message\">\n        <ng-container *dynamicView=\"toast.message; context: context; injector: toastComponentInjector\"></ng-container>\n      </div>\n\n      @if (toast.group?.expandAndCollapsible && toast.group?.children && visibleToasts.length > 0) {\n      <button\n        (click)=\"toggleToastGroup()\"\n        type=\"button\"\n        class=\"hot-toast-group-btn\"\n        [class.expanded]=\"isExpanded\"\n        [attr.aria-label]=\"isExpanded ? 'Collapse' : 'Expand'\"\n        [style]=\"toast.group.btnStyle\"\n      ></button>\n      } @if (toast.dismissible) {\n      <button\n        (click)=\"close()\"\n        type=\"button\"\n        class=\"hot-toast-close-btn\"\n        aria-label=\"Close\"\n        [style]=\"toast.closeStyle\"\n      ></button>\n      }\n    </div>\n\n    @if (toast.visible) {\n    <div\n      role=\"list\"\n      class=\"hot-toast-bar-base-group\"\n      [class]=\"toast.group?.className\"\n      [style.--hot-toast-group-height]=\"groupHeight + 'px'\"\n    >\n      @for (item of groupChildrenToasts; track item.id) {\n      <hot-toast-group-item\n        [toast]=\"item\"\n        [offset]=\"calculateOffset(item.id)\"\n        [toastRef]=\"toastRef.groupRefs[$index]\"\n        [toastsAfter]=\"(item.autoClose ? groupChildrenToasts.length : visibleToasts.length) - 1 - $index\"\n        [defaultConfig]=\"defaultConfig\"\n        [isShowingAllToasts]=\"isShowingAllToasts\"\n        (height)=\"updateHeight($event, item)\"\n        (beforeClosed)=\"beforeClosedGroupItem(item)\"\n        (afterClosed)=\"afterClosedGroupItem($event)\"\n      ></hot-toast-group-item>\n      }\n    </div>\n    }\n  </div>\n</div>\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  inject,\n  Input,\n  QueryList,\n  ViewChildren,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport {\n  HotToastClose,\n  Toast,\n  ToastConfig,\n  ToastPosition,\n  UpdateToastOptions,\n  AddToastRef,\n  CreateHotToastRef,\n  HotToastGroupEvent,\n} from '../../hot-toast.model';\nimport { HotToastRef } from '../../hot-toast-ref';\nimport { filter, map } from 'rxjs/operators';\nimport { Content } from '@ngneat/overview';\nimport { HotToastComponent } from '../hot-toast/hot-toast.component';\nimport { HOT_TOAST_DEPTH_SCALE, HOT_TOAST_DEPTH_SCALE_ADD, HOT_TOAST_MARGIN } from '../../constants';\nimport { HotToastService } from '../../hot-toast.service';\nimport { NgStyle } from '@angular/common';\n\n@Component({\n    selector: 'hot-toast-container',\n    templateUrl: './hot-toast-container.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [HotToastComponent, NgStyle]\n})\nexport class HotToastContainerComponent {\n  @Input() defaultConfig: ToastConfig;\n\n  @ViewChildren(HotToastComponent) hotToastComponentList: QueryList<HotToastComponent>;\n\n  toasts: Toast<unknown>[] = [];\n  toastRefs: CreateHotToastRef<unknown>[] = [];\n  isShowingAllToasts = false;\n\n  /** Subject for notifying the user that the toast has been closed. */\n  private _onClosed = new Subject<HotToastClose>();\n\n  /** Subject for notifying the user that the toast has been expanded or collapsed. */\n  private _onGroupToggle = new Subject<HotToastGroupEvent>();\n\n  /** Subject for notifying the user that the group refs have been attached to toast. */\n  private _onGroupRefAttached = new Subject<{ groupRefs: CreateHotToastRef<unknown>[]; id: string }>();\n\n  private onClosed$ = this._onClosed.asObservable();\n  private onGroupToggle$ = this._onGroupToggle.asObservable();\n  private onGroupRefAttached$ = this._onGroupRefAttached.asObservable();\n\n  private cdr = inject(ChangeDetectorRef);\n  private toastService = inject(HotToastService);\n\n  trackById(index: number, toast: Toast<unknown>) {\n    return toast.id;\n  }\n\n  getVisibleToasts(position: ToastPosition) {\n    return this.unGroupedToasts.filter((t) => t.visible && t.position === position);\n  }\n\n  get unGroupedToasts() {\n    return this.toasts.filter(\n      (t) => t.group?.parent === undefined || t.group?.children === undefined || t.group?.children.length === 0\n    );\n  }\n\n  calculateOffset(toastId: string, position: ToastPosition) {\n    const visibleToasts = this.getVisibleToasts(position);\n    const index = visibleToasts.findIndex((toast) => toast.id === toastId);\n    const offset =\n      index !== -1\n        ? visibleToasts.slice(...(this.defaultConfig.reverseOrder ? [index + 1] : [0, index])).reduce((acc, t, i) => {\n            const toastsAfter = visibleToasts.length - 1 - i;\n            return this.defaultConfig.visibleToasts !== 0 && i < visibleToasts.length - this.defaultConfig.visibleToasts\n              ? 0\n              : acc +\n                  (this.defaultConfig.stacking === 'vertical' || this.isShowingAllToasts\n                    ? t.height || 0\n                    : toastsAfter * HOT_TOAST_DEPTH_SCALE + HOT_TOAST_DEPTH_SCALE_ADD) +\n                  HOT_TOAST_MARGIN;\n          }, 0)\n        : 0;\n    return offset;\n  }\n\n  updateHeight(height: number, toast: Toast<unknown>) {\n    toast.height = height;\n    this.cdr.markForCheck();\n  }\n\n  addToast<DataType>(ref: HotToastRef<DataType>, skipAttachToParent?: boolean): AddToastRef<DataType> {\n    this.toastRefs.push(ref);\n\n    const toast = ref.getToast();\n\n    this.toasts.push(ref.getToast());\n\n    if (this.defaultConfig.visibleToasts !== 0 && this.unGroupedToasts.length > this.defaultConfig.visibleToasts) {\n      const closeToasts = this.toasts.slice(0, this.toasts.length - this.defaultConfig.visibleToasts);\n      closeToasts.forEach((t) => {\n        if (t.autoClose) {\n          this.closeToast(t.id);\n        }\n      });\n    }\n\n    this.cdr.markForCheck();\n\n    this.attachGroupRefs<DataType>(toast, ref, skipAttachToParent);\n\n    return {\n      dispose: () => {\n        this.closeToast(toast.id);\n      },\n      updateMessage: (message: Content) => {\n        toast.message = message;\n        this.updateToasts(toast);\n        this.cdr.markForCheck();\n      },\n      updateToast: (options: UpdateToastOptions<DataType>) => {\n        this.updateToasts(toast, options);\n        this.cdr.markForCheck();\n      },\n      afterClosed: this.getAfterClosed(toast),\n      afterGroupToggled: this.getAfterGroupToggled(toast),\n      afterGroupRefsAttached: this.getAfterGroupRefsAttached(toast).pipe(map((v) => v.groupRefs)),\n    };\n  }\n\n  private async attachGroupRefs<DataType>(\n    toast: Toast<DataType>,\n    ref: HotToastRef<DataType>,\n    skipAttachToParent?: boolean\n  ) {\n    let groupRefs: CreateHotToastRef<unknown>[] = [];\n\n    if (toast.group) {\n      if (toast.group.children) {\n        groupRefs = await this.createGroupRefs(toast, ref);\n        const toastIndex = this.toastRefs.findIndex((t) => t.getToast().id === toast.id);\n\n        if (toastIndex > -1) {\n          (this.toastRefs[toastIndex] as { groupRefs: CreateHotToastRef<unknown>[] }).groupRefs = groupRefs;\n\n          this.cdr.markForCheck();\n          this._onGroupRefAttached.next({ groupRefs, id: toast.id });\n        }\n      } else if (toast.group.parent && !skipAttachToParent) {\n        const parentToastRef = toast.group.parent;\n        const parentToast = parentToastRef.getToast();\n\n        const parentToastRefIndex = this.toastRefs.findIndex((t) => t.getToast().id === parentToast.id);\n        const parentToastIndex = this.toasts.findIndex((t) => t.id === parentToast.id);\n\n        if (parentToastRefIndex > -1 && parentToastIndex > -1) {\n          this.toastRefs[parentToastRefIndex].groupRefs.push(ref);\n\n          const existingGroup = this.toasts[parentToastRefIndex].group ?? {};\n          const existingChildren = this.toasts[parentToastRefIndex].group?.children ?? [];\n\n          existingChildren.push({ options: { ...toast, type: toast.type, message: toast.message } });\n          existingGroup.children = existingChildren;\n\n          this.toasts[parentToastRefIndex].group = { ...existingGroup };\n\n          this.cdr.markForCheck();\n\n          this._onGroupRefAttached.next({ groupRefs, id: parentToast.id });\n        }\n      }\n    }\n  }\n\n  private createGroupRefs<DataType>(toast: Toast<DataType>, ref: HotToastRef<DataType>) {\n    const skipAttachToParent = true;\n    return new Promise<CreateHotToastRef<unknown>[]>((resolve) => {\n      const items = toast.group.children;\n      const allPromises: Promise<CreateHotToastRef<unknown>>[] = items.map((item) => {\n        return new Promise((innerResolve) => {\n          item.options.group = { parent: ref };\n          // We need to give a tick's delay so that IDs are generated properly\n          setTimeout(() => {\n            try {\n              const itemRef = this.toastService.show(item.options.message, item.options, skipAttachToParent);\n              innerResolve(itemRef);\n            } catch (error) {\n              console.error('Error creating toast', error);\n              innerResolve(null);\n            }\n          });\n        });\n      });\n      Promise.all(allPromises).then((refs) => resolve(refs));\n    });\n  }\n\n  closeToast(id?: string) {\n    if (id) {\n      const comp = this.hotToastComponentList.find((item) => item.toast.id === id);\n      if (comp) {\n        comp.close();\n        this.cdr.markForCheck();\n      }\n    } else {\n      this.hotToastComponentList.forEach((comp) => comp.close());\n      this.cdr.markForCheck();\n    }\n  }\n\n  beforeClosed(toast: Toast<unknown>) {\n    toast.visible = false;\n    this.cdr.markForCheck();\n  }\n\n  afterClosed(closeToast: HotToastClose) {\n    const toastIndex = this.toasts.findIndex((t) => t.id === closeToast.id);\n    if (toastIndex > -1) {\n      this._onClosed.next(closeToast);\n      this.toasts = this.toasts.filter((t) => t.id !== closeToast.id);\n      this.toastRefs = this.toastRefs.filter((t) => t.getToast().id !== closeToast.id);\n      this.cdr.markForCheck();\n    }\n  }\n\n  toggleGroup(groupEvent: HotToastGroupEvent) {\n    const toastIndex = this.toastRefs.findIndex((t) => t.getToast().id === groupEvent.id);\n    if (toastIndex > -1) {\n      this._onGroupToggle.next(groupEvent);\n      (this.toastRefs[toastIndex] as { groupExpanded: boolean }).groupExpanded = groupEvent.event === 'expand';\n      this.cdr.markForCheck();\n    }\n  }\n\n  hasToast(id: string) {\n    return this.toasts.findIndex((t) => t.id === id) > -1;\n  }\n\n  showAllToasts(show: boolean) {\n    this.isShowingAllToasts = show;\n  }\n\n  private getAfterClosed(toast: Toast<unknown>) {\n    return this.onClosed$.pipe(filter((v) => v.id === toast.id));\n  }\n\n  private getAfterGroupToggled(toast: Toast<unknown>) {\n    return this.onGroupToggle$.pipe(filter((v) => v.id === toast.id));\n  }\n\n  private getAfterGroupRefsAttached(toast: Toast<unknown>) {\n    return this.onGroupRefAttached$.pipe(filter((v) => v.id === toast.id));\n  }\n\n  private updateToasts(toast: Toast<unknown>, options?: UpdateToastOptions<unknown>) {\n    this.toasts = this.toasts.map((t) => ({ ...t, ...(t.id === toast.id && { ...toast, ...options }) }));\n    this.cdr.markForCheck();\n  }\n}\n","<div [ngStyle]=\"{position: 'fixed', zIndex: 9999, top: 0, right: 0, bottom: 0, left: 0, pointerEvents: 'none'}\">\n  <div [ngStyle]=\"{position: 'relative', height: '100%'}\">\n    <div>\n      @for (toast of toasts; track trackById(i, toast); let i = $index) { @if (toast.group?.parent) {} @else {\n      <hot-toast\n        [toast]=\"toast\"\n        [offset]=\"calculateOffset(toast.id, toast.position)\"\n        [toastRef]=\"toastRefs[i]\"\n        [toastsAfter]=\"(toast.autoClose ? toasts.length : getVisibleToasts(toast.position).length) - 1 - i\"\n        [defaultConfig]=\"defaultConfig\"\n        [isShowingAllToasts]=\"isShowingAllToasts\"\n        (showAllToasts)=\"showAllToasts($event)\"\n        (height)=\"updateHeight($event, toast)\"\n        (beforeClosed)=\"beforeClosed(toast)\"\n        (afterClosed)=\"afterClosed($event)\"\n        (toggleGroup)=\"toggleGroup($event)\"\n      ></hot-toast>\n      } }\n    </div>\n  </div>\n</div>\n","import { Injector } from '@angular/core';\nimport { Content } from '@ngneat/overview';\nimport { Observable } from 'rxjs';\n\nexport type ToastStacking = 'vertical' | 'depth';\n\nexport class ToastConfig implements DefaultToastOptions {\n  /**\n   * Sets the reverse order for hot-toast stacking\n   *\n   * @default false\n   */\n  reverseOrder = false;\n\n  /**\n   * Sets the number of toasts visible.\n   * 0 will set no limit.\n   * @default 5\n   * @since 6.1.0\n   */\n  visibleToasts = 5;\n\n  /**\n   * Sets the type of stacking\n   * @default \"vertical\"\n   * @since 6.1.0\n   */\n  stacking: ToastStacking = 'vertical';\n\n  ariaLive: ToastAriaLive = 'polite';\n  role: ToastRole = 'status';\n  position: ToastPosition = 'top-center';\n  className: string;\n  closeStyle: Record<string, string>;\n  dismissible: boolean;\n  autoClose = true;\n  duration: number;\n  icon: Content;\n  iconTheme: IconTheme;\n  style: Record<string, string>;\n  theme: ToastTheme = 'toast';\n  attributes: Record<string, string> = {};\n\n  // key in ToastType\n  info: ToastOptions<unknown> & { content?: Content } = { content: '' };\n  success: ToastOptions<unknown> & { content?: Content } = { content: '' };\n  error: ToastOptions<unknown> & { content?: Content } = { content: '' };\n  loading: ToastOptions<unknown> & { content?: Content } = { content: '' };\n  blank: ToastOptions<unknown> & { content?: Content } = { content: '' };\n  warning: ToastOptions<unknown> & { content?: Content } = { content: '' };\n}\n\nexport type ToastType = 'success' | 'error' | 'loading' | 'blank' | 'warning' | 'info';\nexport type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';\n\nexport type IconTheme = {\n  primary: string;\n  secondary?: string;\n};\n\nexport type ToastTheme = 'toast' | 'snackbar';\n\nexport type ValueFunction<TValue, TArg> = (arg: TArg) => TValue;\nexport type ValueOrFunction<TValue, TArg> = TValue | ValueFunction<TValue, TArg>;\n\nconst isFunction = <TValue, TArg>(\n  valOrFunction: ValueOrFunction<TValue, TArg>\n): valOrFunction is ValueFunction<TValue, TArg> => typeof valOrFunction === 'function';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isAngularComponent = (arg: any): boolean => {\n  // `ɵcmp` is a component definition set by the Angular compiler.\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return typeof arg === 'function' && !!(arg as any).ɵcmp;\n};\n\nexport const resolveValueOrFunction = <TValue, TArg>(valOrFunction: ValueOrFunction<TValue, TArg>, arg: TArg): TValue =>\n  isAngularComponent(valOrFunction)\n    ? (valOrFunction as TValue)\n    : isFunction(valOrFunction)\n    ? valOrFunction(arg)\n    : valOrFunction;\n\nexport type ToastRole = 'status' | 'alert';\n\nexport type ToastAriaLive = 'assertive' | 'off' | 'polite';\n\nexport interface HotToastGroupChild {\n  options: ToastOptions<unknown> & {\n    type?: ToastType;\n    message: Content;\n  };\n}\n\nexport interface Toast<DataType> {\n  type: ToastType;\n\n  /**\n   * Unique id to associate with hot-toast.\n   * There can't be multiple hot-toasts opened with same id.\n   *\n   * @default HotToastService.nextId\n   */\n  id: string;\n\n  /** The message to show in the hot-toast. */\n  message: Content | undefined;\n\n  /**\n   * Role of the live region.\n   *\n   * @default status\n   */\n  role: ToastRole;\n\n  /** aria-live value for the live region.\n   *\n   * @default polite\n   */\n  ariaLive: ToastAriaLive;\n\n  /**Icon to show in the hot-toast */\n  icon?: Content;\n\n  /**\n   * Duration in milliseconds after which hot-toast will be auto closed.\n   * Can be disabled via `autoClose: false`\n   *\n   * @default 3000 | error = 4000 | loading = 30000\n   */\n  duration?: number;\n\n  /**\n   * Show close button in hot-toast\n   *\n   * @default false\n   */\n  dismissible?: boolean;\n\n  /**\n   * Auto close hot-toast after duration\n   *\n   * @default true\n   */\n  autoClose?: boolean;\n\n  /**Extra styles to apply for hot-toast */\n  style?: Record<string, string>;\n\n  /**Extra CSS classes to be added to the hot toast container. */\n  className?: string;\n\n  /**Extra attribute to be added to the hot toast container. */\n  attributes?: Record<string, string>;\n\n  /**Use this to change icon color */\n  iconTheme?: IconTheme;\n\n  /**\n   * Visual appearance of hot-toast\n   *\n   * @default toast\n   */\n  theme?: ToastTheme;\n\n  /**\n   * The position to place the hot-toast.\n   *\n   *  @default top-center\n   */\n  position?: ToastPosition;\n\n  /**Extra styles to apply for close button */\n  closeStyle?: Record<string, string>;\n\n  createdAt: number;\n  visible: boolean;\n  height?: number;\n\n  observableMessages?: ObservableMessages<unknown, DataType>;\n\n  /**\n   * Useful when you want to keep a persistance for toast based on ids, across sessions.\n   *\n   * @example\n   * // Lets say you want show hot-toast, with a particular id,\n   * // max 3 times to a user irrespective of browser session.\n   * // In this case you will set this as:\n   * { enabled: true, count: 3 }\n   *\n   * @type {ToastPersistConfig}\n   */\n  persist?: ToastPersistConfig;\n\n  /**\n   * Allows you to pass injector for your component\n   *\n   * @since 1.1.0\n   * @type {Injector}\n   * @memberof Toast\n   */\n  injector?: Injector;\n\n  /**\n   * Allows you to pass data for your component/template\n   *\n   * @type {DataType}\n   * @memberof Toast\n   */\n  data?: DataType;\n\n  /**\n   * Allows you to set group options\n   * @since 1.1.0\n   */\n  group?: {\n    /**\n     * Show group expand/collapse button in hot-toast\n     *\n     * @default false\n     */\n    expandAndCollapsible?: boolean;\n\n    /**Extra styles to apply for expand/collapse button */\n    btnStyle?: Record<string, string>;\n\n    /**Extra CSS classes to be added to the hot toast container. */\n    className?: string;\n\n    /**\n     * Child items to render as grouped\n     */\n    children?: HotToastGroupChild[];\n\n    /**\n     * Parent toast ref to be passed with newly created toast,\n     * and if it needs to grouped under an existing toast\n     */\n    parent?: CreateHotToastRef<unknown>;\n  };\n}\n\nexport type ToastOptions<DataType> = Partial<\n  Pick<\n    Toast<DataType>,\n    | 'id'\n    | 'icon'\n    | 'duration'\n    | 'dismissible'\n    | 'autoClose'\n    | 'role'\n    | 'ariaLive'\n    | 'className'\n    | 'style'\n    | 'iconTheme'\n    | 'theme'\n    | 'position'\n    | 'closeStyle'\n    | 'persist'\n    | 'injector'\n    | 'data'\n    | 'attributes'\n    | 'group'\n  >\n>;\n\nexport type DefaultToastOptions = ToastOptions<unknown> & {\n  [key in ToastType]?: ToastOptions<unknown> & { content?: Content };\n};\n\nexport type ObservableLoading<DataType> = {\n  content: Content;\n} & ToastOptions<DataType>;\n\nexport type ObservableSuccessOrError<T, DataType> = {\n  content: ValueOrFunction<Content, T>;\n} & ToastOptions<DataType>;\n\nexport type ObservableMessages<T, DataType> = {\n  loading?: Content | ObservableLoading<DataType>;\n  success?: ValueOrFunction<Content, T> | ObservableSuccessOrError<T, DataType>;\n  error?: ValueOrFunction<Content, unknown> | ObservableSuccessOrError<unknown, DataType>;\n};\n\nexport interface HotToastServiceMethods {\n  show<DataType>(message?: Content, options?: ToastOptions<DataType>): CreateHotToastRef<DataType | unknown>;\n  error<DataType>(message?: Content, options?: ToastOptions<DataType>): CreateHotToastRef<DataType | unknown>;\n  success<DataType>(message?: Content, options?: ToastOptions<DataType>): CreateHotToastRef<DataType | unknown>;\n  loading<DataType>(message?: Content, options?: ToastOptions<DataType>): CreateHotToastRef<DataType | unknown>;\n  warning<DataType>(message?: Content, options?: ToastOptions<DataType>): CreateHotToastRef<DataType | unknown>;\n  observe<T, DataType>(messages: ObservableMessages<T, DataType>): (source: Observable<T>) => Observable<T>;\n  close(id?: string): void;\n}\n\nexport type UpdateToastOptions<DataType> = Partial<\n  Pick<\n    Toast<DataType>,\n    'icon' | 'duration' | 'dismissible' | 'className' | 'style' | 'iconTheme' | 'type' | 'theme' | 'closeStyle'\n  >\n>;\n\nexport interface HotToastRefProps<DataType> {\n  /** Returns all the toast options */\n  getToast: () => Toast<DataType>;\n  dispose: () => void;\n  /**Updates only message */\n  updateMessage: (message: Content) => void;\n  /**Update updatable options of toast */\n  updateToast: (options: UpdateToastOptions<DataType>) => void;\n  /** Observable for notifying the user that the toast has been closed. */\n  afterClosed: Observable<HotToastClose>;\n\n  /** Observable for notifying the user that the group has been toggled. */\n  afterGroupToggled: Observable<HotToastGroupEvent>;\n\n  /** Observable for notifying the user that all the toastRefs for groups has been attached. */\n  afterGroupRefsAttached: Observable<CreateHotToastRef<unknown>[]>;\n\n  /**Closes the toast */\n  close: (closeData?: { dismissedByAction: boolean }) => void;\n\n  data: DataType;\n\n  /**\n   * List of group toast refs\n   * @since 1.1.0\n   */\n  readonly groupRefs: CreateHotToastRef<unknown>[];\n\n  /**\n   * Whether group panel is expanded\n   * @since 1.1.0\n   */\n  readonly groupExpanded: boolean;\n\n  /**\n   * Expand or collapse group\n   * @since 1.1.0\n   */\n  toggleGroup: (eventData?: { byAction: boolean }) => void;\n  show: () => void;\n}\n\n/** Event that is emitted when a toast is dismissed. */\nexport interface HotToastClose {\n  /** Whether the toast was dismissed using the action button. */\n  dismissedByAction: boolean;\n  id: string;\n}\n\n/** Event that is emitted when a toast is expanded or collapsed. */\nexport interface HotToastGroupEvent {\n  /** Whether the toast was expanded or collapsed using the action button. */\n  byAction: boolean;\n  id: string;\n  event: 'collapse' | 'expand';\n}\n\nexport class ToastPersistConfig {\n  /**\n   *In which storage id vs. counts should be stored\n   *\n   * @type {('local' | 'session')}\n   * @memberof ToastPersistConfig\n   * @default 'local'\n   */\n  storage?: 'local' | 'session' = 'local';\n\n  /**\n   *The key pattern to store object in storage. `${id}` in pattern is replaced with actual toast id.\n   *\n   * @type {('local' | 'session')}\n   * @memberof ToastPersistConfig\n   * @default 'ngxpert/hottoast-${id}'\n   */\n  key?: string = 'ngxpert/hototast-${id}';\n\n  /**\n   *The number of toasts allowed to show.\n   *\n   * @memberof ToastPersistConfig\n   * @default 1\n   */\n  count? = 1;\n\n  enabled = false;\n}\n\nexport type AddToastRef<DataType> = Pick<\n  HotToastRefProps<DataType>,\n  'afterClosed' | 'dispose' | 'updateMessage' | 'updateToast' | 'afterGroupToggled' | 'afterGroupRefsAttached'\n>;\n\nexport type CreateHotToastRef<DataType> = Omit<Omit<HotToastRefProps<DataType>, 'appendTo'>, 'dispose'>;\n\nexport type DefaultDataType = Record<string, unknown>;\n","import { isPlatformServer } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { CompRef, Content, isComponent, isTemplateRef, ViewService } from '@ngneat/overview';\nimport { defer, Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { HotToastContainerComponent } from './components/hot-toast-container/hot-toast-container.component';\nimport { HOT_TOAST_DEFAULT_TIMEOUTS } from './constants';\nimport { HotToastRef } from './hot-toast-ref';\nimport {\n  CreateHotToastRef,\n  DefaultToastOptions,\n  HotToastServiceMethods,\n  ObservableLoading,\n  ObservableMessages,\n  ObservableSuccessOrError,\n  resolveValueOrFunction,\n  Toast,\n  ToastConfig,\n  ToastOptions,\n  ToastPersistConfig,\n  ToastType,\n  UpdateToastOptions,\n  ValueOrFunction,\n} from './hot-toast.model';\n\n@Injectable({ providedIn: 'root' })\nexport class HotToastService implements HotToastServiceMethods {\n  static nextId = 0;\n  private _isInitialized = false;\n  private _componentRef: CompRef<HotToastContainerComponent>;\n\n  private _defaultGlobalConfig = new ToastConfig();\n  private _defaultPersistConfig = new ToastPersistConfig();\n\n  private _viewService = inject(ViewService);\n  private _platformId = inject(PLATFORM_ID);\n  private _globalConfig = inject(ToastConfig, { optional: true });\n\n  constructor() {\n    if (this._globalConfig) {\n      this._defaultGlobalConfig = {\n        ...this._defaultGlobalConfig,\n        ...this._globalConfig,\n      };\n    }\n  }\n\n  get defaultConfig() {\n    return this._defaultGlobalConfig;\n  }\n  set defaultConfig(config: ToastConfig) {\n    this._defaultGlobalConfig = {\n      ...this._defaultGlobalConfig,\n      ...config,\n    };\n    if (this._componentRef) {\n      this._componentRef.setInput('defaultConfig', this._defaultGlobalConfig);\n    }\n  }\n\n  /**\n   * Opens up an hot-toast without any pre-configurations\n   *\n   * @param message The message to show in the hot-toast.\n   * @param [options] Additional configuration options for the hot-toast.\n   * @param skipAttachToParent Only for internal usage. Setting this to true will not attach toast to it's parent.\n   * @returns\n   * @memberof HotToastService\n   */\n  show<DataType>(\n    message?: Content,\n    options?: ToastOptions<DataType>,\n    skipAttachToParent?: boolean\n  ): CreateHotToastRef<DataType | unknown> {\n    const toast = this.createToast<DataType>({\n      message: message || this._defaultGlobalConfig.blank.content,\n      type: (options as { type: ToastType })?.type ?? 'blank',\n      options: {\n        ...this._defaultGlobalConfig,\n        ...options,\n      },\n      skipAttachToParent,\n    });\n\n    return toast;\n  }\n\n  /**\n   * Opens up an hot-toast with pre-configurations for error state\n   *\n   * @param message The message to show in the hot-toast.\n   * @param [options] Additional configuration options for the hot-toast.\n   * @returns\n   * @memberof HotToastService\n   */\n  error<DataType>(message?: Content, options?: ToastOptions<DataType>): CreateHotToastRef<DataType | unknown> {\n    const toast = this.createToast<DataType>({\n      message: message || this._defaultGlobalConfig.error.content,\n      type: 'error',\n      options: {\n        ...this._defaultGlobalConfig,\n        ...this._defaultGlobalConfig?.error,\n        ...options,\n      },\n    });\n\n    return toast;\n  }\n\n  /**\n   * Opens up an hot-toast with pre-configurations for success state\n   *\n   * @param message The message to show in the hot-toast.\n   * @param [options] Additional configuration options for the hot-toast.\n   * @returns\n   * @memberof HotToastService\n   */\n  success<DataType>(message?: Content, options?: ToastOptions<DataType>): CreateHotToastRef<DataType | unknown> {\n    const toast = this.createToast<DataType>({\n      message: message || this._defaultGlobalConfig.success.content,\n      type: 'success',\n      options: {\n        ...this._defaultGlobalConfig,\n        ...this._defaultGlobalConfig?.success,\n        ...options,\n      },\n    });\n\n    return toast;\n  }\n\n  /**\n   * Opens up an hot-toast with pre-configurations for loading state\n   *\n   * @param message The message to show in the hot-toast.\n   * @param [options] Additional configuration options for the hot-toast.\n   * @returns\n   * @memberof HotToastService\n   */\n  loading<DataType>(message?: Content, options?: ToastOptions<DataType>): CreateHotToastRef<DataType | unknown> {\n    const toast = this.createToast<DataType>({\n      message: message || this._defaultGlobalConfig.loading.content,\n      type: 'loading',\n      options: {\n        ...this._defaultGlobalConfig,\n        ...this._defaultGlobalConfig?.loading,\n        ...options,\n      },\n    });\n\n    return toast;\n  }\n\n  /**\n   * Opens up an hot-toast with pre-configurations for warning state\n   *\n   * @param message The message to show in the hot-toast.\n   * @param [options] Additional configuration options for the hot-toast.\n   * @returns\n   * @memberof HotToastService\n   */\n  warning<DataType>(message?: Content, options?: ToastOptions<DataType>): CreateHotToastRef<DataType | unknown> {\n    const toast = this.createToast<DataType>({\n      message: message || this._defaultGlobalConfig.warning.content,\n      type: 'warning',\n      options: {\n        ...this._defaultGlobalConfig,\n        ...this._defaultGlobalConfig?.warning,\n        ...options,\n      },\n    });\n\n    return toast;\n  }\n\n  /**\n   * Opens up an hot-toast with pre-configurations for info state\n   *\n   * @param message The message to show in the hot-toast.\n   * @param [options] Additional configuration options for the hot-toast.\n   * @returns\n   * @memberof HotToastService\n   * @since 3.3.0\n   */\n  info<DataType>(message?: Content, options?: ToastOptions<DataType>): CreateHotToastRef<DataType | unknown> {\n    const toast = this.createToast<DataType>({\n      message: message || this._defaultGlobalConfig.info.content,\n      type: 'info',\n      options: {\n        ...this._defaultGlobalConfig,\n        ...this._defaultGlobalConfig?.info,\n        ...options,\n      },\n    });\n\n    return toast;\n  }\n\n  /**\n   *\n   *  Opens up an hot-toast with pre-configurations for loading initially and then changes state based on messages\n   *\n   * @template T Type of observable\n   * @param messages Messages for each state i.e. loading, success and error\n   * @returns\n   * @memberof HotToastService\n   */\n  observe<T = unknown, DataType = unknown>(\n    messages: ObservableMessages<T, DataType>\n  ): (source: Observable<T>) => Observable<T> {\n    return (source) => {\n      let toastRef: CreateHotToastRef<DataType | unknown>;\n      let start = 0;\n\n      const loadingContent = messages.loading ?? this._defaultGlobalConfig.loading?.content;\n      const successContent = messages.success ?? this._defaultGlobalConfig.success?.content;\n      const errorContent = messages.error ?? this._defaultGlobalConfig.error?.content;\n\n      return defer(() => {\n        if (loadingContent) {\n          toastRef = this.createLoadingToast<T, DataType>(loadingContent);\n          start = Date.now();\n        }\n        return source.pipe(\n          tap({\n            ...(successContent && {\n              next: (val) => {\n                toastRef = this.createOrUpdateToast<T, DataType | unknown>(\n                  messages,\n                  val,\n                  toastRef,\n                  'success',\n                  start === 0 ? start : Date.now() - start\n                );\n              },\n            }),\n            ...(errorContent && {\n              error: (e) => {\n                toastRef = this.createOrUpdateToast<T, DataType | unknown>(\n                  messages,\n                  e,\n                  toastRef,\n                  'error',\n                  start === 0 ? start : Date.now() - start\n                );\n              },\n            }),\n          })\n        );\n      });\n    };\n  }\n\n  /**\n   * Closes the hot-toast\n   *\n   * @param [id] - ID of the toast\n   * @since 3.0.1 - If ID is not provided, all toasts will be closed\n   */\n  close(id?: string) {\n    if (this._componentRef) {\n      this._componentRef.ref.instance.closeToast(id);\n    }\n  }\n\n  /**\n   * Used for internal purpose only.\n   * Creates a container component and attaches it to document.body.\n   */\n  private init() {\n    if (isPlatformServer(this._platformId)) {\n      return;\n    }\n    this._componentRef = this._viewService\n      .createComponent(HotToastContainerComponent)\n      .setInput('defaultConfig', this._defaultGlobalConfig)\n      .appendTo(document.body);\n  }\n\n  private createOrUpdateToast<T, DataType>(\n    messages: ObservableMessages<T, DataType>,\n    val: unknown,\n    toastRef: CreateHotToastRef<DataType>,\n    type: ToastType,\n    diff: number\n  ) {\n    try {\n      let content: Content | ValueOrFunction<Content, T> = null;\n      let options: ToastOptions<DataType | unknown> = {};\n      ({ content, options } = this.getContentAndOptions<unknown, DataType>(\n        type,\n        messages[type] || (this._defaultGlobalConfig[type] ? this._defaultGlobalConfig[type].content : '')\n      ));\n      content = resolveValueOrFunction(content, val);\n      if (toastRef) {\n        if (options.data) {\n          toastRef.data = options.data as DataType;\n        }\n        toastRef.updateMessage(content);\n        const updatedOptions: UpdateToastOptions<DataType> = {\n          type,\n          duration: diff + HOT_TOAST_DEFAULT_TIMEOUTS[type],\n          ...options,\n          ...(options.duration && { duration: diff + options.duration }),\n        };\n        toastRef.updateToast(updatedOptions);\n      } else {\n        this.createToast<DataType, T>({ message: content, type, options });\n      }\n      return toastRef;\n    } catch (error) {\n      console.error(error);\n    }\n  }\n\n  private createToast<DataType, T = unknown>({\n    message,\n    type,\n    options,\n    observableMessages,\n    skipAttachToParent,\n  }: {\n    message: Content;\n    type: ToastType;\n    options?: DefaultToastOptions;\n    observableMessages?: ObservableMessages<T, DataType>;\n    skipAttachToParent?: boolean;\n  }): CreateHotToastRef<DataType | unknown> {\n    if (!this._isInitialized) {\n      this._isInitialized = true;\n      this.init();\n    }\n\n    const id = options?.id ?? `toast-${HotToastService.nextId++}`;\n\n    if (\n      !this.isDuplicate(id) &&\n      (!options.persist?.enabled || (options.persist?.enabled && this.handleStorageValue(id, options)))\n    ) {\n      const toast: Toast<DataType | unknown> = {\n        ariaLive: options?.ariaLive ?? 'polite',\n        createdAt: Date.now(),\n        duration: options?.duration ?? HOT_TOAST_DEFAULT_TIMEOUTS[type],\n        id,\n        message,\n        role: options?.role ?? 'status',\n        type,\n        visible: true,\n        observableMessages: observableMessages ?? undefined,\n        ...options,\n      };\n\n      return new HotToastRef<DataType | unknown>(toast).appendTo(this._componentRef.ref.instance, skipAttachToParent);\n    }\n  }\n\n  /**\n   * Checks whether any toast with same id is present.\n   *\n   * @private\n   * @param id - Toast ID\n   */\n  private isDuplicate(id: string) {\n    return this._componentRef.ref.instance.hasToast(id);\n  }\n\n  /**\n   * Creates an entry in local or session storage with count ${defaultConfig.persist.count}, if not present.\n   * If present in storage, reduces the count\n   * and returns the count.\n   * Count can not be less than 0.\n   */\n  private handleStorageValue(id: string, options: DefaultToastOptions): number {\n    let count = 1;\n    const persist = { ...this._defaultPersistConfig, ...options.persist };\n    const storage: Storage = persist.storage === 'local' ? localStorage : sessionStorage;\n    const key = persist.key.replace(/\\${id}/g, id);\n\n    let item: string | number = storage.getItem(key);\n\n    if (item) {\n      item = parseInt(item, 10);\n      if (item > 0) {\n        count = item - 1;\n      } else {\n        count = item;\n      }\n    } else {\n      count = persist.count;\n    }\n\n    storage.setItem(key, count.toString());\n\n    return count;\n  }\n\n  private getContentAndOptions<T, DataType>(\n    toastType: ToastType,\n    message: Content | ValueOrFunction<Content, T> | ObservableLoading<DataType> | ObservableSuccessOrError<T, DataType>\n  ): { options: ToastOptions<DataType | unknown>; content: Content | ValueOrFunction<Content, T> } {\n    let content: Content | ValueOrFunction<Content, T>;\n    let options: ToastOptions<DataType | unknown> = {\n      ...this._defaultGlobalConfig,\n      ...this._defaultGlobalConfig[toastType],\n    };\n\n    // typeof message === 'object' won't work, cz TemplateRef's type is object\n    if (typeof message === 'string' || isTemplateRef(message) || isComponent(message)) {\n      content = message;\n    } else {\n      let restOptions: ToastOptions<DataType>;\n      ({ content, ...restOptions } = message as ObservableLoading<DataType> | ObservableSuccessOrError<T, DataType>);\n      options = { ...options, ...restOptions };\n    }\n\n    return { content, options };\n  }\n\n  private createLoadingToast<T, DataType>(messages: Content | ObservableLoading<DataType>) {\n    let content: Content | ValueOrFunction<Content, T> = null;\n    let options: ToastOptions<DataType | unknown> = {};\n\n    ({ content, options } = this.getContentAndOptions<unknown, DataType>('loading', messages));\n\n    return this.loading(content as Content, options);\n  }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport { ToastConfig } from './hot-toast.model';\n\nexport function provideHotToastConfig(config?: Partial<ToastConfig>): EnvironmentProviders {\n  return makeEnvironmentProviders([{ provide: ToastConfig, useValue: config }]);\n}\n","import { Content } from '@ngneat/overview';\nimport { CreateHotToastRef, ToastOptions } from './hot-toast.model';\nimport { HotToastService } from './hot-toast.service';\nimport { Observable } from 'rxjs';\n\ntype ToastMethod = 'show' | 'success' | 'error' | 'warning' | 'info' | 'loading';\n\nexport class HotToastBuilder<DataType = unknown> {\n  private options: ToastOptions<DataType> = {};\n  private groupChildren: HotToastBuilder<unknown>[] = [];\n  private toastRef: CreateHotToastRef<DataType>;\n\n  constructor(private message: Content, private service: HotToastService) {}\n\n  setOptions(options: ToastOptions<DataType>): this {\n    this.options = { ...this.options, ...options };\n    return this;\n  }\n\n  addChild(child: HotToastBuilder<unknown>): this {\n    this.groupChildren.push(child);\n    return this;\n  }\n\n  get afterGroupRefsAttached(): Observable<CreateHotToastRef<unknown>[]> {\n    return this.toastRef?.afterGroupRefsAttached;\n  }\n\n  private addChildrenToOptions() {\n    if (this.groupChildren.length > 0) {\n      const children = this.groupChildren.map((child) => ({\n        options: {\n          message: child.message,\n          ...child.options,\n        },\n      }));\n\n      this.options.group = {\n        ...this.options.group,\n        children,\n      };\n    }\n  }\n\n  // Create method that creates but doesn't show the toast. Call show() to show the toast.\n  create(method: ToastMethod = 'show'): CreateHotToastRef<DataType> {\n    this.addChildrenToOptions();\n    this.toastRef = this.service[method](this.message, {\n      ...this.options,\n      ...{ visible: false },\n    }) as CreateHotToastRef<DataType>;\n    return this.toastRef;\n  }\n\n  private createToast(method: ToastMethod): CreateHotToastRef<DataType> {\n    this.addChildrenToOptions();\n    this.toastRef = this.service[method](this.message, this.options) as CreateHotToastRef<DataType>;\n    return this.toastRef;\n  }\n\n  show(): CreateHotToastRef<DataType> {\n    return this.createToast('show');\n  }\n\n  success(): CreateHotToastRef<DataType> {\n    return this.createToast('success');\n  }\n\n  error(): CreateHotToastRef<DataType> {\n    return this.createToast('error');\n  }\n\n  warning(): CreateHotToastRef<DataType> {\n    return this.createToast('warning');\n  }\n\n  info(): CreateHotToastRef<DataType> {\n    return this.createToast('info');\n  }\n\n  loading(): CreateHotToastRef<DataType> {\n    return this.createToast('loading');\n  }\n}\n","/*\n * Public API Surface of hot-toast\n */\n\nexport * from './lib/hot-toast.service';\nexport * from './lib/hot-toast.provide';\nexport * from './lib/hot-toast.model';\nexport * from './lib/hot-toast-ref';\nexport * from './lib/hot-toast-builder';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}