{"version":3,"file":"ngx-french-toast.mjs","sources":["../../../projects/ngx-french-toast/src/lib/enums/enums.ts","../../../projects/ngx-french-toast/src/lib/toast.tokens.ts","../../../projects/ngx-french-toast/src/lib/utils/utils.ts","../../../projects/ngx-french-toast/src/lib/components/toasts/toast/toast.component.ts","../../../projects/ngx-french-toast/src/lib/components/toasts/toast/toast.component.html","../../../projects/ngx-french-toast/src/lib/components/toasts/toasts.component.ts","../../../projects/ngx-french-toast/src/lib/components/toasts/toasts.component.html","../../../projects/ngx-french-toast/src/lib/french-toast.service.ts","../../../projects/ngx-french-toast/src/lib/french-toast.module.ts","../../../projects/ngx-french-toast/src/lib/providers/french-toast.provider.ts","../../../projects/ngx-french-toast/src/public-api.ts","../../../projects/ngx-french-toast/src/ngx-french-toast.ts"],"sourcesContent":["export enum ToastPosition {\n  TOP_RIGHT = 'top-right',\n  BOTTOM_RIGHT = 'bottom-right',\n  TOP_LEFT = 'top-left',\n  BOTTOM_LEFT = 'bottom-left'\n}\n\nexport enum ToastType {\n  SUCCESS = 'success',\n  DANGER = 'danger',\n  WARNING = 'warning',\n  INFO = 'info'\n}","import { InjectionToken } from '@angular/core';\nimport { ToastConfig } from './interfaces/interfaces';\n\nexport const TOAST_CONFIG = new InjectionToken<ToastConfig>('TOAST_CONFIG');","// Generated by ChatGPT @ Jun 2023\nexport function darkenHexColor(hexColor: string, factor: number): string {\n  // Remove the '#' symbol from the HEX color code\n  hexColor = hexColor.replace('#', '');\n\n  // Convert the HEX color code to RGB values\n  const r = parseInt(hexColor.substring(0, 2), 16);\n  const g = parseInt(hexColor.substring(2, 4), 16);\n  const b = parseInt(hexColor.substring(4, 6), 16);\n\n  // Convert RGB to HSL\n  const hsl = rgbToHsl(r, g, b);\n\n  // Darken the lightness component\n  const darkenedHsl = { ...hsl, l: hsl.l * factor };\n\n  // Add a small amount of black\n  const blackFactor = 0.125; // Adjust the value to control the amount of black added\n  const darkenedL = darkenedHsl.l * (1 - blackFactor);\n\n  // Convert HSL back to RGB\n  const rgb = hslToRgb(darkenedHsl.h, darkenedHsl.s, darkenedL);\n\n  // Convert the RGB values back to HEX\n  const darkenedHex = `#${padZero(rgb.r.toString(16))}${padZero(rgb.g.toString(16))}${padZero(rgb.b.toString(16))}`;\n\n  return darkenedHex;\n}\n\nfunction rgbToHsl(r: number, g: number, b: number): { h: number; s: number; l: number } {\n  r /= 255;\n  g /= 255;\n  b /= 255;\n\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  let h = 0,\n    s = 0,\n    l = (max + min) / 2;\n\n  if (max !== min) {\n    const d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n    switch (max) {\n      case r:\n        h = (g - b) / d + (g < b ? 6 : 0);\n        break;\n      case g:\n        h = (b - r) / d + 2;\n        break;\n      case b:\n\n        h = (r - g) / d + 4;\n        break;\n    }\n\n    h /= 6;\n  }\n  return { h, s, l };\n}\n\nfunction hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {\n  let r, g, b;\n\n  if (s === 0) {\n    r = g = b = l;\n  } else {\n    const hue2rgb = (p: number, q: number, t: number): number => {\n      if (t < 0) t += 1;\n      if (t > 1) t -= 1;\n      if (t < 1 / 6) return p + (q - p) * 6 * t;\n      if (t < 1 / 2) return q;\n      if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n      return p;\n    };\n\n    const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n    const p = 2 * l - q;\n\n    r = hue2rgb(p, q, h + 1 / 3) * 255;\n    g = hue2rgb(p, q, h) * 255;\n    b = hue2rgb(p, q, h - 1 / 3) * 255;\n  }\n\n  return {\n    r: Math.round(r),\n    g: Math.round(g),\n    b: Math.round(b),\n  };\n}\n\nfunction padZero(hex: string): string {\n  return hex.length === 1 ? `0${hex}` : hex;\n}","import {\n  AfterContentInit,\n  AfterViewInit,\n  Component,\n  ComponentRef,\n  HostListener,\n  OnInit,\n  ViewContainerRef,\n  input,\n  output,\n  viewChild,\n  inject,\n  signal,\n  OnDestroy\n} from '@angular/core';\nimport { ToastModel } from '../../../interfaces/interfaces';\nimport { ToastConfig } from '../../../interfaces/interfaces';\nimport { TOAST_CONFIG } from '../../../toast.tokens';\nimport { ToastPosition } from '../../../enums/enums';\nimport { darkenHexColor } from '../../../utils/utils';\nimport { NgStyle } from '@angular/common';\n\n@Component({\n  selector: 'toast',\n  templateUrl: './toast.component.html',\n  styleUrls: ['./toast.component.scss', '../../../styles/common-styles.scss'],\n  imports: [NgStyle]\n})\nexport class ToastComponent implements OnInit, AfterContentInit, AfterViewInit, OnDestroy {\n  private config = inject<ToastConfig>(TOAST_CONFIG);\n\n  @HostListener('click', ['$event'])\n  public onClick(event: any): void {\n    event.stopPropagation();\n  }\n  readonly container = viewChild.required('container', { read: ViewContainerRef });\n  readonly toast = input.required<ToastModel>();\n  readonly currentTheme = input<string>();\n  readonly control = output<ToastModel>();\n  isVisible = signal(false);\n  duration!: number;\n  remainingTime!: number;\n  timeout!: any;\n  resumeTime!: Date;\n  component!: ComponentRef<any>;\n  svgUrlIsFromSprite: boolean = false;\n  position: ToastPosition = ToastPosition.BOTTOM_RIGHT;\n  bottomRight: ToastPosition = ToastPosition.BOTTOM_RIGHT;\n  bottomLeft: ToastPosition = ToastPosition.BOTTOM_LEFT;\n  topRight: ToastPosition = ToastPosition.TOP_RIGHT;\n  topLeft: ToastPosition = ToastPosition.TOP_LEFT;\n  linearGradient: string = '';\n  toastConfig!: ToastConfig;\n  timebarColor!: { background: string };\n  textColor: string = '';\n  style: string = '';\n\n  constructor() {\n    this.toastConfig = this.config;\n    if (this.toastConfig.position) {\n      this.position = this.toastConfig.position;\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (this.toast().component) {\n      this.createDynamicToast();\n    }\n  }\n\n  ngOnInit(): void {\n    this.getColors();\n    const toast = this.toast();\n    this.svgUrlIsFromSprite = toast.icon?.includes('.svg#') as boolean;\n    if (toast?.infinite) return;\n    this.duration = Number(toast.duration);\n    this.remainingTime = Number(toast.duration);\n    this.resumeTime = new Date();\n    this.timeout = setTimeout(() => {\n      this.destroyToast();\n    }, this.duration);\n  }\n\n  ngAfterContentInit(): void {\n    setTimeout(() => {\n      this.isVisible.set(true);\n    }, 10);\n  }\n\n  ngOnDestroy(): void {\n    clearTimeout(this.timeout);\n  }\n\n  createDynamicToast(): void {\n    this.container().clear();\n    this.component = this.container().createComponent(this.toast().component);\n    this.component.instance.content = this.toast().content;\n    const toast = this.toast();\n    if (toast?.context) {\n      this.component.instance.context = toast.context;\n    }\n  }\n\n  destroyToast() {\n    this.isVisible.set(false);\n    setTimeout(() => {\n      this.control.emit(this.toast());\n    }, 100);\n  }\n\n  onMouseEnter() {\n    if (this.toast()?.infinite) return;\n    clearTimeout(this.timeout);\n    const diff = new Date().getTime() - this.resumeTime.getTime();\n    this.remainingTime -= diff;\n  }\n\n  onMouseLeave() {\n    if (this.toast()?.infinite) return;\n    this.resumeTime = new Date();\n    this.timeout = setTimeout(() => {\n      this.destroyToast();\n    }, this.remainingTime);\n  }\n\n  getColors(): void {\n    this.getToastStyle();\n    this.getTimebarColor();\n  }\n\n  getToastStyle(): void {\n    this.textColor = this.getToastTextColor();\n    this.style = `--text-color: ${this.textColor};`;\n    const colorHexCode: string = this.toastConfig?.colors?.[this.toast().type] as string;\n    if (!colorHexCode) return;\n    const darkenedColorHexCode = darkenHexColor(colorHexCode as string, 0.725);\n    this.linearGradient = this.config.colors?.autoGradient\n      ? `linear-gradient(45deg, ${darkenedColorHexCode}, ${colorHexCode})`\n      : colorHexCode;\n    this.style += `background: ${this.linearGradient}`;\n  }\n\n  getToastTextColor(): string {\n    const toastTypeText = this.toast().type + 'Text';\n    const textColorHexCode =\n      this.config.colors?.[toastTypeText as 'successText' | 'dangerText' | 'infoText' | 'warningText'] || '#ffffff';\n    return textColorHexCode;\n  }\n\n  getTimebarColor(): void {\n    if (!this.toastConfig.colors?.timebar) return;\n    this.timebarColor = {\n      background: this.toastConfig.colors?.timebar as string\n    };\n  }\n}\n","<div\n  class=\"toast-container\"\n  [id]=\"toast()._id\"\n  [style]=\"style\"\n  [class.right]=\"position === bottomRight || position === topRight\"\n  [class.left]=\"position === bottomLeft || position === topLeft\"\n  [class.visible]=\"isVisible()\"\n  [class]=\"toast().type\"\n  [class.dynamic]=\"toast().component ? true : false\"\n  (click)=\"toast().component ? null : destroyToast()\"\n  (mouseenter)=\"onMouseEnter()\"\n  (mouseleave)=\"onMouseLeave()\"\n>\n  @if (toast().component) {\n    <div class=\"close\">\n      <button class=\"icon\" (click)=\"destroyToast()\"></button>\n    </div>\n  }\n  @if (!toast().infinite) {\n    <div class=\"toast-timer\" [style]=\"'--animation-speed: ' + duration / 1000 + 's;'\" [ngStyle]=\"timebarColor\"></div>\n  }\n  <div class=\"toast-group\">\n    @if (toast().icon) {\n      <div class=\"toast-group__icon\">\n        @if (svgUrlIsFromSprite) {\n          <svg>\n            <use [attr.xlink:href]=\"toast().icon\"></use>\n          </svg>\n        } @else {\n          <img [src]=\"toast().icon\" />\n        }\n      </div>\n    }\n    <div class=\"toast-group__text\">\n      <span class=\"toast-group__text--title\">{{ toast().title }}</span>\n      @if (toast().component || toast().content) {\n        @if (toast().component) {\n          <ng-template #container />\n        } @else {\n          <span class=\"toast-group__text--content\">{{ toast().content }}</span>\n        }\n      }\n    </div>\n  </div>\n</div>\n","import { Component, ComponentRef, DestroyRef, inject, OnInit, signal, viewChildren } from '@angular/core';\nimport { filter } from 'rxjs';\nimport { ToastModel } from '../../interfaces/interfaces';\nimport { ToastComponent } from './toast/toast.component';\nimport { ToastService } from '../../french-toast.service';\nimport { TOAST_CONFIG } from '../../toast.tokens';\nimport { ToastConfig } from '../../interfaces/interfaces';\nimport { ToastPosition } from '../../enums/enums';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  selector: 'french-toast',\n  templateUrl: './toasts.component.html',\n  styleUrls: ['./toasts.component.scss', '../../styles/common-styles.scss'],\n  imports: [ToastComponent]\n})\nexport class ToastsComponent implements OnInit {\n  private toastService = inject(ToastService);\n  private config = inject<ToastConfig>(TOAST_CONFIG);\n  private destroyRef = inject(DestroyRef);\n  readonly toastsComponents = viewChildren(ToastComponent);\n  toasts = signal<ToastModel[]>([]);\n  position: ToastPosition = ToastPosition.BOTTOM_RIGHT;\n  bottomRight: ToastPosition = ToastPosition.BOTTOM_RIGHT;\n  bottomLeft: ToastPosition = ToastPosition.BOTTOM_LEFT;\n  topRight: ToastPosition = ToastPosition.TOP_RIGHT;\n  topLeft: ToastPosition = ToastPosition.TOP_LEFT;\n  fontFamily: string = '';\n  titleFontSize: string = '';\n  contentFontSize: string = '';\n  style: string = '';\n  componentRef!: ComponentRef<ToastsComponent>;\n\n  constructor() {\n    if (this.config.position) this.position = this.config.position;\n  }\n\n  ngOnInit(): void {\n    this.getToasts();\n    this.style = this.getStyles();\n  }\n\n  getStyles(): string {\n    this.fontFamily = `--font-family: ${this.config.font?.family || 'sans-serif'}`;\n    this.titleFontSize = `--title-font-size: ${this.config.font?.titleFontSize || '1.2rem'}`;\n    this.contentFontSize = `--content-font-size: ${this.config.font?.contentFontSize || '1rem'}`;\n    return `${this.fontFamily}; ${this.titleFontSize}; ${this.contentFontSize}`;\n  }\n\n  getToasts(): void {\n    this.listenForToasts();\n    this.listenForDestroyAllToasts();\n    this.listenForDestroyToast();\n  }\n\n  listenForToasts(): void {\n    this.toastService.toast\n      .pipe(\n        filter((toast) => !!toast),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe({\n        next: (toast) => {\n          const toastElement: ToastModel = { ...toast } as ToastModel;\n          const currentToasts = this.toasts();\n          const limit = this.config.limit || 3;\n          const updatedToasts = [...currentToasts, toastElement];\n          this.toasts.set(updatedToasts);\n\n          if (updatedToasts.length > limit) {\n            setTimeout(() => {\n              const allToastsArePinned = currentToasts.every((t) => t.pinned);\n              const toastToRemove = allToastsArePinned ? updatedToasts[0] : updatedToasts.find((t) => !t.pinned);\n              if (toastToRemove) {\n                this.toastsComponents()\n                  .find((comp) => comp.toast()._uId === toastToRemove._uId)\n                  ?.destroyToast();\n              }\n            }, 100);\n          }\n        }\n      });\n  }\n\n  listenForDestroyAllToasts(): void {\n    this.toastService.clearAll.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n      next: () => {\n        const toastsComponents = this.toastsComponents();\n        if (!toastsComponents) return;\n        toastsComponents.forEach((e) => {\n          e.destroyToast();\n        });\n      }\n    });\n  }\n\n  listenForDestroyToast(): void {\n    this.toastService.clearToast.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n      next: (uniqueId: string) => {\n        this.toastsComponents()\n          .find((toast) => toast.toast()._uId === uniqueId)\n          ?.destroyToast();\n      }\n    });\n  }\n\n  control(toast: ToastModel): void {\n    const toasts = this.toasts();\n    const index = toasts.indexOf(toast);\n    toasts[index].isVisible = false;\n    toasts.splice(index, 1);\n    this.toasts.set(toasts);\n    if (this.toasts().length === 0) {\n      this.componentRef.destroy();\n    }\n  }\n}\n","@if (toasts().length) {\n  <div\n    class=\"toasts-container\"\n    [style]=\"style\"\n    [class.bottom-right]=\"position === bottomRight\"\n    [class.bottom-left]=\"position === bottomLeft\"\n    [class.top-left]=\"position === topLeft\"\n    [class.top-right]=\"position === topRight\"\n  >\n    @for (toast of toasts(); track toast._id) {\n      @if (toast?.isVisible) {\n        <toast [toast]=\"toast\" (control)=\"control($event)\" />\n      }\n    }\n  </div>\n}\n","import { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { ToastModel } from './interfaces/interfaces';\nimport { ToastInputModel } from './interfaces/interfaces';\nimport { ToastType } from './enums/enums';\nimport { ToastConfig } from './interfaces/interfaces';\nimport { TOAST_CONFIG } from './toast.tokens';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ToastsComponent } from './components/toasts/toasts.component';\nimport { ToastComponent } from './components/toasts/toast/toast.component';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ToastService {\n  private config = inject<ToastConfig>(TOAST_CONFIG);\n  private overlay = inject(Overlay);\n  private overlayRef!: OverlayRef;\n  private duration: number = 7000;\n\n  toast: BehaviorSubject<ToastModel | null> = new BehaviorSubject<ToastModel | null>(null);\n  clearAll = new Subject<void>();\n  clearToast = new Subject<string>();\n\n  constructor() {\n    if (this.config?.defaultDuration) {\n      this.duration = this.config.defaultDuration;\n    }\n  }\n\n  private addToast(toastInput: ToastInputModel, type: ToastType): void {\n    const newToast: ToastModel = {\n      _id: toastInput._id,\n      title: toastInput.title,\n      content: toastInput.content,\n      isVisible: true,\n      duration: toastInput.duration,\n      icon: toastInput?.icon ?? null,\n      type,\n      component: toastInput.component,\n      infinite: toastInput.infinite,\n      pinned: toastInput.pinned,\n      context: toastInput.context,\n      _uId: this.getUniqueId(6)\n    };\n    this.toast.next(newToast);\n    if (!this.overlayRef?.hasAttached()) this.createOverlay();\n  }\n\n  createOverlay(): void {\n    this.overlayRef = this.overlay.create();\n    const toastPortal = new ComponentPortal(ToastsComponent);\n    const componentRef = this.overlayRef.attach(toastPortal);\n    componentRef.instance.componentRef = componentRef;\n  }\n\n  private handleToast(toastInput: ToastInputModel, type: ToastType): void {\n    toastInput._id = toastInput?._id ?? this.getUniqueId(5);\n    toastInput.duration = toastInput?.duration ?? this.duration;\n    this.addToast(toastInput, type);\n  }\n\n  success(toastInput: ToastInputModel): void {\n    this.handleToast(toastInput, ToastType.SUCCESS);\n  }\n\n  danger(toastInput: ToastInputModel): void {\n    this.handleToast(toastInput, ToastType.DANGER);\n  }\n\n  info(toastInput: ToastInputModel): void {\n    this.handleToast(toastInput, ToastType.INFO);\n  }\n\n  warning(toastInput: ToastInputModel): void {\n    this.handleToast(toastInput, ToastType.WARNING);\n  }\n\n  clearAllToasts(): void {\n    this.clearAll.next();\n  }\n\n  destroyToast(toastComponent: ToastComponent): void {\n    this.clearToast.next(toastComponent.toast()._uId);\n  }\n\n  private getUniqueId(parts: number): string {\n    const stringArr = [];\n    for (let i = 0; i < parts; i++) {\n      // tslint:disable-next-line:no-bitwise\n      const S4 = (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n      stringArr.push(S4);\n    }\n    return stringArr.join('');\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ToastConfig } from './interfaces/interfaces';\nimport { ToastPosition } from './enums/enums';\nimport { TOAST_CONFIG } from './toast.tokens';\n\n@NgModule({})\n\nexport class FrenchToastModule {\n  static forRoot(config?: ToastConfig): ModuleWithProviders<FrenchToastModule> {\n    if (!config) {\n      config = {\n        position: ToastPosition.BOTTOM_RIGHT,\n        defaultDuration: 10000,\n        colors: {\n          autoGradient: false\n        }\n      }\n    }\n    return {\n      ngModule: FrenchToastModule,\n      providers: [\n        { provide: TOAST_CONFIG, useValue: config }\n      ]\n    };\n  }\n}","import { EnvironmentProviders, Provider, makeEnvironmentProviders } from \"@angular/core\";\nimport { ToastConfig } from \"../interfaces/interfaces\";\nimport { TOAST_CONFIG } from \"../toast.tokens\";\n\nexport const provideFrenchToast = (config: Partial<ToastConfig> = {}): EnvironmentProviders => {\n  const providers: Provider[] = [\n    {\n      provide: TOAST_CONFIG,\n      useValue: config\n    }\n  ];\n  return makeEnvironmentProviders(providers);\n};","/*\n * Public API Surface of ngx-french-toast\n */\n\nexport * from './lib/french-toast.service';\nexport * from './lib/french-toast.module';\nexport * from './lib/components/toasts/toasts.component';\nexport * from './lib/components/toasts/toast/toast.component';\nexport * from './lib/enums/enums';\nexport * from './lib/interfaces/interfaces';\nexport * from './lib/providers/french-toast.provider';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}