{"version":3,"file":"chunk-hsi8n036.js","sources":["packages/vanilla/lib/features/message-panel/src/message-panel-registry.service.ts","packages/vanilla/lib/features/message-panel/src/message-panel.html","packages/vanilla/lib/features/message-panel/src/message-panel.component.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { IMessagePanelComponent, MessagePanelRegistryEvent } from './message-panel.models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessagePanelRegistry {\n get onChange(): Observable {\n return this.onChangeSubject.asObservable();\n }\n\n private onChangeSubject = new Subject();\n private components = [] as IMessagePanelComponent[];\n\n add(component: IMessagePanelComponent) {\n this.components.push(component);\n this.onChangeSubject.next({ component });\n }\n\n remove(component: IMessagePanelComponent) {\n const index = this.components.indexOf(component);\n this.components.splice(index, 1);\n\n const componentsInScope = this.components.filter((c: IMessagePanelComponent) => c.currentScope === component.currentScope);\n const lastMessagePanelComponent = componentsInScope[componentsInScope.length - 1] || null;\n\n this.onChangeSubject.next({\n component: lastMessagePanelComponent,\n });\n }\n}\n","@if (messages.length && isLatest) {\n
\n @for (message of messages; track trackByHtml($index, message)) {\n \n
\n
\n }\n \n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EffectRef, ElementRef, Input, OnDestroy, OnInit, ViewEncapsulation, effect } from '@angular/core';\n\nimport {\n DynamicHtmlDirective,\n Message,\n MessageQueueService,\n WebWorkerService,\n WindowOffsetModifierService,\n WorkerType,\n trackByProp,\n} from '@frontend/vanilla/core';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { MessagePanelRegistry } from './message-panel-registry.service';\nimport { IMessagePanelComponent, MessagePanelRegistryEvent } from './message-panel.models';\n\n/**\n * @whatItDoes Displays messages that have been added by {@link MessageQueueService}.\n *\n * @howToUse\n *\n * Place this component on a page where you want to display messages.\n *\n * ```\n * \n * ```\n *\n * @stable\n */\n@Component({\n standalone: true,\n imports: [CommonModule, DynamicHtmlDirective],\n selector: 'vn-message-panel',\n templateUrl: 'message-panel.html',\n styleUrls: ['../../../../../themepark/themes/whitelabel/components/message-panel/styles.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class MessagePanelComponent implements IMessagePanelComponent, OnInit, OnDestroy {\n @Input() scope: string;\n\n messages: Message[] = [];\n isLatest: boolean;\n readonly trackByHtml = trackByProp('html');\n\n private unsubscribe = new Subject();\n private messagesEffectRef: EffectRef;\n\n constructor(\n private service: MessageQueueService,\n private elementRef: ElementRef,\n private windowOffsetModifierService: WindowOffsetModifierService,\n private registry: MessagePanelRegistry,\n private webWorkerService: WebWorkerService,\n ) {\n this.messagesEffectRef = effect(() => {\n this.messages = this.service.messages().filter((message: Message) => (message.scope || '') === this.currentScope);\n\n if (this.messages.length) {\n const offset = this.elementRef.nativeElement.getBoundingClientRect().top;\n this.windowOffsetModifierService.scrollBy(offset);\n }\n });\n }\n\n get currentScope(): string {\n return this.scope || '';\n }\n\n ngOnInit() {\n this.registry.onChange\n .pipe(\n takeUntil(this.unsubscribe),\n filter((c: MessagePanelRegistryEvent) => c.component?.currentScope === this.currentScope),\n )\n .subscribe((c: MessagePanelRegistryEvent) => {\n const workerType = WorkerType.MessagePanelTimeout + this.currentScope;\n\n this.webWorkerService.createWorker(workerType, { timeout: 0 }, () => {\n this.isLatest = c.component === this;\n this.webWorkerService.removeWorker(workerType);\n });\n });\n\n this.registry.add(this);\n }\n\n ngOnDestroy() {\n this.unsubscribe.next();\n this.unsubscribe.complete();\n this.messagesEffectRef.destroy();\n this.registry.remove(this);\n this.webWorkerService.removeWorker(WorkerType.MessagePanelTimeout + this.currentScope);\n }\n}\n"],"names":["MessagePanelRegistry","constructor","onChangeSubject","Subject","components","onChange","asObservable","add","component","push","next","remove","index","indexOf","splice","componentsInScope","filter","c","currentScope","lastMessagePanelComponent","length","factory","ɵfac","providedIn","_MessagePanelRegistry","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵclassProp","message_r1","type","ɵɵproperty","ɵɵadvance","html","ɵɵrepeaterCreate","MessagePanelComponent_Conditional_0_For_2_Template","ɵɵcomponentInstance","trackByHtml","ɵɵrepeater","ctx_r1","messages","MessagePanelComponent","service","elementRef","windowOffsetModifierService","registry","webWorkerService","trackByProp","unsubscribe","messagesEffectRef","effect","message","scope","offset","nativeElement","getBoundingClientRect","top","scrollBy","ngOnInit","pipe","takeUntil","subscribe","workerType","WorkerType","MessagePanelTimeout","createWorker","timeout","isLatest","removeWorker","ngOnDestroy","complete","destroy","ɵɵdirectiveInject","MessageQueueService","ElementRef","WindowOffsetModifierService","WebWorkerService","selectors","inputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","MessagePanelComponent_Conditional_0_Template","ɵɵconditional","CommonModule","NgClass","DynamicHtmlDirective","styles","encapsulation","_MessagePanelComponent"],"mappings":"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"}