{"version":3,"file":"acontplus-ng-notifications.mjs","sources":["../../../../packages/ng-notifications/src/lib/config/toastr-config.ts","../../../../packages/ng-notifications/src/lib/config/snackbar-config.ts","../../../../packages/ng-notifications/src/lib/providers/notification-provider.ts","../../../../packages/ng-notifications/src/lib/providers/toastr-provider.ts","../../../../packages/ng-notifications/src/lib/providers/snackbar-provider.ts","../../../../packages/ng-notifications/src/lib/services/theme-detector.ts","../../../../packages/ng-notifications/src/lib/providers/sweetalert-provider.ts","../../../../packages/ng-notifications/src/lib/services/notification-service.ts","../../../../packages/ng-notifications/src/lib/providers.ts","../../../../packages/ng-notifications/src/acontplus-ng-notifications.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { IndividualConfig } from 'ngx-toastr';\n\nexport type ToastrNotificationConfig = Partial<IndividualConfig>;\n\nexport const TOASTR_NOTIFICATION_CONFIG = new InjectionToken<ToastrNotificationConfig>(\n  'toastr-notification-config',\n  {\n    providedIn: 'root',\n    factory: () => ({\n      positionClass: 'toast-bottom-center',\n      timeOut: 5000,\n      extendedTimeOut: 1500,\n      closeButton: true,\n      newestOnTop: true,\n    }),\n  },\n);\n","import { InjectionToken } from '@angular/core';\nimport { MatSnackBarConfig } from '@angular/material/snack-bar';\n\nexport interface SnackbarConfig extends MatSnackBarConfig {\n  readonly defaultAction?: string;\n  readonly iconEnabled?: boolean;\n  readonly titleEnabled?: boolean;\n}\n\nexport const DEFAULT_SNACKBAR_CONFIG: SnackbarConfig = {\n  duration: 5000,\n  horizontalPosition: 'center',\n  verticalPosition: 'bottom',\n  panelClass: [],\n  defaultAction: 'Close',\n  iconEnabled: true,\n  titleEnabled: true,\n};\n\nexport const SNACKBAR_CONFIG = new InjectionToken<SnackbarConfig>('acontplus-snackbar-config', {\n  providedIn: 'root',\n  factory: () => DEFAULT_SNACKBAR_CONFIG,\n});\n","import { Injectable, InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport type { NotificationProvider, NotificationResult } from '@acontplus/ui-kit';\nimport {\n  NotificationCallProps,\n  SweetAlertConfig,\n} from '../types/notification.types';\n\nexport const NOTIFICATION_CONFIG = new InjectionToken<NotificationProviderConfig>(\n  'NOTIFICATION_CONFIG',\n);\n\nexport interface NotificationProviderConfig {\n  defaultProvider: NotificationProvider;\n  toastr?: unknown;\n  snackbar?: unknown;\n  sweetalert?: {\n    defaultTheme?: 'auto' | 'material-ui' | 'material-ui-light' | 'material-ui-dark' | string;\n    [key: string]: unknown;\n  };\n}\n\n@Injectable()\nexport abstract class NotificationProviderBase {\n  abstract success(props: NotificationCallProps): void | Observable<NotificationResult>;\n  abstract error(props: NotificationCallProps): void | Observable<NotificationResult>;\n  abstract warning(props: NotificationCallProps): void | Observable<NotificationResult>;\n  abstract info(props: NotificationCallProps): void | Observable<NotificationResult>;\n  abstract confirm(config: SweetAlertConfig): Observable<NotificationResult>;\n}\n","import { Injectable, inject } from '@angular/core';\nimport { IndividualConfig, ToastrService } from 'ngx-toastr';\nimport { Observable, of } from 'rxjs';\nimport { NotificationProviderBase } from './notification-provider';\nimport { TOASTR_NOTIFICATION_CONFIG } from '../config/toastr-config';\nimport type { NotificationResult } from '@acontplus/ui-kit';\nimport {\n  NotificationCallProps,\n  SweetAlertConfig,\n} from '../types/notification.types';\n\nexport type ToastrType = 'success' | 'error' | 'warning' | 'info';\n\nexport interface ToastrShowProps {\n  readonly type: ToastrType;\n  readonly message: string;\n  readonly title?: string;\n  readonly options?: Partial<IndividualConfig>;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ToastrProvider extends NotificationProviderBase {\n  private readonly toastrService = inject(ToastrService);\n  private readonly config = inject(TOASTR_NOTIFICATION_CONFIG);\n\n  /**\n   * Generic show method for dynamic toast types\n   */\n  show(props: ToastrShowProps): void {\n    const { type, message, title, options: overrideOptions } = props;\n    const finalOptions = { ...this.config, ...overrideOptions };\n\n    this.toastrService[type](message, title, finalOptions);\n  }\n\n  success(props: NotificationCallProps): void {\n    this.show({\n      type: 'success',\n      message: props.message,\n      title: props.title,\n      options: props.config as Partial<IndividualConfig>,\n    });\n  }\n\n  error(props: NotificationCallProps): void {\n    this.show({\n      type: 'error',\n      message: props.message,\n      title: props.title,\n      options: props.config as Partial<IndividualConfig>,\n    });\n  }\n\n  warning(props: NotificationCallProps): void {\n    this.show({\n      type: 'warning',\n      message: props.message,\n      title: props.title,\n      options: props.config as Partial<IndividualConfig>,\n    });\n  }\n\n  info(props: NotificationCallProps): void {\n    this.show({\n      type: 'info',\n      message: props.message,\n      title: props.title,\n      options: props.config as Partial<IndividualConfig>,\n    });\n  }\n\n  confirm(config: SweetAlertConfig): Observable<NotificationResult> {\n    const result = confirm(`${config.title || ''}\\n${config.message}`);\n    return of({ isConfirmed: result });\n  }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Observable, of } from 'rxjs';\nimport { NotificationProviderBase } from './notification-provider';\nimport { SNACKBAR_CONFIG, SnackbarConfig } from '../config/snackbar-config';\nimport type { NotificationResult } from '@acontplus/ui-kit';\nimport {\n  NotificationCallProps,\n  SweetAlertConfig,\n} from '../types/notification.types';\nimport { SnackbarProps } from '../models/notification';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class SnackbarProvider extends NotificationProviderBase {\n  private readonly snackBar = inject(MatSnackBar);\n  private readonly config = inject(SNACKBAR_CONFIG);\n\n  /**\n   * Display a snackbar with specific type and configuration\n   */\n  show(props: SnackbarProps): void {\n    const {\n      type,\n      message,\n      title,\n      action = this.config.defaultAction,\n      config: userConfig = {},\n    } = props;\n\n    const typeClass = `acontplus-snackbar-${type}`;\n    const panelClasses = this.buildPanelClasses(typeClass, userConfig.panelClass);\n\n    const finalConfig = {\n      ...this.config,\n      ...userConfig,\n      panelClass: panelClasses,\n    };\n\n    const displayMessage = this.buildMessage(message, title);\n    this.snackBar.open(displayMessage, action, finalConfig);\n  }\n\n  success(props: NotificationCallProps): void {\n    this.show({\n      type: 'success',\n      message: props.message,\n      title: props.title,\n      config: props.config as Partial<SnackbarConfig>,\n    });\n  }\n\n  error(props: NotificationCallProps): void {\n    this.show({\n      type: 'error',\n      message: props.message,\n      title: props.title,\n      config: props.config as Partial<SnackbarConfig>,\n    });\n  }\n\n  warning(props: NotificationCallProps): void {\n    this.show({\n      type: 'warning',\n      message: props.message,\n      title: props.title,\n      config: props.config as Partial<SnackbarConfig>,\n    });\n  }\n\n  info(props: NotificationCallProps): void {\n    this.show({\n      type: 'info',\n      message: props.message,\n      title: props.title,\n      config: props.config as Partial<SnackbarConfig>,\n    });\n  }\n\n  confirm(config: SweetAlertConfig): Observable<NotificationResult> {\n    const result = confirm(`${config.title || ''}\\n${config.message}`);\n    return of({ isConfirmed: result });\n  }\n\n  private buildPanelClasses(typeClass: string, userClasses?: string | string[]): string[] {\n    const classes = ['acontplus-snackbar', typeClass];\n\n    if (userClasses) {\n      const normalizedClasses = Array.isArray(userClasses) ? userClasses : [userClasses];\n      classes.push(...normalizedClasses);\n    }\n\n    return classes;\n  }\n\n  private buildMessage(message: string, title?: string): string {\n    if (!this.config.titleEnabled || !title) {\n      return message;\n    }\n    return `${title}: ${message}`;\n  }\n}\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ThemeDetector {\n  private themeSubject = new BehaviorSubject<string>('material-ui-light');\n  private readonly platformId = inject(PLATFORM_ID);\n  public theme$ = this.themeSubject.asObservable();\n\n  constructor() {\n    if (isPlatformBrowser(this.platformId)) {\n      this.detectTheme();\n      this.watchThemeChanges();\n    }\n  }\n\n  private detectTheme(): void {\n    if (!isPlatformBrowser(this.platformId)) return;\n\n    const isDark =\n      document.body.classList.contains('dark-theme') ||\n      document.documentElement.classList.contains('dark-theme');\n    this.themeSubject.next(isDark ? 'material-ui-dark' : 'material-ui-light');\n  }\n\n  private watchThemeChanges(): void {\n    if (!isPlatformBrowser(this.platformId)) return;\n\n    const observer = new MutationObserver(() => this.detectTheme());\n    observer.observe(document.body, { attributes: true, attributeFilter: ['class'] });\n    observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });\n  }\n\n  getCurrentTheme(): string {\n    return this.themeSubject.value;\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport Swal from 'sweetalert2';\nimport {\n  NotificationProviderBase,\n  NotificationProviderConfig,\n  NOTIFICATION_CONFIG,\n} from './notification-provider';\nimport type { NotificationResult, NotificationType } from '@acontplus/ui-kit';\nimport {\n  NotificationCallProps,\n  SweetAlertConfig,\n} from '../types/notification.types';\nimport { ThemeDetector } from '../services/theme-detector';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class SweetalertProvider extends NotificationProviderBase {\n  private config = inject<NotificationProviderConfig>(NOTIFICATION_CONFIG);\n  private themeDetector = inject(ThemeDetector);\n\n  private getTheme(): string {\n    const configTheme = (this.config.sweetalert as any)?.defaultTheme;\n\n    // Default to 'auto' if no theme specified\n    if (!configTheme || configTheme === 'auto') {\n      // Auto-detect theme based on CSS classes\n      const isDark =\n        document?.body?.classList?.contains('dark-theme') ||\n        document?.documentElement?.classList?.contains('dark-theme');\n      return isDark ? 'material-ui-dark' : 'material-ui-light';\n    }\n\n    return configTheme;\n  }\n  success(props: NotificationCallProps): Observable<NotificationResult> {\n    return this.showAlert({ ...props, type: 'success' });\n  }\n\n  error(props: NotificationCallProps): Observable<NotificationResult> {\n    return this.showAlert({ ...props, type: 'error' });\n  }\n\n  warning(props: NotificationCallProps): Observable<NotificationResult> {\n    return this.showAlert({ ...props, type: 'warning' });\n  }\n\n  info(props: NotificationCallProps): Observable<NotificationResult> {\n    return this.showAlert({ ...props, type: 'info' });\n  }\n\n  confirm(config: SweetAlertConfig): Observable<NotificationResult> {\n    const swalConfig = {\n      title: config.title,\n      text: config.message,\n      html: config.html,\n      icon: 'question' as const,\n      showCancelButton: config.showCancelButton !== false,\n      confirmButtonText: config.confirmButtonText || 'Confirm',\n      cancelButtonText: config.cancelButtonText || 'Cancel',\n      allowOutsideClick: config.allowOutsideClick !== false,\n      customClass: config.customClass ? { container: config.customClass } : undefined,\n      theme: this.getTheme(),\n    };\n\n    return from(Swal.fire(swalConfig as any)).pipe(\n      map((result) => ({\n        isConfirmed: result.isConfirmed,\n        isDenied: result.isDenied,\n        isDismissed: result.isDismissed,\n        value: result.value,\n      })),\n    );\n  }\n\n  private showAlert(\n    props: NotificationCallProps & { type: NotificationType },\n  ): Observable<NotificationResult> {\n    const configOptions = props.config as Record<string, unknown> | undefined;\n    const { duration, ...otherConfig } = configOptions || {};\n    const swalConfig = {\n      title: props.title,\n      text: props.message,\n      icon: props.type as 'success' | 'error' | 'warning' | 'info',\n      theme: this.getTheme(),\n      ...(duration ? { timer: duration as number, timerProgressBar: true } : {}),\n      ...otherConfig,\n    };\n\n    return from(Swal.fire(swalConfig as any)).pipe(\n      map((result) => ({\n        isConfirmed: result.isConfirmed,\n        isDenied: result.isDenied,\n        isDismissed: result.isDismissed,\n        value: result.value,\n      })),\n    );\n  }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n  NotificationProviderBase,\n  NOTIFICATION_CONFIG,\n  NotificationProviderConfig,\n} from '../providers/notification-provider';\nimport { ToastrProvider } from '../providers/toastr-provider';\nimport { SnackbarProvider } from '../providers/snackbar-provider';\nimport { SweetalertProvider } from '../providers/sweetalert-provider';\nimport {\n  NOTIFICATION_MESSAGES,\n  type NotificationProvider,\n  type NotificationResult,\n  type NotificationType,\n} from '@acontplus/ui-kit';\nimport {\n  NotificationCallProps,\n  SweetAlertConfig,\n} from '../types/notification.types';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NotificationService {\n  private config = inject<NotificationProviderConfig>(NOTIFICATION_CONFIG);\n  private toastrProvider = inject(ToastrProvider);\n  private snackbarProvider = inject(SnackbarProvider);\n  private sweetAlertProvider = inject(SweetalertProvider);\n\n  private providers = new Map<NotificationProvider, NotificationProviderBase>();\n  private currentProvider: NotificationProviderBase;\n\n  // Expose predefined messages\n  readonly messages = NOTIFICATION_MESSAGES;\n\n  constructor() {\n    this.providers.set('toastr', this.toastrProvider);\n    this.providers.set('snackbar', this.snackbarProvider);\n    this.providers.set('sweetalert', this.sweetAlertProvider);\n\n    this.currentProvider =\n      this.providers.get(this.config.defaultProvider) || this.sweetAlertProvider;\n  }\n\n  setProvider(provider: NotificationProvider): void {\n    const providerInstance = this.providers.get(provider);\n    if (providerInstance) {\n      this.currentProvider = providerInstance;\n    }\n  }\n\n  success(props: NotificationCallProps): void | Observable<NotificationResult> {\n    return this.currentProvider.success(props);\n  }\n\n  error(props: NotificationCallProps): void | Observable<NotificationResult> {\n    return this.currentProvider.error(props);\n  }\n\n  warning(props: NotificationCallProps): void | Observable<NotificationResult> {\n    return this.currentProvider.warning(props);\n  }\n\n  info(props: NotificationCallProps): void | Observable<NotificationResult> {\n    return this.currentProvider.info(props);\n  }\n\n  confirm(config: SweetAlertConfig): Observable<NotificationResult> {\n    return this.currentProvider.confirm(config);\n  }\n\n  show(\n    props: { type: NotificationType } & NotificationCallProps,\n  ): void | Observable<NotificationResult> {\n    return this.currentProvider[props.type]({\n      message: props.message,\n      title: props.title,\n      config: props.config,\n    });\n  }\n\n  // Provider-specific methods maintaining your current API\n  get toastr(): ToastrProvider {\n    return this.providers.get('toastr') as ToastrProvider;\n  }\n\n  get snackbar(): SnackbarProvider {\n    return this.providers.get('snackbar') as SnackbarProvider;\n  }\n\n  get sweetAlert(): SweetalertProvider {\n    return this.providers.get('sweetalert') as SweetalertProvider;\n  }\n\n  // Quick methods using predefined messages\n  quickSave(type: 'success' | 'error' = 'success'): void {\n    const message = type === 'success' ? this.messages.SUCCESS.SAVE : this.messages.ERROR.SAVE;\n    this.currentProvider[type]({ message });\n  }\n\n  quickDelete(type: 'success' | 'error' = 'success'): void {\n    const message = type === 'success' ? this.messages.SUCCESS.DELETE : this.messages.ERROR.DELETE;\n    this.currentProvider[type]({ message });\n  }\n\n  quickUpdate(type: 'success' | 'error' = 'success'): void {\n    const message = type === 'success' ? this.messages.SUCCESS.UPDATE : this.messages.ERROR.UPDATE;\n    this.currentProvider[type]({ message });\n  }\n\n  networkError(): void {\n    this.currentProvider.error({\n      message: this.messages.ERROR.NETWORK,\n      title: 'Connection Error',\n    });\n  }\n\n  sessionWarning(): void {\n    this.currentProvider.warning({\n      message: this.messages.WARNING.SESSION_EXPIRING,\n      title: 'Session Alert',\n    });\n  }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { provideToastr, GlobalConfig, ToastNoAnimation } from 'ngx-toastr';\nimport { NotificationService } from './services/notification-service';\nimport { NOTIFICATION_CONFIG, NotificationProviderConfig } from './providers/notification-provider';\nimport { ToastrProvider } from './providers/toastr-provider';\nimport { SnackbarProvider } from './providers/snackbar-provider';\nimport { SweetalertProvider } from './providers/sweetalert-provider';\n\n// Default toastr config (can be overridden)\nconst DEFAULT_TOASTR_CONFIG: Partial<GlobalConfig> = {\n  positionClass: 'toast-bottom-center',\n  timeOut: 5000,\n  extendedTimeOut: 1500,\n  closeButton: true,\n  newestOnTop: true,\n  preventDuplicates: true,\n  progressBar: true,\n  toastComponent: ToastNoAnimation,\n};\n\nexport function provideNotifications(\n  config?: Partial<NotificationProviderConfig>,\n  toastrConfig?: Partial<GlobalConfig>, // New optional param for dynamic toastr options\n): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    provideToastr({\n      ...DEFAULT_TOASTR_CONFIG,\n      ...toastrConfig, // Merge with user-provided config for flexibility\n    }),\n\n    // Notification providers\n    ToastrProvider,\n    SnackbarProvider,\n    SweetalertProvider,\n\n    // Configuration\n    {\n      provide: NOTIFICATION_CONFIG,\n      useValue: {\n        defaultProvider: 'toastr',\n        ...config,\n      },\n    },\n\n    // Main service\n    NotificationService,\n  ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}