{"version":3,"file":"chunk-kbkdt1vk.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 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","_a","subscribe","workerType","WorkerType","MessagePanelTimeout","createWorker","timeout","isLatest","removeWorker","ngOnDestroy","complete","destroy","ɵɵdirectiveInject","MessageQueueService","ElementRef","WindowOffsetModifierService","WebWorkerService","k","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵtemplate","MessagePanelComponent_Conditional_0_Template","ɵɵconditional","CommonModule","NgClass","DynamicHtmlDirective","styles","encapsulation","_MessagePanelComponent"],"mappings":"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"}