UNPKG

@mantine/hooks

Version:

A collection of 50+ hooks for state and UI management

1 lines 2.5 kB
{"version":3,"file":"use-mutation-observer.cjs","names":[],"sources":["../../src/use-mutation-observer/use-mutation-observer.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nexport function useMutationObserver<T extends HTMLElement = any>(\n callback: MutationCallback,\n options: MutationObserverInit\n): React.RefCallback<T | null> {\n const observer = useRef<MutationObserver | null>(null);\n\n const refCallback: React.RefCallback<T | null> = useCallback(\n (node) => {\n if (observer.current) {\n observer.current.disconnect();\n observer.current = null;\n }\n\n if (node) {\n observer.current = new MutationObserver(callback);\n observer.current.observe(node, options);\n }\n\n return () => {\n if (observer.current) {\n observer.current.disconnect();\n observer.current = null;\n }\n };\n },\n [callback, options]\n );\n\n return refCallback;\n}\n\nexport function useMutationObserverTarget(\n callback: MutationCallback,\n options: MutationObserverInit,\n target?: HTMLElement | (() => HTMLElement) | null\n): void {\n const observer = useRef<MutationObserver | null>(null);\n\n useEffect(() => {\n if (observer.current) {\n observer.current.disconnect();\n observer.current = null;\n }\n\n const targetElement = typeof target === 'function' ? target() : target;\n\n if (targetElement) {\n observer.current = new MutationObserver(callback);\n observer.current.observe(targetElement, options);\n }\n\n return () => {\n if (observer.current) {\n observer.current.disconnect();\n observer.current = null;\n }\n };\n }, [callback, options, target]);\n}\n"],"mappings":";;;AAEA,SAAgB,oBACd,UACA,SAC6B;CAC7B,MAAM,YAAA,GAAA,MAAA,QAA2C,KAAK;AAwBtD,SAAA,GAAA,MAAA,cArBG,SAAS;AACR,MAAI,SAAS,SAAS;AACpB,YAAS,QAAQ,YAAY;AAC7B,YAAS,UAAU;;AAGrB,MAAI,MAAM;AACR,YAAS,UAAU,IAAI,iBAAiB,SAAS;AACjD,YAAS,QAAQ,QAAQ,MAAM,QAAQ;;AAGzC,eAAa;AACX,OAAI,SAAS,SAAS;AACpB,aAAS,QAAQ,YAAY;AAC7B,aAAS,UAAU;;;IAIzB,CAAC,UAAU,QAAQ,CACpB;;AAKH,SAAgB,0BACd,UACA,SACA,QACM;CACN,MAAM,YAAA,GAAA,MAAA,QAA2C,KAAK;AAEtD,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,SAAS,SAAS;AACpB,YAAS,QAAQ,YAAY;AAC7B,YAAS,UAAU;;EAGrB,MAAM,gBAAgB,OAAO,WAAW,aAAa,QAAQ,GAAG;AAEhE,MAAI,eAAe;AACjB,YAAS,UAAU,IAAI,iBAAiB,SAAS;AACjD,YAAS,QAAQ,QAAQ,eAAe,QAAQ;;AAGlD,eAAa;AACX,OAAI,SAAS,SAAS;AACpB,aAAS,QAAQ,YAAY;AAC7B,aAAS,UAAU;;;IAGtB;EAAC;EAAU;EAAS;EAAO,CAAC"}