{"version":3,"file":"4477.chunk.419f38e8525903243a82.js","mappings":"uKAKO,MAAMA,EAAoBA,CAACC,EAAmBC,KACjD,MAAMC,GAAeC,EAAAA,EAAAA,GAAyBF,IAI9CG,EAAAA,EAAAA,kBAAgB,KACZ,MAAMC,EAAU,CACZC,OAASC,GAAmBL,EAAaM,QAAQD,IAKrD,OAFAE,EAAAA,EAAcC,UAAUL,EAASL,GAE1B,IAAMS,EAAAA,EAAcE,YAAYN,EAASL,EAAU,GAC3D,CAACE,EAAcF,GAAW,C,uEChB1B,SAASG,EAA4BS,GACxC,MAAMC,GAAcC,EAAAA,EAAAA,QAAUF,GAM9B,OAJAG,EAAAA,EAAAA,YAAU,KACNF,EAAYL,QAAUI,CAAQ,GAC/B,CAACA,IAEGC,CACX,C","sources":["webpack://Kristiania.Web/./Features/Messaging/useMessageHandler.ts","webpack://Kristiania.Web/./Features/Utils/Hooks/useVariableWithStableRef.ts"],"sourcesContent":["import { useLayoutEffect } from 'react';\nimport { MessageBroker } from '~/Features/Messaging/MessageBroker';\nimport type { Message, MessageHandler } from '~/Features/Messaging/types';\nimport { useVariableWithStableRef } from '~/Utils/Hooks/useVariableWithStableRef';\n\nexport const useMessageHandler = (messageId: string, onMessage: MessageHandler['handle']) => {\n const onMessageRef = useVariableWithStableRef(onMessage);\n\n // We use LayoutEffect here because it is important that the handler is subscribed before the first message is published.\n // It could happen if the children of the component that uses this hook publish a message in their useEffect.\n useLayoutEffect(() => {\n const handler = {\n handle: (event: Message) => onMessageRef.current(event),\n };\n\n MessageBroker.subscribe(handler, messageId);\n\n return () => MessageBroker.unsubscribe(handler, messageId);\n }, [onMessageRef, messageId]);\n};\n","import { useEffect, useRef } from 'react';\n\nexport function useVariableWithStableRef(variable: T) {\n const variableRef = useRef(variable);\n\n useEffect(() => {\n variableRef.current = variable;\n }, [variable]);\n\n return variableRef;\n}\n"],"names":["useMessageHandler","messageId","onMessage","onMessageRef","useVariableWithStableRef","useLayoutEffect","handler","handle","event","current","MessageBroker","subscribe","unsubscribe","variable","variableRef","useRef","useEffect"],"sourceRoot":""}