A simple observer manager that currently supports Mutation and Object observers.
npm install @nicebuzzy/observer-managerimport { ObserverManager } from 'https://esm.run/@nicebuzzy/observer-manager'const manager = new ObserverManager()const observer = manager.mutation()
const target = document.body
const any = (mutation) => console.log(mutation)
const attributes = (mutation) => console.log(mutation)
observer.subscribe(target, any, { childList: true, attributes: true })
observer.subscribe(target, attributes, { attributes: true })
target.appendChild(document.createElement('foo')) // calls any
target.setAttribute('foo', 'bar') // calls attributes, any
observer.unsubscribe(target, any)
target.appendChild(document.createElement('bar')) // calls nothing because any is unsubscribedconst observer = manager.object()
const target = {}
const any = (mutation) => console.log(mutation)
const set = (mutation) => console.log(mutation)
observer.subscribe(target, any, { get: true, set: true, del: true })
observer.subscribe(target, set, { set: true })
const proxy = observer.observe(target)
proxy.foo = 'bar' // calls set, any
const { foo } = proxy // calls any
delete proxy.foo // calls any
observer.unsubscribe(target, any)
const { baz } = proxy // calls nothing because any is unsubscribedimport { ObserverManager } from '@nicebuzzy/observer-manager'
const manager = new ObserverManager()Returns: MutationObserverWrapper
Returns: ObjectObserverWrapper
Clears all observers but does not disconnect them.
Disconnects a specific observer but does not remove it from the manager.
type:String
Returns: Object
Returns a list of all active observers.
import { MutationObserverWrapper } from '@nicebuzzy/observer-manager'
const observer = new MutationObserverWrapper()-
target:Node -
subscriber:Function -
options:ObjectchildList:Booleanattributes:Booleansubtree:Boolean
Refer to the MDN for details.
target:Nodesubscriber:Function
import { ObjectObserverWrapper } from '@nicebuzzy/observer-manager'
const observer = new ObjectObserverWrapper()target:Objectsubscriber:Functionoptions:Objectget:Booleanset:Booleandel:Boolean
target:Objectsubscriber:Function
Returns: Proxy
target:Object
MutationObserverWrapperdoes not support theattributeFilteroption when multiple subscribers are subscribed to the same target.- Possible solutions: Implement a custom filter in the callback or create a new instance of
MutationObserverWrapper.
- Possible solutions: Implement a custom filter in the callback or create a new instance of