{"version":3,"file":"chunk-eokruu2y.js","sources":["packages/vanilla/lib/features/content-messages/src/content-messages-tracking.service.ts","packages/vanilla/lib/features/content-messages/src/content-message.html","packages/vanilla/lib/features/content-messages/src/content-message.component.ts","packages/vanilla/lib/features/content-messages/src/close-message.component.ts","packages/vanilla/lib/features/content-messages/src/content-messages-bootstrap.service.ts","packages/vanilla/lib/features/content-messages/src/content-messages.feature.ts","packages/vanilla/lib/features/content-messages/src/content-messages.service.ts","packages/vanilla/lib/features/content-messages/src/content-messages.html","packages/vanilla/lib/features/content-messages/src/content-messages.component.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { ContentItem, TrackingService } from '@frontend/vanilla/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ContentMessagesTrackingService {\n private trackedLoadEvents = new Set();\n\n constructor(private trackingService: TrackingService) {}\n\n trackMessageLoaded(message: ContentItem, scope: string) {\n const key = scope + message.name;\n\n if (this.trackedLoadEvents.has(key)) {\n return;\n }\n\n this.trackedLoadEvents.add(key);\n this.trackingService.trackContentItemEvent(message.parameters, 'tracking.LoadedEvent');\n }\n\n trackMessageClosed(message: ContentItem) {\n this.trackingService.trackContentItemEvent(message.parameters, 'tracking.ClosedEvent');\n }\n}\n","
\n @if (message.parameters?.messageIcon; as messageIcon) {\n \n }\n @if (message.parameters?.showCloseButton === 'true') {\n \n }\n \n
\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\n\nimport { ContentItem, HtmlNode, MenuActionOrigin, MenuActionsService, toBoolean } from '@frontend/vanilla/core';\nimport { PageMatrixComponent } from '@frontend/vanilla/features/content';\nimport { IconCustomComponent } from '@frontend/vanilla/shared/icons';\n\nimport { ContentMessagesTrackingService } from './content-messages-tracking.service';\n\nexport interface ContentMessageCloseEvent {\n message: ContentItem;\n showOnNextSession?: boolean;\n showOnNextLogin?: boolean;\n}\n\n@Component({\n standalone: true,\n imports: [CommonModule, PageMatrixComponent, IconCustomComponent],\n selector: 'vn-content-message',\n templateUrl: 'content-message.html',\n})\nexport class ContentMessageComponent implements OnInit, OnDestroy {\n @Input() message: ContentItem;\n @Input() scope: string;\n @Output() close: EventEmitter = new EventEmitter();\n iconClass: string;\n\n constructor(\n private htmlNode: HtmlNode,\n private contentMessagesTrackingService: ContentMessagesTrackingService,\n private menuActionService: MenuActionsService,\n ) {}\n\n ngOnInit() {\n this.setHtmlCssClass(true);\n this.contentMessagesTrackingService.trackMessageLoaded(this.message, this.scope);\n this.iconClass = this.message.parameters?.closeIcon || 'theme-close-i';\n }\n\n ngOnDestroy() {\n this.setHtmlCssClass(false);\n }\n\n onClick() {\n if (toBoolean(this.message.parameters?.closeOnMessageClick)) {\n this.close.next({ message: this.message });\n }\n }\n\n closeMessage(showOnNextSession: boolean = false, showOnNextLogin: boolean = false) {\n this.close.next({ message: this.message, showOnNextSession, showOnNextLogin });\n\n if (this.message.parameters?.closeAction) {\n this.menuActionService.invoke(this.message.parameters.closeAction, MenuActionOrigin.PageMatrix, [this.message.parameters.queryStringKey]);\n }\n }\n\n private setHtmlCssClass(add: boolean) {\n if (this.message.parameters?.htmlTagClass) {\n this.htmlNode.setCssClass(this.message.parameters.htmlTagClass, add);\n }\n }\n}\n","import { Component, ElementRef, HostListener, OnInit } from '@angular/core';\n\nimport { CustomElement, toBoolean } from '@frontend/vanilla/core';\n\nimport { ContentMessageComponent } from './content-message.component';\n\n/**\n * This is automatically tested in tests of ContentMessageComponent.\n */\n@Component({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '.message-close',\n template: '',\n})\nexport class CloseMessageComponent implements OnInit {\n private showOnNextSession: boolean | undefined;\n private showOnNextLogin: boolean | undefined;\n\n constructor(\n private parent: ContentMessageComponent,\n private elementRef: ElementRef,\n ) {\n this.showOnNextSession = toBoolean(elementRef.nativeElement.getAttribute('data-show-on-next-session'));\n this.showOnNextLogin = toBoolean(elementRef.nativeElement.getAttribute('data-show-on-next-login'));\n }\n\n ngOnInit() {\n this.elementRef.nativeElement.innerHTML = (this.elementRef.nativeElement).originalHtmlString;\n }\n\n @HostListener('click')\n onClick() {\n this.parent.closeMessage(this.showOnNextSession, this.showOnNextLogin);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { EmbeddableComponentsService, OnFeatureInit } from '@frontend/vanilla/core';\n\nimport { CloseMessageComponent } from './close-message.component';\n\n@Injectable()\nexport class ContentMessagesBootstrapService implements OnFeatureInit {\n constructor(private embeddableComponentsService: EmbeddableComponentsService) {}\n\n onFeatureInit() {\n this.embeddableComponentsService.registerEmbeddableComponent(CloseMessageComponent, 100);\n }\n}\n","import { runOnFeatureInit } from '@frontend/vanilla/core';\n\nimport { ContentMessagesBootstrapService } from './content-messages-bootstrap.service';\n\nexport function provide() {\n return [runOnFeatureInit(ContentMessagesBootstrapService)];\n}\n","import { Injectable } from '@angular/core';\n\nimport { ContentItem, CookieName, CookieService, SharedFeaturesApiService, toBoolean } from '@frontend/vanilla/core';\nimport { flatten, isNumber } from 'lodash-es';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ContentMessagesTrackingService } from './content-messages-tracking.service';\n\n/**\n * @whatItDoes Wraps logic related to content messages esp. manipulation of respective cookies.\n *\n * @description This is meant for Vanilla internal use only!\n *\n * @stable\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ContentMessagesService {\n private messages: { [key: string]: Observable } = {};\n\n constructor(\n private cookieService: CookieService,\n private api: SharedFeaturesApiService,\n private contentMessagesTrackingService: ContentMessagesTrackingService,\n ) {}\n\n private static generateExpiryDate(days: string | number | null): Date | undefined {\n if (!days) {\n return;\n }\n\n const expireDate = new Date();\n expireDate.setDate(expireDate.getDate() + (isNumber(days) ? days : parseInt(days, 10)));\n\n return expireDate;\n }\n\n getMessages(\n path: string,\n closedCookieKey?: string,\n evaluateFullOnServer?: boolean,\n ): Observable {\n if (this.messages[path] || !path) {\n return this.messages[path] || of([]);\n }\n\n this.messages[path] = this.api\n .get('contentMessages', {\n path,\n closedCookieKey,\n evaluateFullOnServer,\n })\n .pipe(map((r) => r.messages));\n\n return this.messages[path] || of([]);\n }\n\n getClosedMessageNames(cookieKey: string): string[] {\n const cookieNames = [CookieName.ClsdP, CookieName.ClsdS, CookieName.ClsdL];\n\n return flatten(cookieNames.map((c: CookieName) => this.cookieService.getQueryCollection(c, cookieKey)));\n }\n\n markMessageAsClosed(message: ContentItem, cookieKey: string, options?: { showOnNextSession?: boolean; showOnNextLogin?: boolean }) {\n const parameters = message.parameters || {};\n const showOnNextSession = options?.showOnNextSession === undefined ? toBoolean(parameters.showOnNextSession) : options.showOnNextSession;\n const showOnNextLogin = options?.showOnNextLogin === undefined ? toBoolean(parameters.showOnNextLogin) : options.showOnNextLogin;\n let expires = ContentMessagesService.generateExpiryDate(showOnNextSession ? null : 365); // clsd-l is also persistent b/c delete on login\n\n if (toBoolean(parameters.writeOriginalCookie) !== false || !parameters.additionalCookieName) {\n const cookieName = showOnNextLogin ? CookieName.ClsdL : showOnNextSession ? CookieName.ClsdS : CookieName.ClsdP;\n this.cookieService.addToQueryCollection(cookieName, cookieKey, message.name, expires ? { expires } : {});\n }\n\n if (parameters.additionalCookieName) {\n const additionalCookieValue = parameters.additionalCookieValue !== undefined ? parameters.additionalCookieValue : 'true';\n expires =\n parameters.additionalCookieExpireDays !== undefined\n ? ContentMessagesService.generateExpiryDate(parameters.additionalCookieExpireDays)\n : expires;\n\n this.cookieService.putRaw(parameters.additionalCookieName, additionalCookieValue, expires ? { expires } : {});\n }\n\n this.contentMessagesTrackingService.trackMessageClosed(message);\n }\n}\n","@if (messagesToShow.length) {\n
\n @for (message of messagesToShow; track trackByName($index, message)) {\n \n }\n
\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges, OnDestroy, OnInit, Optional, SimpleChanges } from '@angular/core';\n\nimport {\n ContentItem,\n HtmlNode,\n MenuActionOrigin,\n MenuActionsService,\n UserEvent,\n UserLoginEvent,\n UserService,\n toBoolean,\n trackByProp,\n} from '@frontend/vanilla/core';\nimport { filter, first } from 'rxjs/operators';\n\nimport { ContentMessageComponent } from './content-message.component';\nimport { ContentMessagesService } from './content-messages.service';\n\n/**\n * @whatItDoes Renders a collection of content messages\n *\n * @howToUse\n *\n * ```\n * \n * ```\n *\n * @description\n *\n * Renders a collection of content messages. Content for content messages can be loaded with `IContentMessageLoader` on the\n * server, then rendered on the client with client side page matrix.\n *\n * See http://moss.bwin.com/development/contentservices/The%20Brain/Content%20Messages.aspx for more information\n * about content messages.\n *\n * @stable\n */\n@Component({\n standalone: true,\n imports: [CommonModule, ContentMessageComponent],\n selector: 'vn-content-messages',\n templateUrl: 'content-messages.html',\n})\nexport class ContentMessagesComponent implements OnInit, OnChanges, OnDestroy {\n @Input() closedCookieKey: string;\n @Input() cssClassForHtmlNode: string;\n @Input() messages: ContentItem[];\n @Input() dynamicValues?: { Key: ''; Value: '' }[];\n\n messagesToShow: ContentItem[] = [];\n readonly trackByName = trackByProp('name');\n\n constructor(\n private messagesService: ContentMessagesService,\n private menuActionService: MenuActionsService,\n private htmlNode: HtmlNode,\n user: UserService,\n @Optional() private overlayRef: OverlayRef,\n ) {\n user.events\n .pipe(\n filter((e: UserEvent) => e instanceof UserLoginEvent),\n first(),\n )\n .subscribe(() => this.refreshMessagesToShow());\n }\n\n ngOnInit() {\n if (this.overlayRef) {\n this.overlayRef.backdropClick().subscribe(() => {\n for (const message of this.messagesToShow) {\n if (toBoolean(message.parameters?.writeCookieOnOverlayClick)) {\n this.messagesService.markMessageAsClosed(message, this.closedCookieKey);\n }\n if (message.parameters?.closeAction) {\n this.menuActionService.invoke(message.parameters.closeAction, MenuActionOrigin.PageMatrix, [\n message.parameters.queryStringKey,\n ]);\n }\n }\n\n this.messages = [];\n this.refreshMessagesToShow();\n this.overlayRef.dispose();\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.messages || changes.closedCookieKey || changes.dynamicValues) {\n this.setDynamicContentValues();\n this.refreshMessagesToShow();\n }\n }\n\n ngOnDestroy() {\n this.toggleClassForHtmlNode(false);\n }\n\n closeMessage(message: ContentItem, showOnNextSession: boolean = false, showOnNextLogin: boolean = false) {\n const options = {\n showOnNextSession,\n showOnNextLogin,\n };\n\n if (Object.keys(options).length > 0) {\n this.messagesService.markMessageAsClosed(message, this.closedCookieKey, options);\n } else {\n this.messagesService.markMessageAsClosed(message, this.closedCookieKey);\n }\n\n this.messages = this.messages.filter((m: ContentItem) => m !== message);\n this.refreshMessagesToShow();\n\n if (this.overlayRef && !this.messagesToShow.length) {\n // Last message closed -> remove overlay if any\n this.overlayRef.dispose();\n }\n }\n\n private refreshMessagesToShow() {\n if (this.messages?.length && this.closedCookieKey) {\n const closedMsgNames = new Set(this.messagesService.getClosedMessageNames(this.closedCookieKey).map((v: string) => v.toLowerCase()));\n this.messagesToShow = this.messages.filter((m: ContentItem) => m && !closedMsgNames.has(m.name.toLowerCase()));\n } else {\n this.messagesToShow = [];\n }\n\n this.toggleClassForHtmlNode(this.messagesToShow.length > 0);\n }\n\n private toggleClassForHtmlNode(enabled: boolean) {\n this.htmlNode.setCssClass(this.cssClassForHtmlNode, enabled);\n }\n\n /**\n * @whatItDoes Goes through all visible message parameters and replace placeholders `{EXAMPLE_KEY}`\n * with a value with the same key from `dynamicValues` input.\n * The message will remain unchanged if placeholder does not mach the format\n * or value is not found in the `dynamicValues`.\n */\n private setDynamicContentValues() {\n if (!this.dynamicValues || !this.messages) {\n return;\n }\n\n this.messages.forEach((message: ContentItem) => {\n for (const param in message.parameters) {\n message.parameters[param] = message.parameters[param]!.replace(/{\\w+}/g, (placeholder: string) => {\n const key = placeholder.replace(/[{}]+/g, '');\n const value = this.dynamicValues?.find((value) => value.Key === key)?.Value;\n\n return value || placeholder;\n });\n }\n });\n }\n}\n"],"names":["ContentMessagesTrackingService","constructor","trackingService","trackedLoadEvents","Set","trackMessageLoaded","message","scope","key","name","has","add","trackContentItemEvent","parameters","trackMessageClosed","ɵɵinject","TrackingService","C","factory","ɵfac","providedIn","_ContentMessagesTrackingService","ɵɵelement","ɵɵproperty","ctx","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","closeMessage","ɵɵelementEnd","iconClass","ContentMessageComponent","htmlNode","contentMessagesTrackingService","menuActionService","close","EventEmitter","ngOnInit","setHtmlCssClass","closeIcon","ngOnDestroy","onClick","toBoolean","closeOnMessageClick","next","showOnNextSession","showOnNextLogin","closeAction","invoke","MenuActionOrigin","PageMatrix","queryStringKey","htmlTagClass","setCssClass","ɵɵdirectiveInject","HtmlNode","MenuActionsService","u","selectors","inputs","outputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ɵɵtemplate","ContentMessageComponent_Conditional_1_Template","ContentMessageComponent_Conditional_2_Template","messageClass","ɵɵadvance","ɵɵconditional","tmp_2_0","messageIcon","showCloseButton","CommonModule","NgClass","PageMatrixComponent","IconCustomComponent","encapsulation","_ContentMessageComponent","CloseMessageComponent","parent","elementRef","nativeElement","getAttribute","innerHTML","originalHtmlString","ElementRef","hostBindings","M","_CloseMessageComponent","ContentMessagesBootstrapService","embeddableComponentsService","onFeatureInit","registerEmbeddableComponent","EmbeddableComponentsService","_ContentMessagesBootstrapService","provide","runOnFeatureInit","ContentMessagesService","cookieService","api","messages","generateExpiryDate","days","expireDate","Date","setDate","getDate","isNumber","parseInt","getMessages","path","closedCookieKey","evaluateFullOnServer","of","get","pipe","map","r","getClosedMessageNames","cookieKey","cookieNames","CookieName","ClsdP","ClsdS","ClsdL","flatten","c","getQueryCollection","markMessageAsClosed","options","undefined","expires","writeOriginalCookie","additionalCookieName","cookieName","addToQueryCollection","additionalCookieValue","additionalCookieExpireDays","putRaw","CookieService","SharedFeaturesApiService","_ContentMessagesService","$event","message_r3","ɵɵrepeaterCreate","ContentMessagesComponent_Conditional_0_For_2_Template","ɵɵcomponentInstance","trackByName","ɵɵrepeater","messagesToShow","ContentMessagesComponent","messagesService","user","overlayRef","trackByProp","events","filter","e","UserLoginEvent","first","subscribe","refreshMessagesToShow","backdropClick","writeCookieOnOverlayClick","dispose","ngOnChanges","changes","dynamicValues","setDynamicContentValues","toggleClassForHtmlNode","Object","keys","length","m","closedMsgNames","v","toLowerCase","enabled","cssClassForHtmlNode","forEach","param","replace","placeholder","find","value","Key","Value","UserService","OverlayRef","ɵɵNgOnChangesFeature","ContentMessagesComponent_Conditional_0_Template","_ContentMessagesComponent"],"mappings":"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"}