The W3C DOM MutationObserver API is verbose and unintuitive. This wrapper makes DOM observation terse and obvious.
Exposes:
<script src=//unpkg.com/muty/script.js></script>
<script src=//unpkg.com/muty/module.js type=module></script>
import muty from 'muty'
// or
var muty = require('muty')
// A single function for mutation observation
muty( options, element, callback ) // => MutationObserver
// An options object with all boolean flags set to true for broad capture
muty.options
Allowing:
// Blanket logging of all DOM mutations
muty( muty.options, document, function( records ){ console.log( records ) } )
// In application code, maybe something like this
var editor = document.querySelector( '[contenteditable]' )
muty(
{ characterData : true, subtree : true } ,
editor,
function( mutations, observer ){
editor.classList.add( 'changed' )
observer.disconnect()
}
)
- A MutationRecord processor, or any kind of higher-level abstraction. Use Mutation Summary instead.
- A MutationObserver polyfill for non-supporting browsers. Use Mutation Watcher instead.
- A perfect API:
- Curry it if you want intermediary partially applied observers.
- Use flyd (for Fantasy Land streams) or Bluebird (for Promises) if you have opinionated async data flow requirements.