{"version":3,"file":"useMutationObserver.cjs","sources":["../../../../src/hooks/useMutationObserver/useMutationObserver.ts"],"sourcesContent":["import { type RefObject, useEffect, useRef } from \"react\";\n\nconst hasWindowWithMutationObserver = () =>\n    typeof window !== \"undefined\" && typeof MutationObserver !== \"undefined\";\n\n/**\n * Hook som gjør det enklere å sjekke en komponents children for endringer.\n *\n * @param targetRef Container som skal observeres. Containeren må ikke rerendres, da vil observereren bli opprettet på nytt.\n * @param onObservation Callback-funksjon som utføres når en mutasjon observeres.\n * @param config Parametere til observereren. Se https://developer.mozilla.org/en-US/docs/Web/API/MutationObserverInit#properties for mer info.\n */\nexport const useMutationObserver = (\n    targetRef: RefObject<HTMLElement | null>,\n    onObservation: MutationCallback,\n    config?: Partial<MutationObserverInit>,\n): void => {\n    const observerRef = useRef<MutationObserver>(null);\n\n    useEffect(() => {\n        let observer = observerRef.current;\n\n        if (hasWindowWithMutationObserver()) {\n            const target = targetRef.current;\n\n            if (observer) {\n                observer.disconnect();\n            }\n\n            observer = new MutationObserver(onObservation);\n\n            if (target) {\n                observer.observe(target, config);\n            }\n        }\n        return () => {\n            if (hasWindowWithMutationObserver() && observer) {\n                observer.disconnect();\n            }\n        };\n    }, [targetRef, onObservation, config]);\n};\n"],"names":["hasWindowWithMutationObserver","window","MutationObserver","targetRef","onObservation","config","observerRef","useRef","useEffect","observer","current","target","disconnect","observe"],"mappings":"yGAEMA,EAAgC,WAC3BC,OAAW,YAAsBC,iBAAqB,gCAS9B,CAC/BC,EACAC,EACAC,KAEA,MAAMC,EAAcC,EAAAA,OAAyB,MAE7CC,EAAAA,UAAU,KACN,IAAIC,EAAWH,EAAYI,QAE3B,GAAIV,IAAiC,CACjC,MAAMW,EAASR,EAAUO,QAErBD,GACAA,EAASG,aAGbH,EAAW,IAAIP,iBAAiBE,GAE5BO,GACAF,EAASI,QAAQF,EAAQN,EAEjC,CACA,MAAO,KACCL,KAAmCS,GACnCA,EAASG,eAGlB,CAACT,EAAWC,EAAeC"}