ngx-toastr
Version:
<div align="center"> <img src="https://raw.githubusercontent.com/scttcper/ngx-toastr/master/misc/documentation-assets/ngx-toastr-example.png" width="300" alt="Angular Toastr"> <br> <h1>ngx-toastr</h1> <br> <a href="https://www.npmjs.org/package/
1 lines • 68.4 kB
Source Map (JSON)
{"version":3,"file":"ngx-toastr.mjs","sources":["../../../projects/ngx-toastr/src/lib/toastr/toast.directive.ts","../../../projects/ngx-toastr/src/lib/toastr/toastr-config.ts","../../../projects/ngx-toastr/src/lib/portal/portal.ts","../../../projects/ngx-toastr/src/lib/portal/dom-portal-host.ts","../../../projects/ngx-toastr/src/lib/overlay/overlay-container.ts","../../../projects/ngx-toastr/src/lib/overlay/overlay-ref.ts","../../../projects/ngx-toastr/src/lib/overlay/overlay.ts","../../../projects/ngx-toastr/src/lib/toastr/toast-ref.ts","../../../projects/ngx-toastr/src/lib/toastr/toastr.service.ts","../../../projects/ngx-toastr/src/lib/timeouts.service.ts","../../../projects/ngx-toastr/src/lib/toastr/base-toast/base-toast.component.ts","../../../projects/ngx-toastr/src/lib/toastr/base-toast/base-toast.component.html","../../../projects/ngx-toastr/src/lib/toastr/toast/toast.component.ts","../../../projects/ngx-toastr/src/lib/toastr/toast.provider.ts","../../../projects/ngx-toastr/src/lib/toastr/toastr.module.ts","../../../projects/ngx-toastr/src/lib/toastr/toast-noanimation/toast-noanimation.component.ts","../../../projects/ngx-toastr/src/public-api.ts","../../../projects/ngx-toastr/src/ngx-toastr.ts"],"sourcesContent":["import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[toastContainer]',\n exportAs: 'toastContainer',\n standalone: true,\n})\nexport class ToastContainerDirective {\n private el = inject(ElementRef);\n\n getContainerElement(): HTMLElement {\n return this.el.nativeElement;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { ComponentType } from '../portal/portal';\nimport { ToastRef } from './toast-ref';\n\nexport type ProgressAnimationType = 'increasing' | 'decreasing';\nexport type DisableTimoutType = boolean | 'timeOut' | 'extendedTimeOut';\n\n/**\n * Configuration for an individual toast.\n */\nexport interface IndividualConfig<ConfigPayload = unknown> {\n /**\n * disable both timeOut and extendedTimeOut\n * default: false\n */\n disableTimeOut: DisableTimoutType;\n /**\n * toast time to live in milliseconds\n * default: 5000\n */\n timeOut: number;\n /**\n * toast show close button\n * default: false\n */\n closeButton: boolean;\n /**\n * time to close after a user hovers over toast\n * default: 1000\n */\n extendedTimeOut: number;\n /**\n * show toast progress bar\n * default: false\n */\n progressBar: boolean;\n\n /**\n * changes toast progress bar animation\n * default: decreasing\n */\n progressAnimation: ProgressAnimationType;\n\n /**\n * render html in toast message (possibly unsafe)\n * default: false\n */\n enableHtml: boolean;\n /**\n * css class on toast component\n * default: ngx-toastr\n */\n toastClass: string;\n /**\n * css class on toast container\n * default: toast-top-right\n */\n positionClass: string;\n /**\n * css class on toast title\n * default: toast-title\n */\n titleClass: string;\n /**\n * css class on toast message\n * default: toast-message\n */\n messageClass: string;\n /**\n * animation easing on toast\n * default: ease-in\n */\n easing: string;\n /**\n * animation ease time on toast\n * default: 300\n */\n easeTime: string | number;\n /**\n * clicking on toast dismisses it\n * default: true\n */\n tapToDismiss: boolean;\n /**\n * Angular toast component to be shown\n * default: Toast\n */\n toastComponent?: ComponentType<unknown>;\n /**\n * Helps show toast from a websocket or from event outside Angular\n * default: false\n */\n onActivateTick: boolean;\n /**\n * New toast placement\n * default: true\n */\n newestOnTop: boolean;\n\n /**\n * Payload to pass to the toast component\n */\n payload?: ConfigPayload;\n}\n\nexport interface ToastrIconClasses {\n error: string;\n info: string;\n success: string;\n warning: string;\n [key: string]: string;\n}\n\n/**\n * Global Toast configuration\n * Includes all IndividualConfig\n */\nexport interface GlobalConfig<C = unknown> extends IndividualConfig<C> {\n /**\n * max toasts opened. Toasts will be queued\n * Zero is unlimited\n * default: 0\n */\n maxOpened: number;\n /**\n * dismiss current toast when max is reached\n * default: false\n */\n autoDismiss: boolean;\n iconClasses: Partial<ToastrIconClasses>;\n /**\n * block duplicate messages\n * default: false\n */\n preventDuplicates: boolean;\n /**\n * display the number of duplicate messages\n * default: false\n */\n countDuplicates: boolean;\n /**\n * Reset toast timeout when there's a duplicate (preventDuplicates needs to be set to true)\n * default: false\n */\n resetTimeoutOnDuplicate: boolean;\n /**\n * consider the title of a toast when checking if duplicate\n * default: false\n */\n includeTitleDuplicates: boolean;\n}\n\n/**\n * Everything a toast needs to launch\n */\nexport class ToastPackage<ConfigPayload = unknown> {\n private _onTap = new Subject<void>();\n private _onAction = new Subject<unknown>();\n\n constructor(\n public toastId: number,\n public config: IndividualConfig<ConfigPayload>,\n public message: string | null | undefined,\n public title: string | undefined,\n public toastType: string,\n public toastRef: ToastRef<unknown>,\n ) {\n this.toastRef.afterClosed().subscribe(() => {\n this._onAction.complete();\n this._onTap.complete();\n });\n }\n\n /** Fired on click */\n triggerTap(): void {\n this._onTap.next();\n if (this.config.tapToDismiss) {\n this._onTap.complete();\n }\n }\n\n onTap(): Observable<void> {\n return this._onTap.asObservable();\n }\n\n /** available for use in custom toast */\n triggerAction(action?: unknown): void {\n this._onAction.next(action);\n }\n\n onAction(): Observable<unknown> {\n return this._onAction.asObservable();\n }\n}\n\nexport const DefaultNoComponentGlobalConfig: GlobalConfig = {\n maxOpened: 0,\n autoDismiss: false,\n newestOnTop: true,\n preventDuplicates: false,\n countDuplicates: false,\n resetTimeoutOnDuplicate: false,\n includeTitleDuplicates: false,\n\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning',\n },\n\n // Individual\n closeButton: false,\n disableTimeOut: false,\n timeOut: 5000,\n extendedTimeOut: 1000,\n enableHtml: false,\n progressBar: false,\n toastClass: 'ngx-toastr',\n positionClass: 'toast-top-right',\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n easing: 'ease-in',\n easeTime: 300,\n tapToDismiss: true,\n onActivateTick: false,\n progressAnimation: 'decreasing',\n};\n\nexport interface ToastToken {\n default: GlobalConfig;\n config: Partial<GlobalConfig>;\n}\n\nexport const TOAST_CONFIG = new InjectionToken<ToastToken>('ToastConfig');\n","import { ComponentRef, Injector, ViewContainerRef } from '@angular/core';\n\nexport type ComponentType<T> = new (...args: unknown[]) => T;\n\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nexport class ComponentPortal<T> {\n private _attachedHost?: BasePortalHost;\n /** The type of the component that will be instantiated for attachment. */\n component: ComponentType<T>;\n\n /**\n * [Optional] Where the attached component should live in Angular's *logical* component tree.\n * This is different from where the component *renders*, which is determined by the PortalHost.\n * The origin necessary when the host is outside of the Angular application context.\n */\n viewContainerRef!: ViewContainerRef;\n\n /** Injector used for the instantiation of the component. */\n injector: Injector;\n\n constructor(component: ComponentType<T>, injector: Injector) {\n this.component = component;\n this.injector = injector;\n }\n\n /** Attach this portal to a host. */\n attach(host: BasePortalHost, newestOnTop: boolean): ComponentRef<unknown> {\n this._attachedHost = host;\n return host.attach(this, newestOnTop);\n }\n\n /** Detach this portal from its host */\n detach() {\n const host = this._attachedHost;\n if (host) {\n this._attachedHost = undefined;\n return host.detach();\n }\n }\n\n /** Whether this portal is attached to a host. */\n get isAttached(): boolean {\n return this._attachedHost != null;\n }\n\n /**\n * Sets the PortalHost reference without performing `attach()`. This is used directly by\n * the PortalHost when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host?: BasePortalHost) {\n this._attachedHost = host;\n }\n}\n\n/**\n * Partial implementation of PortalHost that only deals with attaching a\n * ComponentPortal\n */\nexport abstract class BasePortalHost {\n /** The portal currently attached to the host. */\n private _attachedPortal?: ComponentPortal<unknown>;\n\n /** A function that will permanently dispose this host. */\n private _disposeFn?: () => void;\n\n attach(portal: ComponentPortal<unknown>, newestOnTop: boolean) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal, newestOnTop);\n }\n\n abstract attachComponentPortal<T>(\n portal: ComponentPortal<T>,\n newestOnTop: boolean,\n ): ComponentRef<T>;\n\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost();\n }\n\n this._attachedPortal = undefined;\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = undefined;\n }\n }\n\n setDisposeFn(fn: () => void) {\n this._disposeFn = fn;\n }\n}\n","import { ApplicationRef, createComponent, ComponentRef, EmbeddedViewRef } from '@angular/core';\nimport { BasePortalHost, ComponentPortal } from './portal';\n\n/**\n * A PortalHost for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n *\n * This is the only part of the portal core that directly touches the DOM.\n */\nexport class DomPortalHost extends BasePortalHost {\n constructor(\n private _hostDomElement: Element,\n private _appRef: ApplicationRef,\n ) {\n super();\n }\n\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n */\n attachComponentPortal<T>(portal: ComponentPortal<T>, newestOnTop: boolean): ComponentRef<T> {\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the ChangeDetector for that component to the application (which\n // happens automatically when using a ViewContainer).\n const componentRef = createComponent(portal.component, {\n environmentInjector: this._appRef.injector,\n elementInjector: portal.injector,\n });\n\n // When creating a component outside of a ViewContainer, we need to manually register\n // its ChangeDetector with the application. This API is unfortunately not yet published\n // in Angular core. The change detector must also be deregistered when the component\n // is destroyed to prevent memory leaks.\n this._appRef.attachView(componentRef.hostView);\n\n this.setDisposeFn(() => {\n this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n if (newestOnTop) {\n this._hostDomElement.insertBefore(\n this._getComponentRootNode(componentRef),\n this._hostDomElement.firstChild,\n );\n } else {\n this._hostDomElement.appendChild(this._getComponentRootNode(componentRef));\n }\n\n return componentRef;\n }\n\n /** Gets the root HTMLElement for an instantiated component. */\n private _getComponentRootNode(componentRef: ComponentRef<unknown>): HTMLElement {\n return (componentRef.hostView as EmbeddedViewRef<unknown>).rootNodes[0] as HTMLElement;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable, OnDestroy } from '@angular/core';\n\n/** Container inside which all toasts will render. */\n@Injectable({ providedIn: 'root' })\nexport class OverlayContainer implements OnDestroy {\n protected _document = inject(DOCUMENT);\n protected _containerElement!: HTMLElement;\n\n ngOnDestroy() {\n if (this._containerElement && this._containerElement.parentNode) {\n this._containerElement.parentNode.removeChild(this._containerElement);\n }\n }\n\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement(): HTMLElement {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body\n * and 'aria-live=\"polite\"'\n */\n protected _createContainer(): void {\n const container = this._document.createElement('div');\n container.classList.add('overlay-container');\n container.setAttribute('aria-live', 'polite');\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n}\n","import { ComponentRef } from '@angular/core';\nimport { BasePortalHost, ComponentPortal } from '../portal/portal';\n\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nexport class OverlayRef {\n constructor(private _portalHost: BasePortalHost) {}\n\n attach(portal: ComponentPortal<unknown>, newestOnTop = true): ComponentRef<unknown> {\n return this._portalHost.attach(portal, newestOnTop);\n }\n\n /**\n * Detaches an overlay from a portal.\n * @returns Resolves when the overlay has been detached.\n */\n detach() {\n return this._portalHost.detach();\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { ApplicationRef, inject, Injectable } from '@angular/core';\n\nimport { DomPortalHost } from '../portal/dom-portal-host';\nimport { ToastContainerDirective } from '../toastr/toast.directive';\nimport { OverlayContainer } from './overlay-container';\nimport { OverlayRef } from './overlay-ref';\n\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalHost, so any kind of Portal can be loaded into one.\n */\n@Injectable({ providedIn: 'root' })\nexport class Overlay {\n private _overlayContainer = inject(OverlayContainer);\n private _appRef = inject(ApplicationRef);\n private _document = inject(DOCUMENT);\n\n // Namespace panes by overlay container\n private _paneElements = new Map<ToastContainerDirective, Record<string, HTMLElement>>();\n\n /**\n * Creates an overlay.\n * @returns A reference to the created overlay.\n */\n create(positionClass?: string, overlayContainer?: ToastContainerDirective): OverlayRef {\n // get existing pane if possible\n return this._createOverlayRef(this.getPaneElement(positionClass, overlayContainer));\n }\n\n getPaneElement(positionClass = '', overlayContainer?: ToastContainerDirective): HTMLElement {\n if (!this._paneElements.get(overlayContainer as ToastContainerDirective)) {\n this._paneElements.set(overlayContainer as ToastContainerDirective, {});\n }\n\n if (!this._paneElements.get(overlayContainer as ToastContainerDirective)![positionClass]) {\n this._paneElements.get(overlayContainer as ToastContainerDirective)![positionClass] =\n this._createPaneElement(positionClass, overlayContainer);\n }\n\n return this._paneElements.get(overlayContainer as ToastContainerDirective)![positionClass];\n }\n\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n private _createPaneElement(\n positionClass: string,\n overlayContainer?: ToastContainerDirective,\n ): HTMLElement {\n const pane = this._document.createElement('div');\n\n pane.id = 'toast-container';\n pane.classList.add(positionClass);\n pane.classList.add('toast-container');\n\n if (!overlayContainer) {\n this._overlayContainer.getContainerElement().appendChild(pane);\n } else {\n overlayContainer.getContainerElement().appendChild(pane);\n }\n\n return pane;\n }\n\n /**\n * Create a DomPortalHost into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal host.\n * @returns A portal host for the given DOM element.\n */\n private _createPortalHost(pane: HTMLElement): DomPortalHost {\n return new DomPortalHost(pane, this._appRef);\n }\n\n /**\n * Creates an OverlayRef for an overlay in the given DOM element.\n * @param pane DOM element for the overlay\n */\n private _createOverlayRef(pane: HTMLElement): OverlayRef {\n return new OverlayRef(this._createPortalHost(pane));\n }\n}\n","import { Observable, Subject } from 'rxjs';\nimport { OverlayRef } from '../overlay/overlay-ref';\n\n/**\n * Reference to a toast opened via the Toastr service.\n */\nexport class ToastRef<T> {\n /** The instance of component opened into the toast. */\n componentInstance!: T;\n\n /** Count of duplicates of this toast */\n private duplicatesCount = 0;\n\n /** Subject for notifying the user that the toast has finished closing. */\n private _afterClosed = new Subject<void>();\n /** triggered when toast is activated */\n private _activate = new Subject<void>();\n /** notifies the toast that it should close before the timeout */\n private _manualClose = new Subject<void>();\n /** notifies the toast that it should reset the timeouts */\n private _resetTimeout = new Subject<void>();\n /** notifies the toast that it should count a duplicate toast */\n private _countDuplicate = new Subject<number>();\n\n constructor(private _overlayRef: OverlayRef) {}\n\n manualClose() {\n this._manualClose.next();\n this._manualClose.complete();\n }\n\n manualClosed(): Observable<unknown> {\n return this._manualClose.asObservable();\n }\n\n timeoutReset(): Observable<unknown> {\n return this._resetTimeout.asObservable();\n }\n\n countDuplicate(): Observable<number> {\n return this._countDuplicate.asObservable();\n }\n\n /**\n * Close the toast.\n */\n close(): void {\n this._overlayRef.detach();\n this._afterClosed.next();\n this._manualClose.next();\n this._afterClosed.complete();\n this._manualClose.complete();\n this._activate.complete();\n this._resetTimeout.complete();\n this._countDuplicate.complete();\n }\n\n /** Gets an observable that is notified when the toast is finished closing. */\n afterClosed(): Observable<void> {\n return this._afterClosed.asObservable();\n }\n\n isInactive() {\n return this._activate.closed;\n }\n\n activate() {\n this._activate.next();\n this._activate.complete();\n }\n\n /** Gets an observable that is notified when the toast has started opening. */\n afterActivate(): Observable<void> {\n return this._activate.asObservable();\n }\n\n /** Reset the toast timouts and count duplicates */\n onDuplicate(resetTimeout: boolean, countDuplicate: boolean) {\n if (resetTimeout) {\n this._resetTimeout.next();\n }\n if (countDuplicate) {\n this._countDuplicate.next(++this.duplicatesCount);\n }\n }\n}\n","import { ComponentRef, Injectable, Injector, NgZone, SecurityContext, inject } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { Observable } from 'rxjs';\n\nimport { Overlay } from '../overlay/overlay';\nimport { ComponentPortal } from '../portal/portal';\nimport { ToastRef } from './toast-ref';\nimport { ToastContainerDirective } from './toast.directive';\nimport {\n GlobalConfig,\n IndividualConfig,\n ToastPackage,\n ToastToken,\n TOAST_CONFIG,\n} from './toastr-config';\nimport type { ToastBase } from './base-toast/base-toast.component';\n\nexport interface ActiveToast<C> {\n /** Your Toast ID. Use this to close it individually */\n toastId: number;\n /** the title of your toast. Stored to prevent duplicates */\n title: string;\n /** the message of your toast. Stored to prevent duplicates */\n message: string;\n /** a reference to the component see portal.ts */\n portal: ComponentRef<C>;\n /** a reference to your toast */\n toastRef: ToastRef<C>;\n /** triggered when toast is active */\n onShown: Observable<void>;\n /** triggered when toast is destroyed */\n onHidden: Observable<void>;\n /** triggered on toast click */\n onTap: Observable<void>;\n /** available for your use in custom toast */\n onAction: Observable<unknown>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToastrService {\n private overlay = inject(Overlay);\n private _injector = inject(Injector);\n private sanitizer = inject(DomSanitizer);\n private ngZone = inject(NgZone);\n\n toastrConfig: GlobalConfig;\n currentlyActive = 0;\n toasts: ActiveToast<unknown>[] = [];\n overlayContainer?: ToastContainerDirective;\n previousToastMessage: string | undefined;\n private index = 0;\n\n constructor() {\n const token = inject<ToastToken>(TOAST_CONFIG);\n\n this.toastrConfig = {\n ...token.default,\n ...token.config,\n };\n if (token.config.iconClasses) {\n this.toastrConfig.iconClasses = {\n ...token.default.iconClasses,\n ...token.config.iconClasses,\n };\n }\n }\n /** show toast */\n show<C extends ToastBase = ToastBase, ConfigPayload = unknown>(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig<ConfigPayload>> = {},\n type = '',\n ) {\n return this._preBuildNotification(\n type,\n message,\n title,\n this.applyConfig(override),\n ) as ActiveToast<C> | null;\n }\n /** show successful toast */\n success<ConfigPayload = unknown>(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig<ConfigPayload>> = {},\n ) {\n const type = this.toastrConfig.iconClasses.success || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show error toast */\n error<ConfigPayload = unknown>(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig<ConfigPayload>> = {},\n ) {\n const type = this.toastrConfig.iconClasses.error || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show info toast */\n info<ConfigPayload = unknown>(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig<ConfigPayload>> = {},\n ) {\n const type = this.toastrConfig.iconClasses.info || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show warning toast */\n warning<ConfigPayload = unknown>(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig<ConfigPayload>> = {},\n ) {\n const type = this.toastrConfig.iconClasses.warning || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /**\n * Remove all or a single toast by id\n */\n clear(toastId?: number) {\n // Call every toastRef manualClose function\n for (const toast of this.toasts) {\n if (toastId !== undefined) {\n if (toast.toastId === toastId) {\n toast.toastRef.manualClose();\n return;\n }\n } else {\n toast.toastRef.manualClose();\n }\n }\n }\n /**\n * Remove and destroy a single toast by id\n */\n remove(toastId: number) {\n const found = this._findToast(toastId);\n if (!found) {\n return false;\n }\n found.activeToast.toastRef.close();\n this.toasts.splice(found.index, 1);\n this.currentlyActive = this.currentlyActive - 1;\n if (!this.toastrConfig.maxOpened || !this.toasts.length) {\n return false;\n }\n if (this.currentlyActive < this.toastrConfig.maxOpened && this.toasts[this.currentlyActive]) {\n const p = this.toasts[this.currentlyActive].toastRef;\n if (!p.isInactive()) {\n this.currentlyActive = this.currentlyActive + 1;\n p.activate();\n }\n }\n return true;\n }\n\n /**\n * Determines if toast message is already shown\n */\n findDuplicate(title = '', message = '', resetOnDuplicate: boolean, countDuplicates: boolean) {\n const { includeTitleDuplicates } = this.toastrConfig;\n\n for (const toast of this.toasts) {\n const hasDuplicateTitle = includeTitleDuplicates && toast.title === title;\n if ((!includeTitleDuplicates || hasDuplicateTitle) && toast.message === message) {\n toast.toastRef.onDuplicate(resetOnDuplicate, countDuplicates);\n return toast;\n }\n }\n\n return null;\n }\n\n /** create a clone of global config and apply individual settings */\n private applyConfig(override: Partial<IndividualConfig> = {}): GlobalConfig {\n return { ...this.toastrConfig, ...override };\n }\n\n /**\n * Find toast object by id\n */\n private _findToast(toastId: number): { index: number; activeToast: ActiveToast<unknown> } | null {\n for (let i = 0; i < this.toasts.length; i++) {\n if (this.toasts[i].toastId === toastId) {\n return { index: i, activeToast: this.toasts[i] };\n }\n }\n return null;\n }\n\n /**\n * Determines the need to run inside angular's zone then builds the toast\n */\n private _preBuildNotification(\n toastType: string,\n message: string | undefined,\n title: string | undefined,\n config: GlobalConfig,\n ): ActiveToast<unknown> | null {\n if (config.onActivateTick) {\n return this.ngZone.run(() => this._buildNotification(toastType, message, title, config));\n }\n return this._buildNotification(toastType, message, title, config);\n }\n\n /**\n * Creates and attaches toast data to component\n * returns the active toast, or in case preventDuplicates is enabled the original/non-duplicate active toast.\n */\n private _buildNotification(\n toastType: string,\n message: string | undefined,\n title: string | undefined,\n config: GlobalConfig,\n ): ActiveToast<unknown> | null {\n if (!config.toastComponent) {\n throw new Error('toastComponent required');\n }\n // max opened and auto dismiss = true\n // if timeout = 0 resetting it would result in setting this.hideTime = Date.now(). Hence, we only want to reset timeout if there is\n // a timeout at all\n const duplicate = this.findDuplicate(\n title,\n message,\n this.toastrConfig.resetTimeoutOnDuplicate && config.timeOut > 0,\n this.toastrConfig.countDuplicates,\n );\n if (\n ((this.toastrConfig.includeTitleDuplicates && title) || message) &&\n this.toastrConfig.preventDuplicates &&\n duplicate !== null\n ) {\n return duplicate;\n }\n\n this.previousToastMessage = message;\n let keepInactive = false;\n if (this.toastrConfig.maxOpened && this.currentlyActive >= this.toastrConfig.maxOpened) {\n keepInactive = true;\n if (this.toastrConfig.autoDismiss) {\n this.clear(this.toasts[0].toastId);\n }\n }\n\n const overlayRef = this.overlay.create(config.positionClass, this.overlayContainer);\n this.index = this.index + 1;\n let sanitizedMessage: string | undefined | null = message;\n if (message && config.enableHtml) {\n sanitizedMessage = this.sanitizer.sanitize(SecurityContext.HTML, message);\n }\n\n const toastRef = new ToastRef(overlayRef);\n const toastPackage = new ToastPackage(\n this.index,\n config,\n sanitizedMessage,\n title,\n toastType,\n toastRef,\n );\n\n /** New injector that contains an instance of `ToastPackage`. */\n const providers = [{ provide: ToastPackage, useValue: toastPackage }];\n const toastInjector = Injector.create({ providers, parent: this._injector });\n\n const component = new ComponentPortal(config.toastComponent, toastInjector);\n const portal = overlayRef.attach(component, config.newestOnTop);\n toastRef.componentInstance = portal.instance;\n const ins: ActiveToast<unknown> = {\n toastId: this.index,\n title: title || '',\n message: message || '',\n toastRef,\n onShown: toastRef.afterActivate(),\n onHidden: toastRef.afterClosed(),\n onTap: toastPackage.onTap(),\n onAction: toastPackage.onAction(),\n portal,\n };\n\n if (!keepInactive) {\n this.currentlyActive = this.currentlyActive + 1;\n setTimeout(() => {\n ins.toastRef.activate();\n });\n }\n\n this.toasts.push(ins);\n return ins;\n }\n}\n","import { inject, Injectable, NgZone } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class TimeoutsService {\n protected ngZone? = inject(NgZone);\n\n public setInterval(func: () => unknown, timeout: number): number {\n if (this.ngZone) {\n return this.ngZone.runOutsideAngular(() =>\n window.setInterval(() => this.runInsideAngular(func), timeout),\n );\n } else {\n return window.setInterval(() => func(), timeout);\n }\n }\n\n public setTimeout(func: () => unknown, timeout?: number): number {\n if (this.ngZone) {\n return this.ngZone.runOutsideAngular(() =>\n window.setTimeout(() => this.runInsideAngular(func), timeout),\n );\n } else {\n return window.setTimeout(() => func(), timeout);\n }\n }\n\n protected runInsideAngular(func: () => unknown) {\n if (this.ngZone) {\n this.ngZone.run(() => func());\n } else {\n func();\n }\n }\n}\n","import {\n ApplicationRef,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n linkedSignal,\n signal,\n type OnDestroy,\n} from '@angular/core';\nimport { ToastPackage, type IndividualConfig } from '../toastr-config';\nimport { ToastrService } from '../toastr.service';\nimport type { Subscription } from 'rxjs';\nimport { TimeoutsService } from '../../timeouts.service';\n\n@Component({\n selector: '[toast-component]',\n templateUrl: './base-toast.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'toastClasses()',\n '[style.display]': 'displayStyle()',\n '(mouseenter)': 'stickAround()',\n '(mouseleave)': 'delayedHideToast()',\n '(click)': 'tapToast()',\n },\n})\nexport class ToastBase<ConfigPayload = unknown> implements OnDestroy {\n public toastPackage = inject(ToastPackage);\n protected toastrService = inject(ToastrService);\n protected appRef = inject(ApplicationRef);\n protected timeoutsService = inject(TimeoutsService);\n\n duplicatesCount!: number;\n protected hideTime!: number;\n\n /** width of progress bar */\n readonly width = signal(-1);\n readonly state = signal<'inactive' | 'active' | 'removed'>('inactive');\n /** hides component when waiting to be displayed */\n readonly displayStyle = computed(() => (this.state() === 'inactive' ? 'none' : undefined));\n readonly message = computed(() => this.toastPackage.message);\n readonly title = computed(() => this.toastPackage.title);\n readonly options = linkedSignal<IndividualConfig<ConfigPayload>>(() => this.toastPackage.config);\n readonly originalTimeout = computed(() => this.toastPackage.config.timeOut);\n readonly toastClasses = computed(\n () => `${this.toastPackage.toastType} ${this.toastPackage.config.toastClass}`,\n );\n\n protected timeout: number | undefined;\n protected intervalId: number | undefined;\n\n protected afterActivateSubscription!: Subscription;\n protected manualClosedSubscription!: Subscription;\n protected timeoutResetSubscription!: Subscription;\n protected countDuplicateSubscription!: Subscription;\n\n constructor() {\n this.afterActivateSubscription = this.toastPackage.toastRef.afterActivate().subscribe(() => {\n this.activateToast();\n });\n this.manualClosedSubscription = this.toastPackage.toastRef.manualClosed().subscribe(() => {\n this.remove();\n });\n this.timeoutResetSubscription = this.toastPackage.toastRef.timeoutReset().subscribe(() => {\n this.resetTimeout();\n });\n this.countDuplicateSubscription = this.toastPackage.toastRef\n .countDuplicate()\n .subscribe(count => {\n this.duplicatesCount = count;\n });\n }\n\n public ngOnDestroy(): void {\n this.afterActivateSubscription.unsubscribe();\n this.manualClosedSubscription.unsubscribe();\n this.timeoutResetSubscription.unsubscribe();\n this.countDuplicateSubscription.unsubscribe();\n\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n }\n\n /**\n * activates toast and sets timeout\n */\n activateToast() {\n const options = this.options();\n this.state.set('active');\n\n if (\n !(options.disableTimeOut === true || options.disableTimeOut === 'timeOut') &&\n options.timeOut\n ) {\n this.timeout = this.timeoutsService.setTimeout(() => this.remove(), options.timeOut);\n this.hideTime = new Date().getTime() + options.timeOut;\n if (options.progressBar) {\n this.intervalId = this.timeoutsService.setInterval(() => this.updateProgress(), 10);\n }\n }\n }\n\n /**\n * updates progress bar width\n */\n updateProgress() {\n const options = this.options();\n\n if (this.width() === 0 || this.width() === 100 || !options.timeOut) {\n return;\n }\n const now = new Date().getTime();\n const remaining = this.hideTime - now;\n this.width.set((remaining / options.timeOut) * 100);\n if (options.progressAnimation === 'increasing') {\n this.width.update(width => 100 - width);\n }\n if (this.width() <= 0) {\n this.width.set(0);\n }\n if (this.width() >= 100) {\n this.width.set(100);\n }\n }\n\n resetTimeout() {\n const options = this.options();\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state.set('active');\n\n this.options.update(options => ({ ...options, timeOut: this.originalTimeout() }));\n this.timeout = this.timeoutsService.setTimeout(() => this.remove(), this.originalTimeout());\n this.hideTime = new Date().getTime() + (this.originalTimeout() || 0);\n this.width.set(-1);\n if (options.progressBar)\n this.intervalId = this.timeoutsService.setInterval(() => this.updateProgress(), 10);\n }\n\n /**\n * tells toastrService to remove this toast after animation time\n */\n remove() {\n if (this.state() === 'removed') return;\n\n clearTimeout(this.timeout);\n this.state.set('removed');\n this.timeout = this.timeoutsService.setTimeout(() =>\n this.toastrService.remove(this.toastPackage.toastId),\n );\n }\n\n tapToast() {\n if (this.state() === 'removed') return;\n\n this.toastPackage.triggerTap();\n if (this.options().tapToDismiss) {\n this.remove();\n }\n }\n\n stickAround() {\n if (this.state() === 'removed') return;\n\n if (this.options().disableTimeOut !== 'extendedTimeOut') {\n clearTimeout(this.timeout);\n this.options.update(options => ({ ...options, timeOut: 0 }));\n this.hideTime = 0;\n\n // disable progressBar\n clearInterval(this.intervalId);\n this.width.set(0);\n }\n }\n\n delayedHideToast() {\n const options = this.options();\n if (\n options.disableTimeOut === true ||\n options.disableTimeOut === 'extendedTimeOut' ||\n options.extendedTimeOut === 0 ||\n this.state() === 'removed'\n ) {\n return;\n }\n const extendedTimeOut = options.extendedTimeOut;\n this.timeout = this.timeoutsService.setTimeout(() => this.remove(), extendedTimeOut);\n this.options.update(options => ({ ...options, timeOut: extendedTimeOut }));\n this.hideTime = new Date().getTime() + (extendedTimeOut || 0);\n this.width.set(-1);\n if (options.progressBar) {\n this.intervalId = this.timeoutsService.setInterval(() => this.updateProgress(), 10);\n }\n }\n}\n","@let _options = options();\n\n@if (_options.closeButton) {\n <button (click)=\"remove()\" type=\"button\" class=\"toast-close-button\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n}\n\n@if (title()) {\n <div [class]=\"_options.titleClass\" [attr.aria-label]=\"title()\">\n {{ title() }}\n\n @if (duplicatesCount) {\n <ng-container>[{{ duplicatesCount + 1 }}]</ng-container>\n }\n </div>\n}\n\n@if (message()) {\n @if (_options.enableHtml) {\n <div role=\"alert\" [class]=\"_options.messageClass\" [innerHTML]=\"message()\"></div>\n } @else {\n <div role=\"alert\" [class]=\"_options.messageClass\" [attr.aria-label]=\"message()\">\n {{ message() }}\n </div>\n }\n}\n\n@if (_options.progressBar) {\n <div>\n <div class=\"toast-progress\" [style.width]=\"width() + '%'\"></div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, inject } from '@angular/core';\nimport { ToastBase } from '../base-toast/base-toast.component';\n\n@Component({\n selector: '[toast-component]',\n templateUrl: '../base-toast/base-toast.component.html',\n styleUrl: './toast.component.scss',\n host: {\n '[style.--animation-easing]': 'params.easing',\n '[style.--animation-duration]': 'params.easeTime + \"ms\"',\n 'animate.enter': 'toast-in',\n },\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Toast<ConfigPayload = unknown> extends ToastBase<ConfigPayload> {\n readonly params = { easeTime: this.toastPackage.config.easeTime, easing: 'ease-in' };\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n override remove(): void {\n if (this.state() === 'removed') return;\n\n clearTimeout(this.timeout);\n this.state.set('removed');\n this.elementRef.nativeElement.classList.add('toast-out');\n this.timeout = this.timeoutsService.setTimeout(\n () => this.toastrService.remove(this.toastPackage.toastId),\n +this.params.easeTime,\n );\n }\n}\n","import { DefaultNoComponentGlobalConfig, GlobalConfig, TOAST_CONFIG } from './toastr-config';\nimport { EnvironmentProviders, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { Toast } from './toast/toast.component';\n\nexport const DefaultGlobalConfig: GlobalConfig = {\n ...DefaultNoComponentGlobalConfig,\n toastComponent: Toast,\n};\n\n/**\n * @description\n * Provides the `TOAST_CONFIG` token with the given config.\n *\n * @param config The config to configure toastr.\n * @returns The environment providers.\n *\n * @example\n * ```ts\n * import { provideToastr } from 'ngx-toastr';\n *\n * bootstrap(AppComponent, {\n * providers: [\n * provideToastr({\n * timeOut: 2000,\n * positionClass: 'toast-top-right',\n * }),\n * ],\n * })\n */\nexport const provideToastr = (config: Partial<GlobalConfig> = {}): EnvironmentProviders => {\n const providers: Provider[] = [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultGlobalConfig,\n config,\n },\n },\n ];\n\n return makeEnvironmentProviders(providers);\n};\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { Toast } from './toast/toast.component';\nimport { DefaultNoComponentGlobalConfig, GlobalConfig, TOAST_CONFIG } from './toastr-config';\nimport { provideToastr } from './toast.provider';\n\n@NgModule({\n imports: [Toast],\n exports: [Toast],\n})\nexport class ToastrModule {\n static forRoot(config: Partial<GlobalConfig> = {}): ModuleWithProviders<ToastrModule> {\n return {\n ngModule: ToastrModule,\n providers: [provideToastr(config)],\n };\n }\n}\n\n@NgModule({})\nexport class ToastrComponentlessModule {\n static forRoot(config: Partial<GlobalConfig> = {}): ModuleWithProviders<ToastrModule> {\n return {\n ngModule: ToastrModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultNoComponentGlobalConfig,\n config,\n },\n },\n ],\n };\n }\n}\n","import { ModuleWithProviders } from '@angular/core';\nimport { NgModule } from '@angular/core';\nimport { DefaultNoComponentGlobalConfig, GlobalConfig, TOAST_CONFIG } from '../toastr-config';\nimport { ToastBase as ToastNoAnimation } from '../base-toast/base-toast.component';\n\nexport const DefaultNoAnimationsGlobalConfig: GlobalConfig = {\n ...DefaultNoComponentGlobalConfig,\n toastComponent: ToastNoAnimation,\n};\n\n@NgModule({\n imports: [ToastNoAnimation],\n exports: [ToastNoAnimation],\n})\nexport class ToastNoAnimationModule {\n static forRoot(config: Partial<GlobalConfig> = {}): ModuleWithProviders<ToastNoAnimationModule> {\n return {\n ngModule: ToastNoAnimationModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultNoAnimationsGlobalConfig,\n config,\n },\n },\n ],\n };\n }\n}\n\nexport { ToastNoAnimation };\n","/*\n * Public API Surface of ngx-toastr\n */\n\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ToastNoAnimation"],"mappings":"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"}