📄 useMutationObserver¶
📊 Analysis Summary¶
| Metric | Count |
|---|---|
| 🔧 Functions | 4 |
| 📦 Imports | 12 |
| 🟢 Vue Composition API | 2 |
| 📐 Interfaces | 2 |
📚 Table of Contents¶
🛠️ File Location:¶
📂 packages/core/useMutationObserver/index.ts
📦 Imports¶
| Name | Source |
|---|---|
ConfigurableWindow |
../_configurable |
Supportable |
../types |
MaybeComputedElementRefOrArray |
../unrefElement |
notNullish |
@vueuse/shared |
toArray |
@vueuse/shared |
tryOnScopeDispose |
@vueuse/shared |
computed |
vue |
toValue |
vue |
watch |
vue |
defaultWindow |
../_configurable |
unrefElement |
../unrefElement |
useSupported |
../useSupported |
Vue Composition API¶
| Name | Type | Reactive Variables | Composables |
|---|---|---|---|
computed |
computed | none | none |
watch |
watch | none | none |
Functions¶
useMutationObserver(target: MaybeComputedElementRefOrArray, callback: MutationCallback, options: UseMutationObserverOptions): UseMutationObserverReturn¶
Watch for changes being made to the DOM tree.
Parameters:
targetany: No descriptioncallbackany: No descriptionoptionsany: No description
See: https://vueuse.org/useMutationObserver, https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver MutationObserver MDN
Raw JSDoc
Calls:
useSupported (from ../useSupported)observer.disconnectcomputed (from vue)toValue (from vue)toArray(value) .map(unrefElement) .filterwatch (from vue)cleanupnewTargets.forEachobserver!.observeobserver?.takeRecordsstopWatchtryOnScopeDispose (from @vueuse/shared)
Code
export function useMutationObserver(
target: MaybeComputedElementRefOrArray,
callback: MutationCallback,
options: UseMutationObserverOptions = {},
): UseMutationObserverReturn {
const { window = defaultWindow, ...mutationOptions } = options
let observer: MutationObserver | undefined
const isSupported = useSupported(() => window && 'MutationObserver' in window)
const cleanup = () => {
if (observer) {
observer.disconnect()
observer = undefined
}
}
const targets = computed(() => {
const value = toValue(target)
const items = toArray(value)
.map(unrefElement)
.filter(notNullish)
return new Set(items)
})
const stopWatch = watch(
targets,
(newTargets) => {
cleanup()
if (isSupported.value && newTargets.size) {
observer = new MutationObserver(callback)
newTargets.forEach(el => observer!.observe(el, mutationOptions))
}
},
{ immediate: true, flush: 'post' },
)
const takeRecords = () => {
return observer?.takeRecords()
}
const stop = () => {
stopWatch()
cleanup()
}
tryOnScopeDispose(stop)
return {
isSupported,
stop,
takeRecords,
}
}
Internal helpers¶
Declared inside another function in this file.
cleanup(): void¶
Returns: void
Calls:
observer.disconnect
takeRecords(): MutationRecord[]¶
Returns: MutationRecord[]
Calls:
observer?.takeRecords
stop(): void¶
Returns: void
Calls:
stopWatchcleanup
Interfaces¶
UseMutationObserverOptions¶
Interface Code
UseMutationObserverReturn¶
Interface Code
Properties¶
| Name | Type | Optional | Description |
|---|---|---|---|
stop |
() => void |
✗ | not shown |
takeRecords |
() => MutationRecord[] \| undefined |
✗ | not shown |
Generated by Syntax Scribe