{"version":3,"file":"5018.chunk.bf393fb0b70b5222b440.js","mappings":"kIAEO,MAAMA,EAGT,gBAAcC,CAAUC,EAAyBC,GAC7C,MAAMC,EAAWC,KAAKC,2BAA2BH,GAE7CC,EACAA,EAASG,KAAKL,GAEdG,KAAKC,2BAA2BH,GAAa,CAACD,EAEtD,CAEA,kBAAcM,CAAYN,EAAyBC,GAC/C,MAAMC,EAAWC,KAAKC,2BAA2BH,GAE7CC,IACAC,KAAKC,2BAA2BH,GAAaC,EAASK,QAAOC,GAAKA,IAAMR,IAEhF,CAEA,cAAcS,CAAQC,GACDP,KAAKQ,mBAAmBD,EAAQE,IAExCC,SAAQb,GAAWA,EAAQc,OAAOJ,IAC/C,CAEA,sBAAcK,CAAgBL,EAAkBM,GAC5CC,YAAW,IAAMnB,EAAcW,QAAQC,IAAUM,EACrD,CAEA,yBAAeL,CAAmBV,GAC9B,OAAOE,KAAKC,2BAA2BH,IAAc,EACzD,EAjCSH,EACMM,2BAAiE,CAAC,C,wDCH9E,MAAec,EACRC,WAAAA,CAA4BP,GAAY,KAAZA,GAAAA,CAAa,EAGhD,MAAeQ,UAAcF,G","sources":["webpack://Kristiania.Web/./Features/Messaging/MessageBroker.ts","webpack://Kristiania.Web/./Features/Messaging/types.ts"],"sourcesContent":["import type { Message, MessageHandler } from '~/Features/Messaging/types';\n\nexport class MessageBroker {\n private static MessageHandlersByMessageId: { [id: string]: MessageHandler[] } = {};\n\n public static subscribe(handler: MessageHandler, messageId: string): void {\n const handlers = this.MessageHandlersByMessageId[messageId];\n\n if (handlers) {\n handlers.push(handler);\n } else {\n this.MessageHandlersByMessageId[messageId] = [handler];\n }\n }\n\n public static unsubscribe(handler: MessageHandler, messageId: string): void {\n const handlers = this.MessageHandlersByMessageId[messageId];\n\n if (handlers) {\n this.MessageHandlersByMessageId[messageId] = handlers.filter(h => h !== handler);\n }\n }\n\n public static publish(message: Message): void {\n const handlers = this.GetMessageHandlers(message.id);\n\n handlers.forEach(handler => handler.handle(message));\n }\n\n public static schedulePublish(message: Message, delay: number): void {\n setTimeout(() => MessageBroker.publish(message), delay);\n }\n\n private static GetMessageHandlers(messageId: string): MessageHandler[] {\n return this.MessageHandlersByMessageId[messageId] || [];\n }\n}\n","export abstract class Message {\n protected constructor(public readonly id: string) {}\n}\n\nexport abstract class Event extends Message {}\n\nexport interface MessageHandler {\n handle(message: Message): void;\n}\n\nexport interface EventHandler {\n handle: ((event: TEvent) => void) | (() => void);\n}\n"],"names":["MessageBroker","subscribe","handler","messageId","handlers","this","MessageHandlersByMessageId","push","unsubscribe","filter","h","publish","message","GetMessageHandlers","id","forEach","handle","schedulePublish","delay","setTimeout","Message","constructor","Event"],"sourceRoot":""}