{"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  EventEmitter,\n  HostListener,\n  Inject,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewContainerRef\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 {\n  @HostListener('click', ['$event'])\n  public onClick(event: any): void {\n    event.stopPropagation();\n  }\n  @ViewChild('container', { read: ViewContainerRef })\n  container!: ViewContainerRef;\n  @Input() toast!: ToastModel;\n  @Input() currentTheme!: string;\n  @Output() control: EventEmitter<ToastModel> = new EventEmitter<ToastModel>();\n  isVisible: boolean = 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(@Inject(TOAST_CONFIG) private config: ToastConfig) {\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    this.svgUrlIsFromSprite = this.toast.icon?.includes('.svg#') as boolean;\n    if (this.toast?.infinite) return;\n    this.duration = Number(this.toast.duration);\n    this.remainingTime = Number(this.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 = true;\n    }, 10);\n  }\n\n  createDynamicToast(): void {\n    this.container.clear();\n    setTimeout(() => {\n      this.component = this.container.createComponent(this.toast.component);\n      this.component.instance.content = this.toast.content;\n      if (this.toast?.context) {\n        this.component.instance.context = this.toast.context;\n      }\n    }, 0);\n  }\n\n  destroyToast() {\n    this.isVisible = false;\n    setTimeout(() => {\n      this.toast.isVisible = false;\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></ng-template>\n        } @else {\n          <span class=\"toast-group__text--content\">{{ toast.content }}</span>\n        }\n      }\n    </div>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  Component,\n  ComponentRef,\n  DestroyRef,\n  inject,\n  Inject,\n  OnInit,\n  QueryList,\n  ViewChildren\n} from '@angular/core';\nimport { delay, filter, startWith } 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, AfterViewInit {\n  toasts: ToastModel[] = [];\n  @ViewChildren(ToastComponent) toastsComponents!: QueryList<ToastComponent>;\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  private destroyRef = inject(DestroyRef);\n\n  constructor(\n    private toastService: ToastService,\n    @Inject(TOAST_CONFIG) private config: ToastConfig\n  ) {\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  ngAfterViewInit(): void {\n    this.toastsComponents.changes.pipe(startWith(''), delay(0), takeUntilDestroyed(this.destroyRef)).subscribe({\n      next: () => {\n        const reachedLimit = this.toastsComponents.toArray().length > (this.config.limit || 3);\n        if (reachedLimit) {\n          this.toastsComponents.toArray()[0].destroyToast();\n        }\n      }\n    });\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 pinnedToastOnScreen = this.toasts.some((tst) => tst?.pinned);\n          if (pinnedToastOnScreen && !toast?.pinned) {\n            const firstPinnedToastIndex = this.toasts.indexOf(this.toasts.find((e) => e.pinned) as ToastModel);\n            this.toasts.splice(firstPinnedToastIndex, 0, toastElement);\n            return;\n          }\n          this.toasts.push(toast as ToastModel);\n        }\n      });\n  }\n\n  listenForDestroyAllToasts(): void {\n    this.toastService.clearAll.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n      next: () => {\n        if (!this.toastsComponents) return;\n        this.toastsComponents.toArray().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          .toArray()\n          .find((toast) => toast.toast._uId === uniqueId)\n          ?.destroyToast();\n      }\n    });\n  }\n\n  control(toast: ToastModel): void {\n    const index = this.toasts.indexOf(toast);\n    this.toasts.splice(index, 1);\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 { Inject, Injectable } 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\n@Injectable({\n  providedIn: 'root'\n})\nexport class ToastService {\n\n  toast: BehaviorSubject<ToastModel | null> = new BehaviorSubject<ToastModel | null>(null);\n  clearAll = new Subject<void>();\n  clearToast = new Subject<string>();\n  private overlayRef!: OverlayRef;\n  private duration: number = 7000;\n\n  constructor(@Inject(TOAST_CONFIG) private config: ToastConfig, private overlay: Overlay) {\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}","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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"}