{"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/tokens.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-http-interceptor.model.ts","../../../../projects/ngxpert/hot-toast/src/lib/hot-toast-http-interceptor.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  readonly theme = input<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  readonly theme = input<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  readonly theme = input<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  readonly theme = input<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  readonly theme = input<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  readonly theme = input<IconTheme>();\n  readonly type = input<ToastType>();\n}\n","@if (type() !== 'blank') {\n<div class=\"hot-toast-indicator-wrapper\">\n  @if (type() === 'loading') {\n  <hot-toast-loader [theme]=\"theme()\" />\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()\" />\n      </div>\n      } @case ('success') {\n      <div>\n        <hot-toast-checkmark [theme]=\"theme()\" />\n      </div>\n      } @case ('warning') {\n      <div>\n        <hot-toast-warning [theme]=\"theme()\" />\n      </div>\n      } @case ('info') {\n      <div>\n        <hot-toast-info [theme]=\"theme()\" />\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  readonly iconTheme = input<IconTheme>();\n  readonly icon = input<Content>();\n}\n","<div class=\"hot-toast-animated-icon\" [style.color]=\"iconTheme()?.primary\">\n  <ng-container *dynamicView=\"icon()\" />\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Injector,\n  Input,\n  NgZone,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  OnChanges,\n  OnInit,\n  AfterViewInit,\n  OnDestroy,\n  signal,\n  ChangeDetectorRef,\n  inject,\n  input,\n  output\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  readonly offset = input(0);\n  readonly defaultConfig = input<ToastConfig>();\n  readonly toastRef = input<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  readonly isShowingAllToasts = input(false);\n\n  readonly height = output<number>();\n  readonly beforeClosed = output();\n  readonly afterClosed = output<HotToastClose>();\n  readonly showAllToasts = output<boolean>();\n  readonly toggleGroup = output<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        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\" />\n        </div>\n        } } @else {\n        <hot-toast-indicator [theme]=\"toast.iconTheme\" [type]=\"toast.type\" />\n        }\n      </div>\n      <div class=\"hot-toast-message\">\n        <ng-container *dynamicView=\"toast.message; context: context; injector: toastComponentInjector\" />\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  inject,\n  Injector,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  signal,\n  SimpleChanges,\n  ViewChild,\n  input,\n  output,\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-component',\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  readonly offset = input(0);\n  readonly defaultConfig = input<ToastConfig>();\n  readonly toastRef = input<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    const defaultConfig = this.defaultConfig();\n    if (defaultConfig?.visibleToasts > 0) {\n      if (this.toast.autoClose) {\n        // if (value >= this.defaultConfig?.visibleToasts) {\n        //   this.close();\n        // }\n      } else {\n        if (value >= defaultConfig?.visibleToasts) {\n          this.softClose();\n        } else if (this.softClosed) {\n          this.softOpen();\n        }\n      }\n    }\n  }\n\n  readonly isShowingAllToasts = input(false);\n\n  readonly height = output<number>();\n  readonly beforeClosed = output();\n  readonly afterClosed = output<HotToastClose>();\n  readonly showAllToasts = output<boolean>();\n  readonly toggleGroup = output<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    const toastRef = this.toastRef();\n    if (toastRef.groupRefs.length !== this.groupRefs.length) {\n      this.groupRefs = toastRef.groupRefs.slice();\n      this.cdr.markForCheck();\n\n      this.emiHeightWithGroup(this.isExpanded);\n    }\n    if (toastRef.groupExpanded !== this.isExpanded) {\n      this.isExpanded = 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        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            const defaultConfig = this.defaultConfig();\n            return defaultConfig.visibleToasts !== 0 && i < visibleToasts.length - 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\" />\n        } @else {\n        <div>\n          <ng-container *dynamicView=\"toast.icon\" />\n        </div>\n        } } @else {\n        <hot-toast-indicator [theme]=\"toast.iconTheme\" [type]=\"toast.type\" />\n        }\n      </div>\n\n      <div class=\"hot-toast-message\">\n        <ng-container *dynamicView=\"toast.message; context: context; injector: toastComponentInjector\" />\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 [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       />\n      }\n    </div>\n    }\n  </div>\n</div>\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  inject,\n  QueryList,\n  ViewChildren,\n  ChangeDetectorRef,\n  input,\n  afterNextRender,\n  ElementRef,\n  OnDestroy,\n  isDevMode,\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';\n\n@Component({\n  selector: 'hot-toast-container',\n  templateUrl: './hot-toast-container.component.html',\n  styleUrl: './hot-toast-container.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [HotToastComponent],\n  host: {\n    '[attr.popover]': 'defaultConfig().usePopover ? \"manual\" : undefined',\n    '[class.hot-toast-container-overlay-popover]': 'defaultConfig().usePopover',\n  },\n})\nexport class HotToastContainerComponent implements OnDestroy {\n  readonly defaultConfig = input<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  private host = inject(ElementRef);\n\n  constructor() {\n    afterNextRender(() => {\n      if (this.defaultConfig().usePopover) {\n        // We need the try/catch because the browser will throw if the\n        // host or any of the parents are outside the DOM. Also note\n        // the string access which is there for compatibility with Closure.\n        try {\n          this.host.nativeElement['showPopover']();\n        } catch (error) {\n          if (isDevMode()) {\n            console.error('Error showing popover');\n            console.error(error);\n          }\n        }\n      }\n    });\n  }\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 &&\n              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    let 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        toast = { ...toast, ...options };\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  ngOnDestroy() {\n    if (this.defaultConfig().usePopover) {\n      // We need the try/catch because the browser will throw if the\n      // host or any of the parents are outside the DOM. Also note\n      // the string access which is there for compatibility with Closure.\n      try {\n        this.host.nativeElement['hidePopover']();\n      } catch (error) {\n        if (isDevMode()) {\n          console.error('Error hiding popover');\n          console.error(error);\n        }\n      }\n    }\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 class=\"hot-toast-container-overlay\">\n  <div class=\"hot-toast-container-wrapper\">\n    <div>\n      @for (toast of toasts; track trackById($index, toast)) {\n        @if (toast.group?.parent) {\n        } @else {\n          <hot-toast-component\n            [toast]=\"toast\"\n            [offset]=\"calculateOffset(toast.id, toast.position)\"\n            [toastRef]=\"toastRefs[$index]\"\n            [toastsAfter]=\"(toast.autoClose ? toasts.length : getVisibleToasts(toast.position).length) - 1 - $index\"\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          />\n        }\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  /**\n   * Whether the overlay should be rendered as a native popover element, rather than placing it inside of the overlay container.\n   * @default undefined\n   * @since 6.0.0\n   */\n  usePopover?: boolean;\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\n/**\n * Visual theme for a hot-toast.\n *\n * - `toast` — default look (base styles, no extra import needed)\n * - `snackbar` — dark snackbar variant (included in base styles)\n * - `material` — Material Design elevation + typography (`@use '@ngxpert/hot-toast/themes/material'`)\n * - `minimal` — borderless, no shadow, clean (`@use '@ngxpert/hot-toast/themes/minimal'`)\n * - `glassmorphism` — frosted-glass effect (`@use '@ngxpert/hot-toast/themes/glassmorphism'`)\n * - `ios` — iOS-style pill with blur (`@use '@ngxpert/hot-toast/themes/ios'`)\n */\nexport type ToastTheme = 'toast' | 'snackbar' | 'material' | 'minimal' | 'glassmorphism' | 'ios';\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>(\n  valOrFunction: ValueOrFunction<TValue, TArg>,\n  arg: TArg,\n): 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 { InjectionToken } from '@angular/core';\n\n/**\n * Injection token to provide a custom container selector for the toast container. The value will be used as a selector to find the container element using `document.querySelector`.\n * @example\n * ```ts\n * import { HOT_TOAST_CONTAINER_TOKEN, provideHotToastConfig } from '@ngxpert/hot-toast';\n * import { bootstrapApplication } from '@angular/platform-browser';\n *\n * bootstrapApplication(AppComponent, {\n *   providers: [\n *     provideHotToastConfig(),\n *     {\n *       provide: HOT_TOAST_CONTAINER_TOKEN,\n *       useValue: '#toast-container',\n *     },\n *   ],\n * }).catch((err) => console.error(err));\n * ```\n *\n */\nexport const HOT_TOAST_CONTAINER_TOKEN = new InjectionToken<string>('HOT_TOAST_CONTAINER_TOKEN');\n\n/** Injection token used to configure whether the toast should be rendered as a native popover element.\n *  * @example\n * ```ts\n * import { HOT_TOAST_USE_POPOVER_TOKEN, provideHotToastConfig } from '@ngxpert/hot-toast';\n * import { bootstrapApplication } from '@angular/platform-browser';\n *\n * bootstrapApplication(AppComponent, {\n *   providers: [\n *     provideHotToastConfig(),\n *     {\n *       provide: HOT_TOAST_USE_POPOVER_TOKEN,\n *       useValue: true,\n *     },\n *   ],\n * }).catch((err) => console.error(err));\n * ```\n *\n */\nexport const HOT_TOAST_USE_POPOVER_TOKEN = new InjectionToken<boolean>('HOT_TOAST_USE_POPOVER_TOKEN');\n","import { DOCUMENT, 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';\nimport { HOT_TOAST_CONTAINER_TOKEN, HOT_TOAST_USE_POPOVER_TOKEN } from './tokens';\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  private _container = inject(HOT_TOAST_CONTAINER_TOKEN, { optional: true });\n  private _usePopover = inject(HOT_TOAST_USE_POPOVER_TOKEN, { optional: true });\n  private _document = inject(DOCUMENT);\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    const defaultUsePopover = this._usePopover ?? true;\n    if (!('showPopover' in this._document.body)) {\n      this._defaultGlobalConfig.usePopover = false;\n    } else {\n      this._defaultGlobalConfig.usePopover = this._defaultGlobalConfig.usePopover ?? defaultUsePopover;\n    }\n\n    if (this._container) {\n      let containerElement = document.querySelector(this._container);\n      if (!containerElement) {\n        console.warn(\n          `No container element found for selector: ${this._container}, using document.body instead as toast container.`,\n        );\n        containerElement = document.body;\n      }\n      this._componentRef = this._viewService\n        .createComponent(HotToastContainerComponent)\n        .setInput('defaultConfig', this._defaultGlobalConfig)\n        .appendTo(containerElement);\n    } else {\n      this._componentRef = this._viewService\n        .createComponent(HotToastContainerComponent)\n        .setInput('defaultConfig', this._defaultGlobalConfig)\n        .appendTo(document.body);\n    }\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:\n      | Content\n      | ValueOrFunction<Content, T>\n      | ObservableLoading<DataType>\n      | 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 type { HttpRequest } from '@angular/common/http';\n\nimport type { ToastOptions } from './hot-toast.model';\n\nexport type HotToastHttpInterceptorIgnoreContext = {\n  error: unknown;\n  status: number | undefined;\n  url: string | undefined;\n  request: HttpRequest<unknown>;\n};\n\nexport type HotToastHttpInterceptorConfig = {\n  /**\n   * HTTP status codes for which no error toast is shown (for example `401` when the app handles auth globally).\n   */\n  ignoreStatuses?: readonly number[];\n  /**\n   * When true, no toast is shown for this failure. Use for custom filtering beyond status codes.\n   */\n  shouldIgnore?: (context: HotToastHttpInterceptorIgnoreContext) => boolean;\n  /**\n   * When true, the request bypasses error toasts entirely (success path unchanged).\n   */\n  skipRequest?: (context: { request: HttpRequest<unknown> }) => boolean;\n  /**\n   * When false, only `HttpErrorResponse` failures open a toast; other errors are rethrown silently.\n   * @default true\n   */\n  showForUnknownErrors?: boolean;\n  /**\n   * Fixed message or resolver from the failure context. Return `undefined` or empty string to skip showing a toast while still rethrowing.\n   */\n  errorMessage?:\n    | string\n    | ((context: HotToastHttpInterceptorIgnoreContext) => string | undefined);\n  /**\n   * Extra options passed to `HotToastService.error` (merged after the resolved message).\n   */\n  toastOptions?: Partial<ToastOptions<unknown>>;\n};\n\nexport const DEFAULT_HOT_TOAST_HTTP_INTERCEPTOR_CONFIG: HotToastHttpInterceptorConfig = {\n  ignoreStatuses: [],\n  showForUnknownErrors: true,\n};\n","import { isPlatformServer } from '@angular/common';\nimport { HttpErrorResponse, HttpInterceptorFn } from '@angular/common/http';\nimport { EnvironmentProviders, inject, InjectionToken, makeEnvironmentProviders, PLATFORM_ID } from '@angular/core';\nimport { throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport {\n  DEFAULT_HOT_TOAST_HTTP_INTERCEPTOR_CONFIG,\n  HotToastHttpInterceptorConfig,\n  HotToastHttpInterceptorIgnoreContext,\n} from './hot-toast-http-interceptor.model';\nimport { HotToastService } from './hot-toast.service';\n\nexport const HOT_TOAST_HTTP_INTERCEPTOR_CONFIG = new InjectionToken<HotToastHttpInterceptorConfig>(\n  'HOT_TOAST_HTTP_INTERCEPTOR_CONFIG',\n);\n\nfunction resolveErrorMessage(context: HotToastHttpInterceptorIgnoreContext): string {\n  const { error } = context;\n  if (error instanceof HttpErrorResponse) {\n    if (typeof error.error === 'string' && error.error.trim().length > 0) {\n      return error.error;\n    }\n    if (error.message) {\n      return error.message;\n    }\n  }\n  if (error instanceof Error && error.message) {\n    return error.message;\n  }\n  return 'Something went wrong';\n}\n\nfunction resolveToastMessage(\n  config: HotToastHttpInterceptorConfig,\n  context: HotToastHttpInterceptorIgnoreContext,\n): string | undefined {\n  if (typeof config.errorMessage === 'function') {\n    return config.errorMessage(context);\n  }\n  if (typeof config.errorMessage === 'string') {\n    return config.errorMessage;\n  }\n  return resolveErrorMessage(context);\n}\n\n/**\n * Shows an error toast for failed HTTP calls. Register with\n * `provideHttpClient(withInterceptors([hotToastHttpInterceptor]))` (and your other HTTP features),\n * and optionally call {@link provideHotToastHttpInterceptor} for ignore rules and messages.\n */\nexport const hotToastHttpInterceptor: HttpInterceptorFn = (req, next) => {\n  const platformId = inject(PLATFORM_ID);\n  const toast = inject(HotToastService);\n  const injectedConfig = inject(HOT_TOAST_HTTP_INTERCEPTOR_CONFIG, { optional: true });\n  const config: HotToastHttpInterceptorConfig = {\n    ...DEFAULT_HOT_TOAST_HTTP_INTERCEPTOR_CONFIG,\n    ...injectedConfig,\n  };\n\n  if (config.skipRequest?.({ request: req })) {\n    return next(req);\n  }\n\n  return next(req).pipe(\n    catchError((error: unknown) => {\n      if (isPlatformServer(platformId)) {\n        return throwError(error);\n      }\n\n      const status = error instanceof HttpErrorResponse ? error.status : undefined;\n      const url = error instanceof HttpErrorResponse ? error.url ?? undefined : undefined;\n      const context: HotToastHttpInterceptorIgnoreContext = {\n        error,\n        request: req,\n        status,\n        url: url ?? req.url,\n      };\n\n      if (status !== undefined && config.ignoreStatuses?.includes(status)) {\n        return throwError(error);\n      }\n\n      if (config.shouldIgnore?.(context)) {\n        return throwError(error);\n      }\n\n      if (!(error instanceof HttpErrorResponse) && !config.showForUnknownErrors) {\n        return throwError(error);\n      }\n\n      const message = resolveToastMessage(config, context);\n      if (message) {\n        toast.error(message, config.toastOptions);\n      }\n\n      return throwError(error);\n    }),\n  );\n};\n\n/**\n * Optional configuration for {@link hotToastHttpInterceptor}. Add the interceptor to `HttpClient`, for example:\n *\n * ```ts\n * provideHttpClient(withFetch(), withInterceptors([hotToastHttpInterceptor])),\n * provideHotToastHttpInterceptor({ ignoreStatuses: [401] }),\n * ```\n */\nexport function provideHotToastHttpInterceptor(\n  config?: Partial<HotToastHttpInterceptorConfig>,\n): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    {\n      provide: HOT_TOAST_HTTP_INTERCEPTOR_CONFIG,\n      useValue: { ...DEFAULT_HOT_TOAST_HTTP_INTERCEPTOR_CONFIG, ...config },\n    },\n  ]);\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-http-interceptor';\nexport * from './lib/hot-toast-http-interceptor.model';\nexport * from './lib/hot-toast.model';\nexport * from './lib/hot-toast-ref';\nexport * from './lib/hot-toast-builder';\nexport * from './lib/tokens';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}