ngx-kit 5.0.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/angle-selector/README.md +34 -0
- package/box-shadow/README.md +33 -0
- package/color-picker/README.md +52 -0
- package/data-table/README.md +120 -0
- package/date-picker/README.md +74 -0
- package/dialog/README.md +94 -169
- package/drawer-menu/README.md +76 -0
- package/dropzone/README.md +59 -0
- package/fesm2022/ngx-kit-angle-selector.mjs +2 -2
- package/fesm2022/ngx-kit-angle-selector.mjs.map +1 -1
- package/fesm2022/ngx-kit-box-shadow.mjs +28 -27
- package/fesm2022/ngx-kit-box-shadow.mjs.map +1 -1
- package/fesm2022/ngx-kit-color-picker.mjs +173 -43
- package/fesm2022/ngx-kit-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-kit-data-table.mjs +9 -2
- package/fesm2022/ngx-kit-data-table.mjs.map +1 -1
- package/fesm2022/ngx-kit-date-picker.mjs +120 -86
- package/fesm2022/ngx-kit-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-kit-dialog.mjs +38 -7
- package/fesm2022/ngx-kit-dialog.mjs.map +1 -1
- package/fesm2022/ngx-kit-drawer-menu.mjs +190 -0
- package/fesm2022/ngx-kit-drawer-menu.mjs.map +1 -0
- package/fesm2022/ngx-kit-dropzone.mjs +272 -0
- package/fesm2022/ngx-kit-dropzone.mjs.map +1 -0
- package/fesm2022/ngx-kit-form-field.mjs +87 -0
- package/fesm2022/ngx-kit-form-field.mjs.map +1 -0
- package/fesm2022/ngx-kit-gallery.mjs +419 -0
- package/fesm2022/ngx-kit-gallery.mjs.map +1 -0
- package/fesm2022/ngx-kit-gradient-picker.mjs +12 -4
- package/fesm2022/ngx-kit-gradient-picker.mjs.map +1 -1
- package/fesm2022/ngx-kit-image-editor.mjs +501 -0
- package/fesm2022/ngx-kit-image-editor.mjs.map +1 -0
- package/fesm2022/ngx-kit-menu.mjs +9 -4
- package/fesm2022/ngx-kit-menu.mjs.map +1 -1
- package/fesm2022/ngx-kit-message.mjs +50 -24
- package/fesm2022/ngx-kit-message.mjs.map +1 -1
- package/fesm2022/ngx-kit-notify.mjs +1 -4
- package/fesm2022/ngx-kit-notify.mjs.map +1 -1
- package/fesm2022/ngx-kit-shared.mjs +126 -83
- package/fesm2022/ngx-kit-shared.mjs.map +1 -1
- package/fesm2022/ngx-kit-time-picker.mjs +562 -0
- package/fesm2022/ngx-kit-time-picker.mjs.map +1 -0
- package/fesm2022/ngx-kit.mjs.map +1 -1
- package/gallery/README.md +71 -0
- package/gradient-picker/README.md +41 -0
- package/image-editor/README.md +44 -0
- package/menu/README.md +85 -0
- package/message/README.md +70 -0
- package/notify/README.md +56 -0
- package/package.json +25 -1
- package/shared/README.md +117 -0
- package/styles/all.css +27 -0
- package/styles/image-viewer.css +12 -0
- package/types/ngx-kit-box-shadow.d.ts +1 -2
- package/types/ngx-kit-data-table.d.ts +1 -0
- package/types/ngx-kit-date-picker.d.ts +1 -1
- package/types/ngx-kit-dialog.d.ts +1 -0
- package/types/ngx-kit-drawer-menu.d.ts +101 -0
- package/types/ngx-kit-dropzone.d.ts +84 -0
- package/types/ngx-kit-form-field.d.ts +31 -0
- package/types/ngx-kit-gallery.d.ts +168 -0
- package/types/ngx-kit-image-editor.d.ts +175 -0
- package/types/ngx-kit-menu.d.ts +1 -0
- package/types/ngx-kit-message.d.ts +13 -3
- package/types/ngx-kit-notify.d.ts +0 -1
- package/types/ngx-kit-shared.d.ts +44 -13
- package/types/ngx-kit-time-picker.d.ts +150 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-kit-message.mjs","sources":["../../../projects/libs/message/models/tokens.ts","../../../projects/libs/message/models/message-result.ts","../../../projects/libs/message/models/icons.ts","../../../projects/libs/message/components/message.component.ts","../../../projects/libs/message/components/message.component.html","../../../projects/libs/message/services/apply-default.ts","../../../projects/libs/message/services/message.service.ts","../../../projects/libs/message/message-facade.ts","../../../projects/libs/message/message-provider.ts","../../../projects/libs/message/models/message-options.ts","../../../projects/libs/message/ngx-kit-message.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { IMessageOptions } from './message-options.interface';\r\nimport { NgxMessageService } from '../public-api';\r\nimport { MessageOptions } from './message-options';\r\n\r\nexport const NGX_MESSAGE_CONFIGS = new InjectionToken<IMessageOptions>('ngx-message-configs');\r\n\r\nexport const NGX_MESSAGE_API = new InjectionToken<NgxMessageService>('NgxMessageService');\r\nexport const NGX_MESSAGE_DEFAULT_OPTIONS: MessageOptions = {\r\n useOverlay: true,\r\n title: '',\r\n text: '',\r\n html: '',\r\n backdrop: true,\r\n icon: 'None',\r\n width: undefined,\r\n allowOutsideClick: true,\r\n allowEscapeKey: true,\r\n allowEnterKey: true,\r\n showConfirmButton: true,\r\n showDenyButton: false,\r\n showCancelButton: false,\r\n confirmButtonText: 'Ok',\r\n denyButtonText: 'No',\r\n cancelButtonText: 'Cancel',\r\n confirmButtonColor: '',\r\n denyButtonColor: '',\r\n cancelButtonColor: '',\r\n confirmButtonAriaLabel: '',\r\n denyButtonAriaLabel: '',\r\n cancelButtonAriaLabel: '',\r\n reverseButtons: false,\r\n showCloseButton: true,\r\n containerClass: '',\r\n};\r\n","import { EventEmitter } from '@angular/core';\r\n\r\nexport type MessageOutput<T = any> = {\r\n id: number;\r\n close: () => void;\r\n afterClose: EventEmitter<MessageResult>;\r\n};\r\nexport interface MessageResult<T = any> {\r\n readonly isConfirmed: boolean;\r\n readonly isDenied: boolean;\r\n readonly isDismissed: boolean;\r\n /**\r\n * @description ❌⚠️NOT Implemented!⚠️❌\r\n */\r\n readonly value?: T;\r\n readonly dismiss?: DismissReason;\r\n}\r\n\r\n/**\r\n * An enum of possible reasons that can explain an alert dismissal.\r\n */\r\nexport enum DismissReason {\r\n cancel,\r\n backdrop,\r\n close,\r\n /**\r\n * @description ❌⚠️NOT Implemented!⚠️❌\r\n */\r\n esc,\r\n /**\r\n * @description ❌⚠️NOT Implemented!⚠️❌\r\n */\r\n timer,\r\n}\r\n","// 'None' | 'success' | 'error' | 'warning' | 'info' | 'question' | 'loading';\r\nexport const ICONS: { [key: string]: string } = {\r\n None: '',\r\n success: `<svg viewBox=\"0 0 46 46\"><path class=\"draw\" d=\"M12 24 L20 32 L34 15\"/></svg>`,\r\n error: `<svg viewBox=\"0 0 46 46\"><path class=\"draw\" d=\"M14 14 L32 32\"/><path class=\"draw\" style=\"animation-delay:.55s\" d=\"M32 14 L14 32\"/></svg>`,\r\n warning: `<svg viewBox=\"0 0 46 46\"><path class=\"draw\" d=\"M23 10 L23 26\"/><circle class=\"dot-mark\" cx=\"23\" cy=\"34\" r=\"3.4\"/></svg>`,\r\n info: `<svg viewBox=\"0 0 46 46\"><circle class=\"dot-mark\" cx=\"23\" cy=\"12\" r=\"3.2\" style=\"animation-delay:.28s\"/><path class=\"draw\" style=\"animation-delay:.4s\" d=\"M23 20 L23 36\"/></svg>`,\r\n question: `<svg viewBox=\"0 0 320 512\"><path fill=\"currentColor\" d=\"M204.3 32.01H96c-52.94 0-96 43.06-96 96c0 17.67 14.31 31.1 32 31.1s32-14.32 32-31.1c0-17.64 14.34-32 32-32h108.3C232.8 96.01 256 119.2 256 147.8c0 19.72-10.97 37.47-30.5 47.33L127.8 252.4C117.1 258.2 112 268.7 112 280v40c0 17.67 14.31 31.99 32 31.99s32-14.32 32-31.99V298.3L256 251.3c39.47-19.75 64-59.42 64-103.5C320 83.95 268.1 32.01 204.3 32.01zM144 400c-22.09 0-40 17.91-40 40s17.91 39.1 40 39.1s40-17.9 40-39.1S166.1 400 144 400z\"/></svg>`,\r\n loading: `<div class=\"spinner-wrap\"><div class=\"spinner\"></div></div>`,\r\n};\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n DOCUMENT,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n OnInit,\r\n signal,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { IMessageOptions } from '../models/message-options.interface';\r\nimport { Subject } from 'rxjs';\r\nimport { MessageResult, DismissReason } from '../models/message-result';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS } from '../models/tokens';\r\nimport { ICONS } from '../models/icons';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { makeConfetti } from 'ngx-kit/shared';\r\n\r\n@Component({\r\n selector: 'ngx-message',\r\n templateUrl: 'message.component.html',\r\n styleUrls: ['./message.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [CommonModule],\r\n providers: [\r\n {\r\n provide: NGX_MESSAGE_CONFIGS,\r\n useValue: NGX_MESSAGE_DEFAULT_OPTIONS,\r\n },\r\n ],\r\n})\r\nexport class NgxMessageComponent implements OnInit, AfterViewInit {\r\n icon?: SafeHtml;\r\n showIcon = signal(true);\r\n options!: IMessageOptions;\r\n confetti = viewChild<ElementRef<HTMLDivElement>>('confetti');\r\n index = 0;\r\n\r\n protected sanitizer = inject(DomSanitizer);\r\n protected doc = inject(DOCUMENT);\r\n\r\n private readonly _onClose = new Subject<{ index: number; result: MessageResult<any> }>();\r\n public onClose = this._onClose.asObservable();\r\n\r\n ngOnInit(): void {\r\n this.showIcon.update((x) => (x = this.options.icon != 'None'));\r\n this.icon = this.sanitizer.bypassSecurityTrustHtml(ICONS[this.options.icon ?? 'None']);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const confetti = this.confetti()?.nativeElement;\r\n if (this.options.icon == 'success' && confetti) {\r\n makeConfetti(this.doc, confetti);\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onScapeKey(event: Event) {\r\n if (this.options.allowEscapeKey) {\r\n this.onCancel();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.enter', ['$event'])\r\n onEnterKey(event: Event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (this.options.allowEnterKey) {\r\n if (this.options.showConfirmButton) {\r\n this.onConfirm();\r\n } else if (this.options.showDenyButton) {\r\n this.onDeny();\r\n } else {\r\n this.onCancel();\r\n }\r\n }\r\n }\r\n\r\n onConfirm() {\r\n this._onClose.next({\r\n index: this.index,\r\n result: {\r\n isConfirmed: true,\r\n isDismissed: false,\r\n isDenied: false,\r\n dismiss: DismissReason.close,\r\n },\r\n });\r\n }\r\n onCancel() {\r\n this._onClose.next({\r\n index: this.index,\r\n result: {\r\n isConfirmed: false,\r\n isDismissed: true,\r\n isDenied: false,\r\n dismiss: DismissReason.cancel,\r\n },\r\n });\r\n }\r\n onDeny() {\r\n this._onClose.next({\r\n index: this.index,\r\n result: {\r\n isConfirmed: false,\r\n isDismissed: false,\r\n isDenied: true,\r\n dismiss: DismissReason.close,\r\n },\r\n });\r\n }\r\n close() {\r\n this.onCancel();\r\n }\r\n\r\n onOutSideClick() {\r\n if (this.options.allowOutsideClick) {\r\n this.onCancel();\r\n }\r\n }\r\n innerOnClick(ev: Event) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n }\r\n}\r\n","<div\r\n class=\"ngx-msg-overlay show\"\r\n (click)=\"onOutSideClick()\"\r\n [ngClass]=\"options.containerClass\"\r\n [class.has-backdrop]=\"options.backdrop\"\r\n [attr.data-type]=\"options.icon\">\r\n <div class=\"ngx-msg-modal\" (click)=\"innerOnClick($event)\">\r\n <div class=\"confetti\" #confetti></div>\r\n @if (options.showCloseButton) {\r\n <button class=\"close-x\" (click)=\"close()\" aria-label=\"Close\">✕</button>\r\n }\r\n @if (showIcon()) {\r\n <div class=\"icon-stage\">\r\n <div class=\"icon-ring\"></div>\r\n <div class=\"icon-disc\" [innerHTML]=\"icon\"></div>\r\n </div>\r\n }\r\n <h2>{{ options.title }}</h2>\r\n <p class=\"desc\">\r\n {{ options.text }}\r\n <span [innerHTML]=\"options.html\"></span>\r\n </p>\r\n\r\n <div class=\"ngx-msg-actions\">\r\n @if (options.showCancelButton) {\r\n <button\r\n class=\"btn btn-ghost\"\r\n (click)=\"onCancel()\"\r\n [attr.aria-label]=\"options.cancelButtonAriaLabel\">\r\n {{ options.cancelButtonText }}\r\n </button>\r\n }\r\n @if (options.showDenyButton) {\r\n <button\r\n class=\"btn btn-ghost\"\r\n (click)=\"onDeny()\"\r\n [attr.aria-label]=\"options.denyButtonAriaLabel\">\r\n {{ options.denyButtonText }}\r\n </button>\r\n }\r\n @if (options.showConfirmButton) {\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"onConfirm()\"\r\n [attr.aria-label]=\"options.confirmButtonAriaLabel\">\r\n {{ options.confirmButtonText }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","\r\nexport function applyDefaultConfig(config: any, defaultConfig: any): any {\r\n var config = JSON.parse(JSON.stringify(config));\r\n for (let key in defaultConfig) {\r\n if (config[key] === undefined || config[key] === null || config[key] === '') {\r\n config[key] = defaultConfig[key];\r\n } else if (typeof config[key] === 'object') {\r\n config[key] = applyDefaultConfig(config[key], defaultConfig[key]);\r\n }\r\n }\r\n return config;\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentRef,\r\n createComponent,\r\n EmbeddedViewRef,\r\n EnvironmentInjector,\r\n EventEmitter,\r\n Inject,\r\n Injectable,\r\n Injector,\r\n} from '@angular/core';\r\nimport { NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS } from '../models/tokens';\r\nimport { IMessageOptions } from '../models/message-options.interface';\r\nimport { MessageOutput, MessageResult } from '../models/message-result';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { NgxMessageComponent } from '../components/message.component';\r\nimport { applyDefaultConfig } from './apply-default';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NgxMessageService {\r\n currentAdIndex = -1;\r\n alerts: ComponentRef<NgxMessageComponent>[] = [];\r\n insertedId = 0;\r\n constructor(\r\n private appRef: ApplicationRef,\r\n private injector: Injector,\r\n private envInjector: EnvironmentInjector,\r\n @Inject(DOCUMENT) private _doc: Document,\r\n ) {}\r\n\r\n public show<T = any>(c?: IMessageOptions): MessageOutput<T> {\r\n let d = applyDefaultConfig(\r\n this.injector.get(NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS),\r\n NGX_MESSAGE_DEFAULT_OPTIONS,\r\n );\r\n const config = applyDefaultConfig(c, d);\r\n\r\n const componentRef = createComponent(NgxMessageComponent, {\r\n environmentInjector: this.envInjector,\r\n });\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n const payload: MessageOutput<T> = {\r\n close: () => componentRef.instance.close(),\r\n id: this.insertedId,\r\n afterClose: new EventEmitter(),\r\n };\r\n this.appendDialogComponentToBody(componentRef, config);\r\n componentRef.instance.options = config;\r\n componentRef.instance.index = this.insertedId;\r\n componentRef.instance.onClose.subscribe((result) => {\r\n this.removeDialogComponentFromBody(result.index);\r\n payload.afterClose.emit(result.result);\r\n });\r\n this.alerts.push(componentRef);\r\n\r\n this.insertedId++;\r\n return payload;\r\n }\r\n\r\n private removeDialogComponentFromBody(index: number): void {\r\n if (this.alerts[index]) {\r\n const domElem = (this.alerts[index].hostView as EmbeddedViewRef<any>)\r\n .rootNodes[0] as HTMLElement;\r\n\r\n // قبل از destroy باید hidePopover صدا بزنیم\r\n if (domElem.popover === 'manual') {\r\n try {\r\n domElem.hidePopover();\r\n } catch {}\r\n }\r\n\r\n this.appRef.detachView(this.alerts[index].hostView);\r\n this.alerts[index].destroy();\r\n }\r\n }\r\n\r\n private appendDialogComponentToBody(\r\n componentRef: ComponentRef<NgxMessageComponent>,\r\n config: IMessageOptions,\r\n ) {\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n if (config.containerClass) {\r\n for (let c of config.containerClass.split(' ')) {\r\n if (c.trim()) domElem.classList.add(c);\r\n }\r\n }\r\n this._doc.body.appendChild(domElem);\r\n if (config.useOverlay) {\r\n domElem.popover = 'manual';\r\n domElem.showPopover();\r\n }\r\n }\r\n\r\n closeAll() {\r\n for (let i = 0; i < this.alerts.length; i++) {\r\n this.removeDialogComponentFromBody(i);\r\n }\r\n }\r\n}\r\n","import { Injector } from '@angular/core';\nimport { NGX_MESSAGE_API } from './models/tokens';\nimport { IMessageOptions } from './models/message-options.interface';\n\n/**\n * Static facade so call sites can use: MSG.warn('msg', opts)\n * Module will set the service instance in its constructor.\n */\nexport class MSG {\n static injector: Injector;\n\n static show<T = any>(options?: IMessageOptions) {\n if (!MSG.injector) {\n throw new Error(\n 'ngx-kit: Error on EnvironmentProvider. Ensure \"provideMessage()\" in root provider.',\n );\n }\n\n return MSG.injector.get(NGX_MESSAGE_API).show<T>(options);\n }\n\n static fire(options?: IMessageOptions) {\n return this.show(options);\n }\n\n static info(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'info',\n title,\n text,\n ...options,\n });\n }\n\n static success(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'success',\n title,\n text,\n ...options,\n });\n }\n static warning(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'warning',\n title,\n text,\n ...options,\n });\n }\n static error(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'error',\n title,\n text,\n ...options,\n });\n }\n static question(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'question',\n title,\n text,\n ...options,\n });\n }\n static loading(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'loading',\n title,\n text,\n ...options,\n });\n }\n}\n","import {\r\n EnvironmentProviders,\r\n inject,\r\n Injector,\r\n makeEnvironmentProviders,\r\n provideEnvironmentInitializer,\r\n} from '@angular/core';\r\nimport { IMessageOptions } from './models/message-options.interface';\r\nimport {\r\n NGX_MESSAGE_API,\r\n NGX_MESSAGE_CONFIGS,\r\n NGX_MESSAGE_DEFAULT_OPTIONS,\r\n} from './models/tokens';\r\nimport { NgxMessageService } from './services/message.service';\r\nimport { MSG as MessageFacade } from './message-facade';\r\n\r\nexport function provideMessage(options?: IMessageOptions): EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n {\r\n provide: NGX_MESSAGE_CONFIGS,\r\n useValue: { ...NGX_MESSAGE_DEFAULT_OPTIONS, ...(options || {}) },\r\n },\r\n {\r\n provide: NGX_MESSAGE_API,\r\n useExisting: NgxMessageService,\r\n },\r\n provideEnvironmentInitializer(() => {\r\n MessageFacade.injector = inject(Injector);\r\n }),\r\n ]);\r\n}\r\n","import { MessageIcon } from './MessageIcon';\r\nimport { IMessageOptions } from './message-options.interface';\r\n\r\n\r\nexport class MessageOptions implements IMessageOptions {\r\n public constructor(private config?: IMessageOptions) {\r\n //config = { ...(new MessageOptions()), ...config };\r\n }\r\n /**\r\n * add popover manual to set alert dialog container to top layer\r\n * - usefull when using alert modal in angular material dialog\r\n *\r\n */\r\n useOverlay?: boolean;\r\n title?: string = '';\r\n text?: string = '';\r\n html?: string | HTMLElement = '';\r\n backdrop?: boolean = true;\r\n icon?: MessageIcon;\r\n width?: number | string;\r\n allowOutsideClick?: boolean = true;\r\n allowEscapeKey?: boolean = true;\r\n allowEnterKey?: boolean = true;\r\n showConfirmButton?: boolean = true;\r\n showDenyButton?: boolean = false;\r\n showCancelButton?: boolean = false;\r\n confirmButtonText: string = 'Ok';\r\n denyButtonText?: string = 'No';\r\n cancelButtonText?: string = 'Cancel';\r\n confirmButtonColor?: string;\r\n denyButtonColor?: string;\r\n cancelButtonColor?: string;\r\n confirmButtonAriaLabel?: string = '';\r\n denyButtonAriaLabel?: string = '';\r\n cancelButtonAriaLabel?: string = '';\r\n reverseButtons?: boolean = false;\r\n showCloseButton?: boolean = false;\r\n containerClass?: string = '';\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DOCUMENT","MessageFacade"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-kit-message.mjs","sources":["../../../projects/libs/message/models/tokens.ts","../../../projects/libs/message/models/message-result.ts","../../../projects/libs/message/models/icons.ts","../../../projects/libs/message/components/message.component.ts","../../../projects/libs/message/components/message.component.html","../../../projects/libs/message/services/apply-default.ts","../../../projects/libs/message/services/message.service.ts","../../../projects/libs/message/message-facade.ts","../../../projects/libs/message/message-provider.ts","../../../projects/libs/message/models/message-options.ts","../../../projects/libs/message/ngx-kit-message.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { IMessageOptions } from './message-options.interface';\nimport { NgxMessageService } from '../public-api';\nimport { MessageOptions } from './message-options';\n\nexport const NGX_MESSAGE_CONFIGS = new InjectionToken<IMessageOptions>('ngx-message-configs');\n\nexport const NGX_MESSAGE_API = new InjectionToken<NgxMessageService>('NgxMessageService');\nexport const NGX_MESSAGE_DEFAULT_OPTIONS: MessageOptions = {\n useOverlay: true,\n title: '',\n text: '',\n html: '',\n backdrop: true,\n icon: 'None',\n width: undefined,\n allowOutsideClick: true,\n allowEscapeKey: true,\n allowEnterKey: true,\n showConfirmButton: true,\n showDenyButton: false,\n showCancelButton: false,\n confirmButtonText: 'Ok',\n denyButtonText: 'No',\n cancelButtonText: 'Cancel',\n confirmButtonColor: '',\n denyButtonColor: '',\n cancelButtonColor: '',\n confirmButtonAriaLabel: '',\n denyButtonAriaLabel: '',\n cancelButtonAriaLabel: '',\n reverseButtons: false,\n showCloseButton: true,\n containerClass: '',\n};\n","import { EventEmitter } from '@angular/core';\n\nexport type MessageOutput<T = any> = {\n id: number;\n close: () => void;\n afterClose: EventEmitter<MessageResult>;\n};\nexport interface MessageResult<T = any> {\n readonly isConfirmed: boolean;\n readonly isDenied: boolean;\n readonly isDismissed: boolean;\n /**\n * @description ❌⚠️NOT Implemented!⚠️❌\n */\n readonly value?: T;\n readonly dismiss?: DismissReason;\n}\n\n/**\n * An enum of possible reasons that can explain an alert dismissal.\n */\nexport enum DismissReason {\n cancel,\n backdrop,\n close,\n /**\n * @description ❌⚠️NOT Implemented!⚠️❌\n */\n esc,\n /**\n * @description ❌⚠️NOT Implemented!⚠️❌\n */\n timer,\n}\n","// 'None' | 'success' | 'error' | 'warning' | 'info' | 'question' | 'loading';\nexport const ICONS: { [key: string]: string } = {\n None: '',\n success: `<svg viewBox=\"0 0 46 46\"><path class=\"draw\" d=\"M12 24 L20 32 L34 15\"/></svg>`,\n error: `<svg viewBox=\"0 0 46 46\"><path class=\"draw\" d=\"M14 14 L32 32\"/><path class=\"draw\" style=\"animation-delay:.55s\" d=\"M32 14 L14 32\"/></svg>`,\n warning: `<svg viewBox=\"0 0 46 46\"><path class=\"draw\" d=\"M23 10 L23 26\"/><circle class=\"dot-mark\" cx=\"23\" cy=\"34\" r=\"3.4\"/></svg>`,\n info: `<svg viewBox=\"0 0 46 46\"><circle class=\"dot-mark\" cx=\"23\" cy=\"12\" r=\"3.2\" style=\"animation-delay:.28s\"/><path class=\"draw\" style=\"animation-delay:.4s\" d=\"M23 20 L23 36\"/></svg>`,\n question: `<svg viewBox=\"0 0 320 512\"><path fill=\"currentColor\" d=\"M204.3 32.01H96c-52.94 0-96 43.06-96 96c0 17.67 14.31 31.1 32 31.1s32-14.32 32-31.1c0-17.64 14.34-32 32-32h108.3C232.8 96.01 256 119.2 256 147.8c0 19.72-10.97 37.47-30.5 47.33L127.8 252.4C117.1 258.2 112 268.7 112 280v40c0 17.67 14.31 31.99 32 31.99s32-14.32 32-31.99V298.3L256 251.3c39.47-19.75 64-59.42 64-103.5C320 83.95 268.1 32.01 204.3 32.01zM144 400c-22.09 0-40 17.91-40 40s17.91 39.1 40 39.1s40-17.9 40-39.1S166.1 400 144 400z\"/></svg>`,\n loading: `<div class=\"spinner-wrap\"><div class=\"spinner\"></div></div>`,\n};\n","import {\n AfterViewInit,\n Component,\n DOCUMENT,\n ElementRef,\n HostListener,\n inject,\n OnInit,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { IMessageOptions } from '../models/message-options.interface';\nimport { Subject } from 'rxjs';\nimport { MessageResult, DismissReason } from '../models/message-result';\nimport { CommonModule } from '@angular/common';\nimport { NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS } from '../models/tokens';\nimport { ICONS } from '../models/icons';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { makeConfetti } from 'ngx-kit/shared';\nimport { NgxMessageService } from '../services/message.service';\n\n@Component({\n selector: 'ngx-message',\n templateUrl: 'message.component.html',\n styleUrls: ['./message.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [CommonModule],\n providers: [\n {\n provide: NGX_MESSAGE_CONFIGS,\n useValue: NGX_MESSAGE_DEFAULT_OPTIONS,\n },\n ],\n})\nexport class NgxMessageComponent implements OnInit, AfterViewInit {\n icon?: SafeHtml;\n showIcon = signal(true);\n options!: IMessageOptions;\n confetti = viewChild<ElementRef<HTMLDivElement>>('confetti');\n index = 0;\n\n protected sanitizer = inject(DomSanitizer);\n protected doc = inject(DOCUMENT);\n private readonly messageService = inject(NgxMessageService);\n\n private readonly _onClose = new Subject<{ index: number; result: MessageResult<any> }>();\n public onClose = this._onClose.asObservable();\n\n ngOnInit(): void {\n this.showIcon.update((x) => (x = this.options.icon != 'None'));\n this.icon = this.sanitizer.bypassSecurityTrustHtml(ICONS[this.options.icon ?? 'None']);\n }\n\n ngAfterViewInit(): void {\n const confetti = this.confetti()?.nativeElement;\n if (this.options.icon == 'success' && confetti) {\n makeConfetti(this.doc, confetti);\n }\n }\n\n /**\n * وقتی چند تا پیام همزمان باز باشن، هرکدوم listener خودشو روی document\n * داشت — پس یه فشردن Escape/Enter، رویداد رو به *همهشون* همزمان میفرستاد،\n * نه فقط آخرین پیامی که باز شده (رفتار طبیعیِ یه استکِ مودال باید این باشه\n * که فقط بالاترین لایه به کیبورد واکنش نشون بده). این چک همون چیزیه که\n * OverlayService با getLastDialog() برای اورلیها انجام میده.\n */\n private isTopmost(): boolean {\n const ids = [...this.messageService.alerts.keys()];\n if (!ids.length) return true;\n return this.index === Math.max(...ids);\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n onScapeKey(event: Event) {\n if (this.options.allowEscapeKey && this.isTopmost()) {\n this.onCancel();\n }\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n onEnterKey(event: Event) {\n if (!this.isTopmost()) return;\n event.stopPropagation();\n event.preventDefault();\n if (this.options.allowEnterKey) {\n if (this.options.showConfirmButton) {\n this.onConfirm();\n } else if (this.options.showDenyButton) {\n this.onDeny();\n } else {\n this.onCancel();\n }\n }\n }\n\n onConfirm() {\n this._onClose.next({\n index: this.index,\n result: {\n isConfirmed: true,\n isDismissed: false,\n isDenied: false,\n dismiss: DismissReason.close,\n },\n });\n }\n onCancel() {\n this._onClose.next({\n index: this.index,\n result: {\n isConfirmed: false,\n isDismissed: true,\n isDenied: false,\n dismiss: DismissReason.cancel,\n },\n });\n }\n onDeny() {\n this._onClose.next({\n index: this.index,\n result: {\n isConfirmed: false,\n isDismissed: false,\n isDenied: true,\n dismiss: DismissReason.close,\n },\n });\n }\n close() {\n this.onCancel();\n }\n\n onOutSideClick() {\n if (this.options.allowOutsideClick) {\n this.onCancel();\n }\n }\n innerOnClick(ev: Event) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n}\n","<div\n class=\"ngx-msg-overlay show\"\n (click)=\"onOutSideClick()\"\n [ngClass]=\"options.containerClass\"\n [class.has-backdrop]=\"options.backdrop\"\n [attr.data-type]=\"options.icon\">\n <div class=\"ngx-msg-modal\" (click)=\"innerOnClick($event)\">\n <div class=\"confetti\" #confetti></div>\n @if (options.showCloseButton) {\n <button class=\"close-x\" (click)=\"close()\" aria-label=\"Close\">✕</button>\n }\n @if (showIcon()) {\n <div class=\"icon-stage\">\n <div class=\"icon-ring\"></div>\n <div class=\"icon-disc\" [innerHTML]=\"icon\"></div>\n </div>\n }\n <h2>{{ options.title }}</h2>\n <p class=\"desc\">\n {{ options.text }}\n <span [innerHTML]=\"options.html\"></span>\n </p>\n\n <div class=\"ngx-msg-actions\">\n @if (options.showCancelButton) {\n <button\n class=\"btn btn-ghost\"\n (click)=\"onCancel()\"\n [attr.aria-label]=\"options.cancelButtonAriaLabel\">\n {{ options.cancelButtonText }}\n </button>\n }\n @if (options.showDenyButton) {\n <button\n class=\"btn btn-ghost\"\n (click)=\"onDeny()\"\n [attr.aria-label]=\"options.denyButtonAriaLabel\">\n {{ options.denyButtonText }}\n </button>\n }\n @if (options.showConfirmButton) {\n <button\n class=\"btn btn-primary\"\n (click)=\"onConfirm()\"\n [attr.aria-label]=\"options.confirmButtonAriaLabel\">\n {{ options.confirmButtonText }}\n </button>\n }\n </div>\n </div>\n</div>\n","export function applyDefaultConfig(config: any, defaultConfig: any): any {\n var config = JSON.parse(JSON.stringify(config));\n for (let key in defaultConfig) {\n if (config[key] === undefined || config[key] === null || config[key] === '') {\n config[key] = defaultConfig[key];\n } else if (typeof config[key] === 'object') {\n config[key] = applyDefaultConfig(config[key], defaultConfig[key]);\n }\n }\n return config;\n}\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n EmbeddedViewRef,\n EnvironmentInjector,\n EventEmitter,\n Inject,\n Injectable,\n Injector,\n} from '@angular/core';\nimport { NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS } from '../models/tokens';\nimport { IMessageOptions } from '../models/message-options.interface';\nimport { MessageOutput, MessageResult } from '../models/message-result';\nimport { DOCUMENT } from '@angular/common';\nimport { NgxMessageComponent } from '../components/message.component';\nimport { applyDefaultConfig } from './apply-default';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxMessageService {\n // قبلاً یه آرایهی معمولی بود (`ComponentRef[]`) و removeDialogComponentFromBody\n // فقط componentRef رو destroy میکرد ولی هیچوقت از آرایه حذفش نمیکرد — یعنی\n // این سرویس (که providedIn:'root' و singleton سراسریه) به ازای هر پیامی که\n // تا حالا تو کل عمر اپ نشون داده شده، یک رفرنس destroy-شده رو برای همیشه نگه\n // میداشت: یک نشتی حافظهی پیوسته. با Map<id, ComponentRef> جایگزین شد که\n // با delete واقعاً entry رو آزاد میکنه؛ کلید هم شناسهی پایدارِ پیام (insertedId)\n // هست، نه موقعیتِ آرایه (که با splice ممکن بود جابهجا و نامعتبر بشه).\n alerts = new Map<number, ComponentRef<NgxMessageComponent>>();\n insertedId = 0;\n constructor(\n private appRef: ApplicationRef,\n private injector: Injector,\n private envInjector: EnvironmentInjector,\n @Inject(DOCUMENT) private _doc: Document,\n ) {}\n\n public show<T = any>(c?: IMessageOptions): MessageOutput<T> {\n let d = applyDefaultConfig(\n this.injector.get(NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS),\n NGX_MESSAGE_DEFAULT_OPTIONS,\n );\n const config = applyDefaultConfig(c, d);\n\n const componentRef = createComponent(NgxMessageComponent, {\n environmentInjector: this.envInjector,\n });\n\n this.appRef.attachView(componentRef.hostView);\n const id = this.insertedId++;\n const payload: MessageOutput<T> = {\n close: () => componentRef.instance.close(),\n id,\n afterClose: new EventEmitter(),\n };\n this.appendDialogComponentToBody(componentRef, config);\n componentRef.instance.options = config;\n componentRef.instance.index = id;\n componentRef.instance.onClose.subscribe((result) => {\n this.removeDialogComponentFromBody(result.index);\n payload.afterClose.emit(result.result);\n });\n this.alerts.set(id, componentRef);\n\n return payload;\n }\n\n private removeDialogComponentFromBody(id: number): void {\n const ref = this.alerts.get(id);\n if (!ref) return;\n\n const domElem = (ref.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n\n // قبل از destroy باید hidePopover صدا بزنیم\n if (domElem.popover === 'manual') {\n try {\n domElem.hidePopover();\n } catch {}\n }\n\n this.appRef.detachView(ref.hostView);\n ref.destroy();\n this.alerts.delete(id);\n }\n\n private appendDialogComponentToBody(\n componentRef: ComponentRef<NgxMessageComponent>,\n config: IMessageOptions,\n ) {\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n if (config.containerClass) {\n for (let c of config.containerClass.split(' ')) {\n if (c.trim()) domElem.classList.add(c);\n }\n }\n this._doc.body.appendChild(domElem);\n if (config.useOverlay) {\n domElem.popover = 'manual';\n domElem.showPopover();\n }\n }\n\n closeAll() {\n for (const id of [...this.alerts.keys()]) {\n this.removeDialogComponentFromBody(id);\n }\n }\n}\n","import { Injector } from '@angular/core';\nimport { NGX_MESSAGE_API } from './models/tokens';\nimport { IMessageOptions } from './models/message-options.interface';\n\n/**\n * Static facade so call sites can use: MSG.warn('msg', opts)\n * Module will set the service instance in its constructor.\n */\nexport class MSG {\n static injector: Injector;\n\n static show<T = any>(options?: IMessageOptions) {\n if (!MSG.injector) {\n throw new Error(\n 'ngx-kit: Error on EnvironmentProvider. Ensure \"provideMessage()\" in root provider.',\n );\n }\n\n return MSG.injector.get(NGX_MESSAGE_API).show<T>(options);\n }\n\n static fire(options?: IMessageOptions) {\n return this.show(options);\n }\n\n static info(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'info',\n title,\n text,\n ...options,\n });\n }\n\n static success(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'success',\n title,\n text,\n ...options,\n });\n }\n static warning(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'warning',\n title,\n text,\n ...options,\n });\n }\n static error(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'error',\n title,\n text,\n ...options,\n });\n }\n static question(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'question',\n title,\n text,\n ...options,\n });\n }\n static loading(title: string, text?: string, options?: IMessageOptions) {\n return this.show({\n icon: 'loading',\n title,\n text,\n ...options,\n });\n }\n}\n\nexport class Modal extends MSG {}\n","import {\n EnvironmentProviders,\n inject,\n Injector,\n makeEnvironmentProviders,\n provideEnvironmentInitializer,\n} from '@angular/core';\nimport { IMessageOptions } from './models/message-options.interface';\nimport { NGX_MESSAGE_API, NGX_MESSAGE_CONFIGS, NGX_MESSAGE_DEFAULT_OPTIONS } from './models/tokens';\nimport { NgxMessageService } from './services/message.service';\nimport { MSG as MessageFacade } from './message-facade';\nimport { Modal as ModalFacade } from './message-facade';\n\nexport function provideMessage(options?: IMessageOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: NGX_MESSAGE_CONFIGS,\n useValue: { ...NGX_MESSAGE_DEFAULT_OPTIONS, ...(options || {}) },\n },\n {\n provide: NGX_MESSAGE_API,\n useExisting: NgxMessageService,\n },\n provideEnvironmentInitializer(() => {\n MessageFacade.injector = inject(Injector);\n ModalFacade.injector = inject(Injector);\n }),\n ]);\n}\n","import { MessageIcon } from './MessageIcon';\nimport { IMessageOptions } from './message-options.interface';\n\nexport class MessageOptions implements IMessageOptions {\n public constructor(private config?: IMessageOptions) {\n //config = { ...(new MessageOptions()), ...config };\n }\n /**\n * add popover manual to set alert dialog container to top layer\n * - usefull when using alert modal in angular material dialog\n *\n */\n useOverlay?: boolean;\n title?: string = '';\n text?: string = '';\n html?: string | HTMLElement = '';\n backdrop?: boolean = true;\n icon?: MessageIcon;\n width?: number | string;\n allowOutsideClick?: boolean = true;\n allowEscapeKey?: boolean = true;\n allowEnterKey?: boolean = true;\n showConfirmButton?: boolean = true;\n showDenyButton?: boolean = false;\n showCancelButton?: boolean = false;\n confirmButtonText: string = 'Ok';\n denyButtonText?: string = 'No';\n cancelButtonText?: string = 'Cancel';\n confirmButtonColor?: string;\n denyButtonColor?: string;\n cancelButtonColor?: string;\n confirmButtonAriaLabel?: string = '';\n denyButtonAriaLabel?: string = '';\n cancelButtonAriaLabel?: string = '';\n reverseButtons?: boolean = false;\n showCloseButton?: boolean = false;\n containerClass?: string = '';\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DOCUMENT","MessageFacade","ModalFacade"],"mappings":"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"}
|
|
@@ -166,9 +166,6 @@ class NgxNotificationComponent {
|
|
|
166
166
|
div.appendChild(this.doc.createTextNode(input));
|
|
167
167
|
return div.textContent;
|
|
168
168
|
}
|
|
169
|
-
ngOnDestroyCleanup() {
|
|
170
|
-
this.clearTimer();
|
|
171
|
-
}
|
|
172
169
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxNotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
173
170
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: NgxNotificationComponent, isStandalone: true, selector: "ngx-notification", inputs: { payload: { classPropertyName: "payload", publicName: "payload", isSignal: true, isRequired: true, transformFunction: null }, containerClass: { classPropertyName: "containerClass", publicName: "containerClass", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onClose: "onClose", onFinish: "onFinish" }, viewQueries: [{ propertyName: "bar", first: true, predicate: ["bar"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"{{ containerClass }} {{ containerClass }}-{{ payload().type }} {{ showClass() }}\"\n role=\"status\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (click)=\"onTap()\"\n [attr.aria-live]=\"\n payload().type === 'error' || payload().type === 'warning' ? 'assertive' : 'polite'\n \"\n [attr.data-id]=\"payload().id\">\n <div class=\"ngx-notify-icon-container\">\n <div class=\"ngx-notify-icon\">\n @switch (payload().type) {\n @case ('success') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M235.3 331.3C229.1 337.6 218.9 337.6 212.7 331.3L148.7 267.3C142.4 261.1 142.4 250.9 148.7 244.7C154.9 238.4 165.1 238.4 171.3 244.7L224 297.4L340.7 180.7C346.9 174.4 357.1 174.4 363.3 180.7C369.6 186.9 369.6 197.1 363.3 203.3L235.3 331.3zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 32C132.3 32 32 132.3 32 256C32 379.7 132.3 480 256 480C379.7 480 480 379.7 480 256C480 132.3 379.7 32 256 32z\" />\n </svg>\n }\n @case ('error') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M180.7 180.7C186.9 174.4 197.1 174.4 203.3 180.7L256 233.4L308.7 180.7C314.9 174.4 325.1 174.4 331.3 180.7C337.6 186.9 337.6 197.1 331.3 203.3L278.6 255.1L331.3 308.7C337.6 314.9 337.6 325.1 331.3 331.3C325.1 337.6 314.9 337.6 308.7 331.3L256 278.6L203.3 331.3C197.1 337.6 186.9 337.6 180.7 331.3C174.4 325.1 174.4 314.9 180.7 308.7L233.4 255.1L180.7 203.3C174.4 197.1 174.4 186.9 180.7 180.7V180.7zM.0669 191.5C.0669 172.4 7.652 154.1 21.16 140.6L140.6 21.15C154.1 7.648 172.4 .0625 191.5 .0625H320.5C339.6 .0625 357.9 7.648 371.4 21.15L490.8 140.6C504.3 154.1 511.9 172.4 511.9 191.5V320.5C511.9 339.6 504.3 357.9 490.8 371.4L371.4 490.8C357.9 504.3 339.6 511.9 320.5 511.9H191.5C172.4 511.9 154.1 504.3 140.6 490.8L21.15 371.4C7.652 357.9 .0666 339.6 .0666 320.5L.0669 191.5zM43.78 163.2C36.28 170.7 32.07 180.9 32.07 191.5V320.5C32.07 331.1 36.28 341.3 43.78 348.8L163.2 468.2C170.7 475.7 180.9 479.9 191.5 479.9H320.5C331.1 479.9 341.3 475.7 348.8 468.2L468.2 348.8C475.7 341.3 479.9 331.1 479.9 320.5V191.5C479.9 180.9 475.7 170.7 468.2 163.2L348.8 43.78C341.3 36.28 331.1 32.06 320.5 32.06H191.5C180.9 32.06 170.7 36.28 163.2 43.78L43.78 163.2zM43.78 348.8L21.15 371.4z\" />\n </svg>\n }\n @case ('warning') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M256 360c-13.25 0-23.1 10.74-23.1 24c0 13.25 10.75 24 23.1 24c13.25 0 23.1-10.75 23.1-24C280 370.7 269.3 360 256 360zM256 320c8.843 0 15.1-7.156 15.1-16V160c0-8.844-7.155-16-15.1-16S240 151.2 240 160v144C240 312.8 247.2 320 256 320zM504.3 397.3L304.5 59.38C294.4 42.27 276.2 32.03 256 32C235.8 32 217.7 42.22 207.5 59.36l-199.9 338c-10.05 16.97-10.2 37.34-.4218 54.5C17.29 469.5 35.55 480 56.1 480h399.9c20.51 0 38.75-10.53 48.81-28.17C514.6 434.7 514.4 414.3 504.3 397.3zM476.1 435.1C472.7 443.5 464.8 448 455.1 448H56.1c-8.906 0-16.78-4.484-21.08-12c-4.078-7.156-4.015-15.3 .1562-22.36L235.1 75.66C239.4 68.36 247.2 64 256 64c0 0-.0156 0 0 0c8.765 .0156 16.56 4.359 20.86 11.64l199.9 338C480.1 420.7 481.1 428.8 476.1 435.1z\" />\n </svg>\n }\n @case ('info') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 480c-123.5 0-224-100.5-224-224s100.5-224 224-224s224 100.5 224 224S379.5 480 256 480zM256 184c13.25 0 24-10.74 24-24c0-13.25-10.75-24-24-24S232 146.7 232 160C232 173.3 242.7 184 256 184zM304 352h-32V240C272 231.2 264.8 224 256 224H224C215.2 224 208 231.2 208 240S215.2 256 224 256h16v96h-32C199.2 352 192 359.2 192 368C192 376.8 199.2 384 208 384h96c8.836 0 16-7.164 16-16C320 359.2 312.8 352 304 352z\" />\n </svg>\n }\n }\n </div>\n </div>\n\n <div class=\"ngx-notify-content\">\n <div class=\"ngx-notify-title\" [innerHTML]=\"safeMessage\"></div>\n <div class=\"ngx-notify-description\" [innerHTML]=\"safeDescription\"></div>\n </div>\n\n @if (payload().options.dismissible) {\n <div class=\"ngx-notify-close-container\">\n <button class=\"ngx-notify-close\" (click)=\"close($event)\" aria-label=\"close\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n fill=\"currentColor\"\n d=\"M315.3 411.3c-6.253 6.253-16.37 6.253-22.63 0L160 278.6l-132.7 132.7c-6.253 6.253-16.37 6.253-22.63 0c-6.253-6.253-6.253-16.37 0-22.63L137.4 256L4.69 123.3c-6.253-6.253-6.253-16.37 0-22.63c6.253-6.253 16.37-6.253 22.63 0L160 233.4l132.7-132.7c6.253-6.253 16.37-6.253 22.63 0c6.253 6.253 6.253 16.37 0 22.63L182.6 256l132.7 132.7C321.6 394.9 321.6 405.1 315.3 411.3z\" />\n </svg>\n </button>\n </div>\n }\n\n <div class=\"ngx-notify-progress\">\n <div class=\"progress-bar\" #bar></div>\n </div>\n</div>\n", styles: [":host{display:block;margin:8px 0;--ngx-notify-content-bg: light-dark(#ffffff, #262b35);--ngx-notify-content-fg: light-dark(#000, #fff)}.ngx-notify{display:flex;min-width:240px;width:500px;max-width:100%;border-radius:8px;box-shadow:0 0 30px #6766667c;opacity:0;transform:translateY(-8px);transition:opacity .28s ease,transform .28s ease;pointer-events:auto;overflow:hidden}.ngx-notify-icon-container{width:60px;min-width:60px;display:flex;align-items:center;justify-content:center}.ngx-notify-icon-container .ngx-notify-icon{padding:15px}.ngx-notify-icon-container .ngx-notify-icon svg{width:100%;height:100%}.ngx-notify-content{background-color:var(--ngx-notify-content-bg);color:var(--ngx-notify-content-fg);padding:15px;border-radius:0 0 0 15px;flex:auto}.ngx-notify-content .ngx-notify-title{font-size:1rem}.ngx-notify-content .ngx-notify-description{opacity:.8;font-size:.8rem}.ngx-show{opacity:1;transform:translateY(0)}.ngx-notify-info{background:#1cacff;--var-ngx-progress-bar-bg: #1cacff;color:#e8f3ff}.ngx-notify-success{background:#54c999;--var-ngx-progress-bar-bg: #54c999;color:#ebeceb}.ngx-notify-warning{background:#ffb242;--var-ngx-progress-bar-bg: #ffb242;color:#ffecec}.ngx-notify-error{background:#ff3c39;--var-ngx-progress-bar-bg: #ff3c39;color:#ffecec}.ngx-notify-close-container{background-color:var(--ngx-notify-content-bg);color:var(--ngx-notify-content-fg);display:flex;align-items:center;justify-content:center}.ngx-notify-close-container .ngx-notify-close{background:transparent;border:none;width:22px;height:22px;line-height:0;margin:0 5px;cursor:pointer;transform:rotate(0);transition:transform .4s}.ngx-notify-close-container .ngx-notify-close:hover{transform:rotate(90deg)}.ngx-notify-progress{position:absolute;bottom:0;height:4px;left:60px;right:0;overflow:hidden}.ngx-notify-progress .progress-bar{background-color:var(--var-ngx-progress-bar-bg);height:100%;transform:scaleX(0);transform-origin:left}::ng-deep html[dir=rtl] .ngx-notify-content,::ng-deep body[dir=ltr] .ngx-notify-content{border-radius:0 0 15px}::ng-deep html[dir=rtl] .ngx-notify-progress,::ng-deep body[dir=ltr] .ngx-notify-progress{left:0;right:60px}::ng-deep html[dir=rtl] .ngx-notify-progress .progress-bar,::ng-deep body[dir=ltr] .ngx-notify-progress .progress-bar{transform-origin:right!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
174
171
|
}
|
|
@@ -307,7 +304,7 @@ class NgxNotifyService {
|
|
|
307
304
|
setTimeout(() => {
|
|
308
305
|
const item = this.visible.find((x) => x.payload.id === id);
|
|
309
306
|
if (item) {
|
|
310
|
-
this.appRef.
|
|
307
|
+
this.appRef.detachView(item.ref.hostView);
|
|
311
308
|
item.ref.destroy();
|
|
312
309
|
}
|
|
313
310
|
this.visible = this.visible.filter((v) => v.payload.id !== id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-kit-notify.mjs","sources":["../../../projects/libs/notify/models/notify-config.ts","../../../projects/libs/notify/notify-facade.ts","../../../projects/libs/notify/components/notification.component.ts","../../../projects/libs/notify/components/notification.component.html","../../../projects/libs/notify/services/notify.service.ts","../../../projects/libs/notify/notify-provider.ts","../../../projects/libs/notify/ngx-kit-notify.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { NgxNotifyOptions } from './notify-options';\nimport { NgxNotifyService } from '../services/notify.service';\n\nexport const NGX_NOTIFY_CONFIG = new InjectionToken<NgxNotifyOptions>('NgxNotifyOption');\nexport const NGX_NOTIFY_API = new InjectionToken<NgxNotifyService>('NgxNotifyService');\n\nexport const NGX_NOTIFY_DEFAULTS: Required<NgxNotifyOptions> = {\n timeout: 3000,\n position: 'top-center',\n maxVisible: 10,\n allowHtml: false,\n pauseOnHover: true,\n dismissible: true,\n closeOnTap: true,\n containerClass: 'ngx-bg-notify',\n notificationClass: 'ngx-notify',\n};\n","import { Injector } from '@angular/core';\nimport { NgxNotifyOptions } from './models/notify-options';\nimport { NGX_NOTIFY_API } from './models/notify-config';\nimport { NgxNotifyPayload } from './models/notify.model';\n\n/**\n * Static facade so call sites can use: Notify.warn('msg', opts)\n * Module will set the service instance in its constructor.\n */\nexport class Notify {\n static injector: Injector;\n\n static show(\n type: 'info' | 'success' | 'warning' | 'error' = 'info',\n message: string,\n description?: string,\n options?: NgxNotifyOptions,\n ): NgxNotifyPayload {\n if (!Notify.injector) {\n throw new Error(\n 'ngx-kit: Error on EnvironmentProvider. Ensure \"provideNotify()\" in root provider.',\n );\n }\n return Notify.injector.get(NGX_NOTIFY_API).show(message, description, type, options);\n }\n\n static info(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('info', message, description, options);\n }\n\n static success(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('success', message, description, options);\n }\n static warning(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('warning', message, description, options);\n }\n static error(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('error', message, description, options);\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n Input,\n ChangeDetectorRef,\n DOCUMENT,\n inject,\n ElementRef,\n afterNextRender,\n signal,\n output,\n input,\n effect,\n viewChild,\n} from '@angular/core';\nimport { INotifyEnd, NgxNotifyPayload } from '../models/notify.model';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'ngx-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n imports: [CommonModule],\n})\nexport class NgxNotificationComponent implements OnInit, OnDestroy {\n payload = input.required<NgxNotifyPayload>();\n @Input() containerClass = 'ngx-notify';\n\n bar = viewChild<ElementRef<HTMLElement>>('bar');\n onClose = output<INotifyEnd>();\n onFinish = output<INotifyEnd>();\n\n private _rafId = 0;\n private _duration = 0;\n private _remaining = 0;\n private _endTs = 0;\n private _paused = false;\n\n safeMessage: SafeHtml | string = '';\n safeDescription: SafeHtml | string = '';\n showClass = signal('');\n protected doc = inject(DOCUMENT);\n protected el = inject(ElementRef);\n protected sanitizer = inject(DomSanitizer);\n protected chdr = inject(ChangeDetectorRef);\n constructor() {\n afterNextRender(() => {\n this.showClass.set('ngx-show');\n this.chdr.detectChanges();\n });\n effect(() => {\n const payload = this.payload();\n\n // decide how to render message\n if (payload.options.allowHtml) {\n this.safeMessage = this.sanitizer.bypassSecurityTrustHtml(payload.message);\n this.safeDescription = this.sanitizer.bypassSecurityTrustHtml(payload.description ?? '');\n } else {\n this.safeMessage = this.escapeHtml(payload.message);\n this.safeDescription = this.escapeHtml(payload.description);\n }\n });\n effect(() => {\n const timeout = this.payload().options.timeout ?? 0;\n this.startTimer(timeout);\n });\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this.clearTimer();\n }\n\n // Public API to start timer (used by service when created)\n startTimer(ms: number) {\n this.clearTimer();\n\n if (!this._paused) {\n this._duration = ms;\n }\n this._remaining = ms;\n this._endTs = performance.now() + ms;\n\n const bar = this.bar()?.nativeElement;\n if (bar) {\n bar.style.transition = `transform ${ms}ms linear`;\n bar.style.transform = 'scaleX(1)';\n }\n\n this.animateProgress();\n }\n pauseTimer() {\n this._paused = true;\n cancelAnimationFrame(this._rafId);\n this._remaining = Math.max(0, this._endTs - performance.now());\n const bar = this.bar()?.nativeElement;\n if (bar) {\n const matrix = getComputedStyle(bar).transform;\n bar.style.transition = 'none';\n bar.style.transform = matrix;\n }\n }\n\n resumeTimer() {\n if (!this._paused || this._remaining <= 0) {\n return;\n }\n\n this._paused = false;\n\n this.startTimer(this._remaining);\n }\n\n private clearTimer() {\n cancelAnimationFrame(this._rafId);\n this._rafId = 0;\n }\n\n private animateProgress() {\n const update = () => {\n const remaining = Math.max(0, this._endTs - performance.now());\n if (remaining <= 0) {\n this.onFinish.emit({\n id: this.payload().id,\n el: this.el.nativeElement,\n });\n return;\n }\n\n this._rafId = requestAnimationFrame(update);\n };\n\n this._rafId = requestAnimationFrame(update);\n }\n\n close(ev?: Event) {\n if (ev) ev.stopPropagation();\n this.onClose.emit({ id: this.payload().id, el: this.el.nativeElement });\n }\n\n onMouseEnter() {\n if (this.payload().options.pauseOnHover) this.pauseTimer();\n }\n onMouseLeave() {\n if (this.payload().options.pauseOnHover) this.resumeTimer();\n }\n onTap() {\n if (this.payload().options.closeOnTap) this.close();\n }\n\n escapeHtml(input?: string) {\n if (!input) return '';\n const div = this.doc.createElement('div');\n div.appendChild(this.doc.createTextNode(input));\n return div.textContent;\n }\n\n ngOnDestroyCleanup() {\n this.clearTimer();\n }\n}\n","<div\n class=\"{{ containerClass }} {{ containerClass }}-{{ payload().type }} {{ showClass() }}\"\n role=\"status\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (click)=\"onTap()\"\n [attr.aria-live]=\"\n payload().type === 'error' || payload().type === 'warning' ? 'assertive' : 'polite'\n \"\n [attr.data-id]=\"payload().id\">\n <div class=\"ngx-notify-icon-container\">\n <div class=\"ngx-notify-icon\">\n @switch (payload().type) {\n @case ('success') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M235.3 331.3C229.1 337.6 218.9 337.6 212.7 331.3L148.7 267.3C142.4 261.1 142.4 250.9 148.7 244.7C154.9 238.4 165.1 238.4 171.3 244.7L224 297.4L340.7 180.7C346.9 174.4 357.1 174.4 363.3 180.7C369.6 186.9 369.6 197.1 363.3 203.3L235.3 331.3zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 32C132.3 32 32 132.3 32 256C32 379.7 132.3 480 256 480C379.7 480 480 379.7 480 256C480 132.3 379.7 32 256 32z\" />\n </svg>\n }\n @case ('error') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M180.7 180.7C186.9 174.4 197.1 174.4 203.3 180.7L256 233.4L308.7 180.7C314.9 174.4 325.1 174.4 331.3 180.7C337.6 186.9 337.6 197.1 331.3 203.3L278.6 255.1L331.3 308.7C337.6 314.9 337.6 325.1 331.3 331.3C325.1 337.6 314.9 337.6 308.7 331.3L256 278.6L203.3 331.3C197.1 337.6 186.9 337.6 180.7 331.3C174.4 325.1 174.4 314.9 180.7 308.7L233.4 255.1L180.7 203.3C174.4 197.1 174.4 186.9 180.7 180.7V180.7zM.0669 191.5C.0669 172.4 7.652 154.1 21.16 140.6L140.6 21.15C154.1 7.648 172.4 .0625 191.5 .0625H320.5C339.6 .0625 357.9 7.648 371.4 21.15L490.8 140.6C504.3 154.1 511.9 172.4 511.9 191.5V320.5C511.9 339.6 504.3 357.9 490.8 371.4L371.4 490.8C357.9 504.3 339.6 511.9 320.5 511.9H191.5C172.4 511.9 154.1 504.3 140.6 490.8L21.15 371.4C7.652 357.9 .0666 339.6 .0666 320.5L.0669 191.5zM43.78 163.2C36.28 170.7 32.07 180.9 32.07 191.5V320.5C32.07 331.1 36.28 341.3 43.78 348.8L163.2 468.2C170.7 475.7 180.9 479.9 191.5 479.9H320.5C331.1 479.9 341.3 475.7 348.8 468.2L468.2 348.8C475.7 341.3 479.9 331.1 479.9 320.5V191.5C479.9 180.9 475.7 170.7 468.2 163.2L348.8 43.78C341.3 36.28 331.1 32.06 320.5 32.06H191.5C180.9 32.06 170.7 36.28 163.2 43.78L43.78 163.2zM43.78 348.8L21.15 371.4z\" />\n </svg>\n }\n @case ('warning') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M256 360c-13.25 0-23.1 10.74-23.1 24c0 13.25 10.75 24 23.1 24c13.25 0 23.1-10.75 23.1-24C280 370.7 269.3 360 256 360zM256 320c8.843 0 15.1-7.156 15.1-16V160c0-8.844-7.155-16-15.1-16S240 151.2 240 160v144C240 312.8 247.2 320 256 320zM504.3 397.3L304.5 59.38C294.4 42.27 276.2 32.03 256 32C235.8 32 217.7 42.22 207.5 59.36l-199.9 338c-10.05 16.97-10.2 37.34-.4218 54.5C17.29 469.5 35.55 480 56.1 480h399.9c20.51 0 38.75-10.53 48.81-28.17C514.6 434.7 514.4 414.3 504.3 397.3zM476.1 435.1C472.7 443.5 464.8 448 455.1 448H56.1c-8.906 0-16.78-4.484-21.08-12c-4.078-7.156-4.015-15.3 .1562-22.36L235.1 75.66C239.4 68.36 247.2 64 256 64c0 0-.0156 0 0 0c8.765 .0156 16.56 4.359 20.86 11.64l199.9 338C480.1 420.7 481.1 428.8 476.1 435.1z\" />\n </svg>\n }\n @case ('info') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 480c-123.5 0-224-100.5-224-224s100.5-224 224-224s224 100.5 224 224S379.5 480 256 480zM256 184c13.25 0 24-10.74 24-24c0-13.25-10.75-24-24-24S232 146.7 232 160C232 173.3 242.7 184 256 184zM304 352h-32V240C272 231.2 264.8 224 256 224H224C215.2 224 208 231.2 208 240S215.2 256 224 256h16v96h-32C199.2 352 192 359.2 192 368C192 376.8 199.2 384 208 384h96c8.836 0 16-7.164 16-16C320 359.2 312.8 352 304 352z\" />\n </svg>\n }\n }\n </div>\n </div>\n\n <div class=\"ngx-notify-content\">\n <div class=\"ngx-notify-title\" [innerHTML]=\"safeMessage\"></div>\n <div class=\"ngx-notify-description\" [innerHTML]=\"safeDescription\"></div>\n </div>\n\n @if (payload().options.dismissible) {\n <div class=\"ngx-notify-close-container\">\n <button class=\"ngx-notify-close\" (click)=\"close($event)\" aria-label=\"close\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n fill=\"currentColor\"\n d=\"M315.3 411.3c-6.253 6.253-16.37 6.253-22.63 0L160 278.6l-132.7 132.7c-6.253 6.253-16.37 6.253-22.63 0c-6.253-6.253-6.253-16.37 0-22.63L137.4 256L4.69 123.3c-6.253-6.253-6.253-16.37 0-22.63c6.253-6.253 16.37-6.253 22.63 0L160 233.4l132.7-132.7c6.253-6.253 16.37-6.253 22.63 0c6.253 6.253 6.253 16.37 0 22.63L182.6 256l132.7 132.7C321.6 394.9 321.6 405.1 315.3 411.3z\" />\n </svg>\n </button>\n </div>\n }\n\n <div class=\"ngx-notify-progress\">\n <div class=\"progress-bar\" #bar></div>\n </div>\n</div>\n","import {\n Injectable,\n ComponentRef,\n DOCUMENT,\n inject,\n createComponent,\n EnvironmentInjector,\n ApplicationRef,\n EventEmitter,\n} from '@angular/core';\nimport { NgxNotifyOptions } from '../models/notify-options';\nimport { INotifyEnd, NgxNotifyPayload, NgxNotifyType } from '../models/notify.model';\nimport { WINDOW } from 'ngx-kit/shared';\nimport { NGX_NOTIFY_CONFIG } from '../models/notify-config';\nimport { NgxNotificationComponent } from '../components/notification.component';\n\n// We'll include a tiny inline uuid fallback if uuid package is not available\nfunction makeId() {\n // simple random id\n return 'n_' + Math.random().toString(36).substr(2, 9);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgxNotifyService {\n private queue: NgxNotifyPayload[] = [];\n private visible: { ref: ComponentRef<any>; payload: NgxNotifyPayload }[] = [];\n private container: HTMLElement | null = null;\n\n private envInjector = inject(EnvironmentInjector);\n private appRef = inject(ApplicationRef);\n private doc = inject(DOCUMENT);\n private win = inject(WINDOW);\n private defaultOptions = inject(NGX_NOTIFY_CONFIG);\n constructor() {}\n\n configureContainer(position: NgxNotifyOptions['position'], containerClass: string) {\n if (!this.container) {\n this.container = this.doc.createElement('div');\n this.doc.body.appendChild(this.container);\n }\n\n this.container.className = containerClass + ' ngx-notify-container ' + `ngx-pos-${position}`;\n this.container.style.position = 'fixed';\n this.container.style.zIndex = '99999';\n\n // center special\n if (position === 'center') {\n this.container.style.left = '50%';\n this.container.style.top = '50%';\n this.container.style.transform = 'translate(-50%,-50%)';\n this.container.style.display = 'flex';\n this.container.style.flexDirection = 'column';\n this.container.style.alignItems = 'center';\n this.container.style.pointerEvents = 'none';\n } else {\n if (position?.includes('center')) {\n this.container.style.left = '50%';\n this.container.style.transform = 'translateX(-50%)';\n } else {\n this.container.style.transform = 'translateX(0)';\n }\n // corners\n if (position?.includes('top')) {\n this.container.style.top = '20px';\n } else {\n this.container.style.bottom = '20px';\n }\n if (position?.includes('left')) {\n this.container.style.left = '20px';\n this.container.style.right = 'auto';\n }\n if (position?.includes('right')) {\n this.container.style.right = '20px';\n this.container.style.left = 'auto';\n }\n // else container.style.right = '20px';\n this.container.style.display = 'flex';\n this.container.style.flexDirection = 'column';\n if (position?.includes('bottom')) this.container.style.flexDirection = 'column-reverse';\n this.container.style.pointerEvents = 'none';\n }\n }\n\n show(\n message: string,\n description?: string,\n type: NgxNotifyType = 'info',\n options?: NgxNotifyOptions,\n ) {\n const opts: NgxNotifyOptions = { ...this.defaultOptions, ...(options || {}) };\n const id =\n typeof (this.win as any).crypto?.randomUUID === 'function'\n ? (this.win as any).crypto.randomUUID()\n : makeId();\n\n const payload: NgxNotifyPayload = {\n id,\n message,\n description,\n type,\n options: opts,\n onClose: new EventEmitter(),\n onFinish: new EventEmitter(),\n close: () => this.close(id),\n };\n\n this.configureContainer(opts.position!, opts.containerClass!);\n\n // queue or show immediately\n if (this.visible.length >= opts.maxVisible!) {\n this.queue.push(payload);\n } else {\n this._createAndShow(payload);\n }\n return payload;\n }\n\n private _createAndShow(payload: NgxNotifyPayload) {\n if (!this.container)\n this.configureContainer(payload.options.position!, payload.options.containerClass!);\n const host = document.createElement('div');\n this.container!.appendChild(host);\n\n const compRef = createComponent(NgxNotificationComponent, {\n environmentInjector: this.envInjector,\n hostElement: host,\n });\n\n compRef.setInput('payload', payload);\n compRef.instance.onClose.subscribe((d) => {\n this.removeEl(d);\n payload.onClose.emit(d);\n });\n compRef.instance.onFinish.subscribe((d) => {\n this.removeEl(d);\n payload.onFinish.emit(d);\n payload.onClose.emit(d);\n });\n\n // Registers the component’s view so it participates in change detection cycle.\n this.appRef.attachView(compRef.hostView);\n // store visible\n this.visible.push({ ref: compRef, payload });\n }\n\n private close(id: string) {\n const el = this.visible.find((x) => x.payload.id == id)?.ref?.instance?.el;\n if (el) {\n this.removeEl({ id, el });\n }\n // if in queue remove it\n this.queue = this.queue.filter((q) => q.id !== id);\n }\n private removeNode(node: HTMLElement, id: string) {\n node.style.opacity = '0';\n node.style.transform = 'translateY(-30px)';\n node.style.transition = 'all 300ms';\n setTimeout(() => {\n const item = this.visible.find((x) => x.payload.id === id);\n if (item) {\n this.appRef.attachView(item.ref.hostView);\n item.ref.destroy();\n }\n this.visible = this.visible.filter((v) => v.payload.id !== id);\n // show next in queue\n this._showNextIfPossible();\n }, 300);\n }\n\n private removeEl(d: INotifyEnd) {\n if (d.el) this.removeNode(d.el, d.id);\n else {\n // if in queue remove it\n this.queue = this.queue.filter((q) => q.id !== d.id);\n }\n }\n\n private _showNextIfPossible() {\n if (!this.queue.length) return;\n const next = this.queue.shift()!;\n // ensure we don't exceed maxVisible\n if (this.visible.length < next.options.maxVisible!) {\n this._createAndShow(next);\n } else {\n // push back\n this.queue.unshift(next);\n }\n }\n}\n","import {\r\n EnvironmentProviders,\r\n inject,\r\n Injector,\r\n makeEnvironmentProviders,\r\n provideEnvironmentInitializer,\r\n} from '@angular/core';\r\nimport { NGX_NOTIFY_API, NGX_NOTIFY_CONFIG, NGX_NOTIFY_DEFAULTS } from './models/notify-config';\r\nimport { NgxNotifyOptions } from './models/notify-options';\r\nimport { Notify as NotifyFacade } from './notify-facade';\r\nimport { NgxNotifyService } from './services/notify.service';\r\nexport function provideNotify(options?: NgxNotifyOptions): EnvironmentProviders {\r\n return makeEnvironmentProviders([\r\n {\r\n provide: NGX_NOTIFY_CONFIG,\r\n useValue: { ...NGX_NOTIFY_DEFAULTS, ...(options || {}) },\r\n },\r\n {\r\n provide: NGX_NOTIFY_API,\r\n useExisting: NgxNotifyService,\r\n },\r\n provideEnvironmentInitializer(() => {\r\n NotifyFacade.injector = inject(Injector);\r\n }),\r\n ]);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["NotifyFacade"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-kit-notify.mjs","sources":["../../../projects/libs/notify/models/notify-config.ts","../../../projects/libs/notify/notify-facade.ts","../../../projects/libs/notify/components/notification.component.ts","../../../projects/libs/notify/components/notification.component.html","../../../projects/libs/notify/services/notify.service.ts","../../../projects/libs/notify/notify-provider.ts","../../../projects/libs/notify/ngx-kit-notify.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { NgxNotifyOptions } from './notify-options';\nimport { NgxNotifyService } from '../services/notify.service';\n\nexport const NGX_NOTIFY_CONFIG = new InjectionToken<NgxNotifyOptions>('NgxNotifyOption');\nexport const NGX_NOTIFY_API = new InjectionToken<NgxNotifyService>('NgxNotifyService');\n\nexport const NGX_NOTIFY_DEFAULTS: Required<NgxNotifyOptions> = {\n timeout: 3000,\n position: 'top-center',\n maxVisible: 10,\n allowHtml: false,\n pauseOnHover: true,\n dismissible: true,\n closeOnTap: true,\n containerClass: 'ngx-bg-notify',\n notificationClass: 'ngx-notify',\n};\n","import { Injector } from '@angular/core';\nimport { NgxNotifyOptions } from './models/notify-options';\nimport { NGX_NOTIFY_API } from './models/notify-config';\nimport { NgxNotifyPayload } from './models/notify.model';\n\n/**\n * Static facade so call sites can use: Notify.warn('msg', opts)\n * Module will set the service instance in its constructor.\n */\nexport class Notify {\n static injector: Injector;\n\n static show(\n type: 'info' | 'success' | 'warning' | 'error' = 'info',\n message: string,\n description?: string,\n options?: NgxNotifyOptions,\n ): NgxNotifyPayload {\n if (!Notify.injector) {\n throw new Error(\n 'ngx-kit: Error on EnvironmentProvider. Ensure \"provideNotify()\" in root provider.',\n );\n }\n return Notify.injector.get(NGX_NOTIFY_API).show(message, description, type, options);\n }\n\n static info(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('info', message, description, options);\n }\n\n static success(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('success', message, description, options);\n }\n static warning(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('warning', message, description, options);\n }\n static error(message: string, description?: string, options?: NgxNotifyOptions) {\n return this.show('error', message, description, options);\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n Input,\n ChangeDetectorRef,\n DOCUMENT,\n inject,\n ElementRef,\n afterNextRender,\n signal,\n output,\n input,\n effect,\n viewChild,\n} from '@angular/core';\nimport { INotifyEnd, NgxNotifyPayload } from '../models/notify.model';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'ngx-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n imports: [CommonModule],\n})\nexport class NgxNotificationComponent implements OnInit, OnDestroy {\n payload = input.required<NgxNotifyPayload>();\n @Input() containerClass = 'ngx-notify';\n\n bar = viewChild<ElementRef<HTMLElement>>('bar');\n onClose = output<INotifyEnd>();\n onFinish = output<INotifyEnd>();\n\n private _rafId = 0;\n private _duration = 0;\n private _remaining = 0;\n private _endTs = 0;\n private _paused = false;\n\n safeMessage: SafeHtml | string = '';\n safeDescription: SafeHtml | string = '';\n showClass = signal('');\n protected doc = inject(DOCUMENT);\n protected el = inject(ElementRef);\n protected sanitizer = inject(DomSanitizer);\n protected chdr = inject(ChangeDetectorRef);\n constructor() {\n afterNextRender(() => {\n this.showClass.set('ngx-show');\n this.chdr.detectChanges();\n });\n effect(() => {\n const payload = this.payload();\n\n // decide how to render message\n if (payload.options.allowHtml) {\n this.safeMessage = this.sanitizer.bypassSecurityTrustHtml(payload.message);\n this.safeDescription = this.sanitizer.bypassSecurityTrustHtml(payload.description ?? '');\n } else {\n this.safeMessage = this.escapeHtml(payload.message);\n this.safeDescription = this.escapeHtml(payload.description);\n }\n });\n effect(() => {\n const timeout = this.payload().options.timeout ?? 0;\n this.startTimer(timeout);\n });\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this.clearTimer();\n }\n\n // Public API to start timer (used by service when created)\n startTimer(ms: number) {\n this.clearTimer();\n\n if (!this._paused) {\n this._duration = ms;\n }\n this._remaining = ms;\n this._endTs = performance.now() + ms;\n\n const bar = this.bar()?.nativeElement;\n if (bar) {\n bar.style.transition = `transform ${ms}ms linear`;\n bar.style.transform = 'scaleX(1)';\n }\n\n this.animateProgress();\n }\n pauseTimer() {\n this._paused = true;\n cancelAnimationFrame(this._rafId);\n this._remaining = Math.max(0, this._endTs - performance.now());\n const bar = this.bar()?.nativeElement;\n if (bar) {\n const matrix = getComputedStyle(bar).transform;\n bar.style.transition = 'none';\n bar.style.transform = matrix;\n }\n }\n\n resumeTimer() {\n if (!this._paused || this._remaining <= 0) {\n return;\n }\n\n this._paused = false;\n\n this.startTimer(this._remaining);\n }\n\n private clearTimer() {\n cancelAnimationFrame(this._rafId);\n this._rafId = 0;\n }\n\n private animateProgress() {\n const update = () => {\n const remaining = Math.max(0, this._endTs - performance.now());\n if (remaining <= 0) {\n this.onFinish.emit({\n id: this.payload().id,\n el: this.el.nativeElement,\n });\n return;\n }\n\n this._rafId = requestAnimationFrame(update);\n };\n\n this._rafId = requestAnimationFrame(update);\n }\n\n close(ev?: Event) {\n if (ev) ev.stopPropagation();\n this.onClose.emit({ id: this.payload().id, el: this.el.nativeElement });\n }\n\n onMouseEnter() {\n if (this.payload().options.pauseOnHover) this.pauseTimer();\n }\n onMouseLeave() {\n if (this.payload().options.pauseOnHover) this.resumeTimer();\n }\n onTap() {\n if (this.payload().options.closeOnTap) this.close();\n }\n\n escapeHtml(input?: string) {\n if (!input) return '';\n const div = this.doc.createElement('div');\n div.appendChild(this.doc.createTextNode(input));\n return div.textContent;\n }\n}\n","<div\n class=\"{{ containerClass }} {{ containerClass }}-{{ payload().type }} {{ showClass() }}\"\n role=\"status\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (click)=\"onTap()\"\n [attr.aria-live]=\"\n payload().type === 'error' || payload().type === 'warning' ? 'assertive' : 'polite'\n \"\n [attr.data-id]=\"payload().id\">\n <div class=\"ngx-notify-icon-container\">\n <div class=\"ngx-notify-icon\">\n @switch (payload().type) {\n @case ('success') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M235.3 331.3C229.1 337.6 218.9 337.6 212.7 331.3L148.7 267.3C142.4 261.1 142.4 250.9 148.7 244.7C154.9 238.4 165.1 238.4 171.3 244.7L224 297.4L340.7 180.7C346.9 174.4 357.1 174.4 363.3 180.7C369.6 186.9 369.6 197.1 363.3 203.3L235.3 331.3zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 32C132.3 32 32 132.3 32 256C32 379.7 132.3 480 256 480C379.7 480 480 379.7 480 256C480 132.3 379.7 32 256 32z\" />\n </svg>\n }\n @case ('error') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M180.7 180.7C186.9 174.4 197.1 174.4 203.3 180.7L256 233.4L308.7 180.7C314.9 174.4 325.1 174.4 331.3 180.7C337.6 186.9 337.6 197.1 331.3 203.3L278.6 255.1L331.3 308.7C337.6 314.9 337.6 325.1 331.3 331.3C325.1 337.6 314.9 337.6 308.7 331.3L256 278.6L203.3 331.3C197.1 337.6 186.9 337.6 180.7 331.3C174.4 325.1 174.4 314.9 180.7 308.7L233.4 255.1L180.7 203.3C174.4 197.1 174.4 186.9 180.7 180.7V180.7zM.0669 191.5C.0669 172.4 7.652 154.1 21.16 140.6L140.6 21.15C154.1 7.648 172.4 .0625 191.5 .0625H320.5C339.6 .0625 357.9 7.648 371.4 21.15L490.8 140.6C504.3 154.1 511.9 172.4 511.9 191.5V320.5C511.9 339.6 504.3 357.9 490.8 371.4L371.4 490.8C357.9 504.3 339.6 511.9 320.5 511.9H191.5C172.4 511.9 154.1 504.3 140.6 490.8L21.15 371.4C7.652 357.9 .0666 339.6 .0666 320.5L.0669 191.5zM43.78 163.2C36.28 170.7 32.07 180.9 32.07 191.5V320.5C32.07 331.1 36.28 341.3 43.78 348.8L163.2 468.2C170.7 475.7 180.9 479.9 191.5 479.9H320.5C331.1 479.9 341.3 475.7 348.8 468.2L468.2 348.8C475.7 341.3 479.9 331.1 479.9 320.5V191.5C479.9 180.9 475.7 170.7 468.2 163.2L348.8 43.78C341.3 36.28 331.1 32.06 320.5 32.06H191.5C180.9 32.06 170.7 36.28 163.2 43.78L43.78 163.2zM43.78 348.8L21.15 371.4z\" />\n </svg>\n }\n @case ('warning') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M256 360c-13.25 0-23.1 10.74-23.1 24c0 13.25 10.75 24 23.1 24c13.25 0 23.1-10.75 23.1-24C280 370.7 269.3 360 256 360zM256 320c8.843 0 15.1-7.156 15.1-16V160c0-8.844-7.155-16-15.1-16S240 151.2 240 160v144C240 312.8 247.2 320 256 320zM504.3 397.3L304.5 59.38C294.4 42.27 276.2 32.03 256 32C235.8 32 217.7 42.22 207.5 59.36l-199.9 338c-10.05 16.97-10.2 37.34-.4218 54.5C17.29 469.5 35.55 480 56.1 480h399.9c20.51 0 38.75-10.53 48.81-28.17C514.6 434.7 514.4 414.3 504.3 397.3zM476.1 435.1C472.7 443.5 464.8 448 455.1 448H56.1c-8.906 0-16.78-4.484-21.08-12c-4.078-7.156-4.015-15.3 .1562-22.36L235.1 75.66C239.4 68.36 247.2 64 256 64c0 0-.0156 0 0 0c8.765 .0156 16.56 4.359 20.86 11.64l199.9 338C480.1 420.7 481.1 428.8 476.1 435.1z\" />\n </svg>\n }\n @case ('info') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n <path\n fill=\"currentColor\"\n d=\"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 480c-123.5 0-224-100.5-224-224s100.5-224 224-224s224 100.5 224 224S379.5 480 256 480zM256 184c13.25 0 24-10.74 24-24c0-13.25-10.75-24-24-24S232 146.7 232 160C232 173.3 242.7 184 256 184zM304 352h-32V240C272 231.2 264.8 224 256 224H224C215.2 224 208 231.2 208 240S215.2 256 224 256h16v96h-32C199.2 352 192 359.2 192 368C192 376.8 199.2 384 208 384h96c8.836 0 16-7.164 16-16C320 359.2 312.8 352 304 352z\" />\n </svg>\n }\n }\n </div>\n </div>\n\n <div class=\"ngx-notify-content\">\n <div class=\"ngx-notify-title\" [innerHTML]=\"safeMessage\"></div>\n <div class=\"ngx-notify-description\" [innerHTML]=\"safeDescription\"></div>\n </div>\n\n @if (payload().options.dismissible) {\n <div class=\"ngx-notify-close-container\">\n <button class=\"ngx-notify-close\" (click)=\"close($event)\" aria-label=\"close\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n fill=\"currentColor\"\n d=\"M315.3 411.3c-6.253 6.253-16.37 6.253-22.63 0L160 278.6l-132.7 132.7c-6.253 6.253-16.37 6.253-22.63 0c-6.253-6.253-6.253-16.37 0-22.63L137.4 256L4.69 123.3c-6.253-6.253-6.253-16.37 0-22.63c6.253-6.253 16.37-6.253 22.63 0L160 233.4l132.7-132.7c6.253-6.253 16.37-6.253 22.63 0c6.253 6.253 6.253 16.37 0 22.63L182.6 256l132.7 132.7C321.6 394.9 321.6 405.1 315.3 411.3z\" />\n </svg>\n </button>\n </div>\n }\n\n <div class=\"ngx-notify-progress\">\n <div class=\"progress-bar\" #bar></div>\n </div>\n</div>\n","import {\n Injectable,\n ComponentRef,\n DOCUMENT,\n inject,\n createComponent,\n EnvironmentInjector,\n ApplicationRef,\n EventEmitter,\n} from '@angular/core';\nimport { NgxNotifyOptions } from '../models/notify-options';\nimport { INotifyEnd, NgxNotifyPayload, NgxNotifyType } from '../models/notify.model';\nimport { WINDOW } from 'ngx-kit/shared';\nimport { NGX_NOTIFY_CONFIG } from '../models/notify-config';\nimport { NgxNotificationComponent } from '../components/notification.component';\n\n// We'll include a tiny inline uuid fallback if uuid package is not available\nfunction makeId() {\n // simple random id\n return 'n_' + Math.random().toString(36).substr(2, 9);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgxNotifyService {\n private queue: NgxNotifyPayload[] = [];\n private visible: { ref: ComponentRef<any>; payload: NgxNotifyPayload }[] = [];\n private container: HTMLElement | null = null;\n\n private envInjector = inject(EnvironmentInjector);\n private appRef = inject(ApplicationRef);\n private doc = inject(DOCUMENT);\n private win = inject(WINDOW);\n private defaultOptions = inject(NGX_NOTIFY_CONFIG);\n constructor() {}\n\n configureContainer(position: NgxNotifyOptions['position'], containerClass: string) {\n if (!this.container) {\n this.container = this.doc.createElement('div');\n this.doc.body.appendChild(this.container);\n }\n\n this.container.className = containerClass + ' ngx-notify-container ' + `ngx-pos-${position}`;\n this.container.style.position = 'fixed';\n this.container.style.zIndex = '99999';\n\n // center special\n if (position === 'center') {\n this.container.style.left = '50%';\n this.container.style.top = '50%';\n this.container.style.transform = 'translate(-50%,-50%)';\n this.container.style.display = 'flex';\n this.container.style.flexDirection = 'column';\n this.container.style.alignItems = 'center';\n this.container.style.pointerEvents = 'none';\n } else {\n if (position?.includes('center')) {\n this.container.style.left = '50%';\n this.container.style.transform = 'translateX(-50%)';\n } else {\n this.container.style.transform = 'translateX(0)';\n }\n // corners\n if (position?.includes('top')) {\n this.container.style.top = '20px';\n } else {\n this.container.style.bottom = '20px';\n }\n if (position?.includes('left')) {\n this.container.style.left = '20px';\n this.container.style.right = 'auto';\n }\n if (position?.includes('right')) {\n this.container.style.right = '20px';\n this.container.style.left = 'auto';\n }\n // else container.style.right = '20px';\n this.container.style.display = 'flex';\n this.container.style.flexDirection = 'column';\n if (position?.includes('bottom')) this.container.style.flexDirection = 'column-reverse';\n this.container.style.pointerEvents = 'none';\n }\n }\n\n show(\n message: string,\n description?: string,\n type: NgxNotifyType = 'info',\n options?: NgxNotifyOptions,\n ) {\n const opts: NgxNotifyOptions = { ...this.defaultOptions, ...(options || {}) };\n const id =\n typeof (this.win as any).crypto?.randomUUID === 'function'\n ? (this.win as any).crypto.randomUUID()\n : makeId();\n\n const payload: NgxNotifyPayload = {\n id,\n message,\n description,\n type,\n options: opts,\n onClose: new EventEmitter(),\n onFinish: new EventEmitter(),\n close: () => this.close(id),\n };\n\n this.configureContainer(opts.position!, opts.containerClass!);\n\n // queue or show immediately\n if (this.visible.length >= opts.maxVisible!) {\n this.queue.push(payload);\n } else {\n this._createAndShow(payload);\n }\n return payload;\n }\n\n private _createAndShow(payload: NgxNotifyPayload) {\n if (!this.container)\n this.configureContainer(payload.options.position!, payload.options.containerClass!);\n const host = document.createElement('div');\n this.container!.appendChild(host);\n\n const compRef = createComponent(NgxNotificationComponent, {\n environmentInjector: this.envInjector,\n hostElement: host,\n });\n\n compRef.setInput('payload', payload);\n compRef.instance.onClose.subscribe((d) => {\n this.removeEl(d);\n payload.onClose.emit(d);\n });\n compRef.instance.onFinish.subscribe((d) => {\n this.removeEl(d);\n payload.onFinish.emit(d);\n payload.onClose.emit(d);\n });\n\n // Registers the component’s view so it participates in change detection cycle.\n this.appRef.attachView(compRef.hostView);\n // store visible\n this.visible.push({ ref: compRef, payload });\n }\n\n private close(id: string) {\n const el = this.visible.find((x) => x.payload.id == id)?.ref?.instance?.el;\n if (el) {\n this.removeEl({ id, el });\n }\n // if in queue remove it\n this.queue = this.queue.filter((q) => q.id !== id);\n }\n private removeNode(node: HTMLElement, id: string) {\n node.style.opacity = '0';\n node.style.transform = 'translateY(-30px)';\n node.style.transition = 'all 300ms';\n setTimeout(() => {\n const item = this.visible.find((x) => x.payload.id === id);\n if (item) {\n this.appRef.detachView(item.ref.hostView);\n item.ref.destroy();\n }\n this.visible = this.visible.filter((v) => v.payload.id !== id);\n // show next in queue\n this._showNextIfPossible();\n }, 300);\n }\n\n private removeEl(d: INotifyEnd) {\n if (d.el) this.removeNode(d.el, d.id);\n else {\n // if in queue remove it\n this.queue = this.queue.filter((q) => q.id !== d.id);\n }\n }\n\n private _showNextIfPossible() {\n if (!this.queue.length) return;\n const next = this.queue.shift()!;\n // ensure we don't exceed maxVisible\n if (this.visible.length < next.options.maxVisible!) {\n this._createAndShow(next);\n } else {\n // push back\n this.queue.unshift(next);\n }\n }\n}\n","import {\n EnvironmentProviders,\n inject,\n Injector,\n makeEnvironmentProviders,\n provideEnvironmentInitializer,\n} from '@angular/core';\nimport { NGX_NOTIFY_API, NGX_NOTIFY_CONFIG, NGX_NOTIFY_DEFAULTS } from './models/notify-config';\nimport { NgxNotifyOptions } from './models/notify-options';\nimport { Notify as NotifyFacade } from './notify-facade';\nimport { NgxNotifyService } from './services/notify.service';\nexport function provideNotify(options?: NgxNotifyOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: NGX_NOTIFY_CONFIG,\n useValue: { ...NGX_NOTIFY_DEFAULTS, ...(options || {}) },\n },\n {\n provide: NGX_NOTIFY_API,\n useExisting: NgxNotifyService,\n },\n provideEnvironmentInitializer(() => {\n NotifyFacade.injector = inject(Injector);\n }),\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["NotifyFacade"],"mappings":"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"}
|