{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-mutation-observer/index.ts"],"sourcesContent":["import type { ConfigurableWindow } from '../_configurable';\nimport type { MaybeElementRef } from '../unref-element';\nimport { watch } from 'vue';\nimport { defaultWindow } from '../_configurable';\nimport { tryOnScopeDispose } from '../try-on-scope-dispose';\nimport { unrefElement } from '../unref-element';\nimport { useSupported } from '../use-supported';\n\nexport interface UseMutationObserverOptions extends MutationObserverInit, ConfigurableWindow {}\n\n/**\n * Watch for changes being made to the DOM tree.\n *\n * @see https://vueuse.org/useMutationObserver\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver MutationObserver MDN\n * @param target\n * @param callback\n * @param options\n */\nexport function useMutationObserver(\n  target: MaybeElementRef,\n  callback: MutationCallback,\n  options: UseMutationObserverOptions = {},\n) {\n  const { window = defaultWindow, ...mutationOptions } = options;\n  let observer: MutationObserver | undefined;\n  const isSupported = useSupported(() => window && 'MutationObserver' in window);\n\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = undefined;\n    }\n  };\n\n  const stopWatch = watch(\n    () => unrefElement(target),\n    (el) => {\n      cleanup();\n\n      if (isSupported.value && window && el) {\n        observer = new MutationObserver(callback);\n        observer!.observe(el, mutationOptions);\n      }\n    },\n    { immediate: true },\n  );\n\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n\n  tryOnScopeDispose(stop);\n\n  return {\n    isSupported,\n    stop,\n  };\n}\n\nexport type UseMutationObserverReturn = ReturnType<typeof useMutationObserver>;\n"],"names":[],"mappings":";;;;;;AAmBO,SAAS,mBACd,CAAA,MAAA,EACA,QACA,EAAA,OAAA,GAAsC,EACtC,EAAA;AACA,EAAA,MAAM,EAAE,MAAA,GAAS,aAAe,EAAA,GAAG,iBAAoB,GAAA,OAAA,CAAA;AACvD,EAAI,IAAA,QAAA,CAAA;AACJ,EAAA,MAAM,WAAc,GAAA,YAAA,CAAa,MAAM,MAAA,IAAU,sBAAsB,MAAM,CAAA,CAAA;AAE7E,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,QAAA,CAAS,UAAW,EAAA,CAAA;AACpB,MAAW,QAAA,GAAA,KAAA,CAAA,CAAA;AAAA,KACb;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,SAAY,GAAA,KAAA;AAAA,IAChB,MAAM,aAAa,MAAM,CAAA;AAAA,IACzB,CAAC,EAAO,KAAA;AACN,MAAQ,OAAA,EAAA,CAAA;AAER,MAAI,IAAA,WAAA,CAAY,KAAS,IAAA,MAAA,IAAU,EAAI,EAAA;AACrC,QAAW,QAAA,GAAA,IAAI,iBAAiB,QAAQ,CAAA,CAAA;AACxC,QAAU,QAAA,CAAA,OAAA,CAAQ,IAAI,eAAe,CAAA,CAAA;AAAA,OACvC;AAAA,KACF;AAAA,IACA,EAAE,WAAW,IAAK,EAAA;AAAA,GACpB,CAAA;AAEA,EAAA,MAAM,OAAO,MAAM;AACjB,IAAQ,OAAA,EAAA,CAAA;AACR,IAAU,SAAA,EAAA,CAAA;AAAA,GACZ,CAAA;AAEA,EAAA,iBAAA,CAAkB,IAAI,CAAA,CAAA;AAEtB,EAAO,OAAA;AAAA,IACL,WAAA;AAAA,IACA,IAAA;AAAA,GACF,CAAA;AACF;;;;"}