emap

manages event listeners

Usage no npm install needed!

<script type="module">
  import emap from 'https://cdn.skypack.dev/emap';
</script>

README

emap

Manages event listeners.

Creates and manages closures for your event handling and makes it easy to remove them.
Use the EventMap, if you repeatedly have to remove listeners owned by an instance or if you want to remove all registered listeners at once.

Works with:

  • addEventListener/removeEventListener (browser)
  • on/addListener/off/removeListener (node)
  • angulars $on (with unregister handle)
  • add/remove (my own)

Usage

    
    EventMap = require 'emap'
    eventMap = new EventMap()
    

Example

    
    # node
    EventEmiter = require 'events'
    emiter      = new EventEmiter()
     
    # browser 
    anchor = document.createElement 'a'
    
    # handler function
    myHandler = (args...) ->
        console.log "myHandler called with: ", args
    
    # object with handler
    myObject = 
        handler: (type, args...) ->
            console.log "#{this}.handler called with: ", args
    
    # map dispatcher, type, handler, owner = null, useCapture = false
    eventMap.map emiter, 'ready', myHandler
    eventMap.map emiter, 'ready', myObject.handler, myObject
    eventMap.map anchor, 'click', myHandler
    eventMap.map anchor, 'click', myObject.handler, myObject, true
    
    # unmap dispatcher, type, handler, owner = null, useCapture = false
    eventMap.unmap emiter, 'ready', myHandler
    eventMap.unmap emiter, 'ready', myObject.handler, myObject
    eventMap.unmap anchor, 'click', myHandler
    eventMap.unmap anchor, 'click', myObject.handler, myObject, true
    
    
    # all
    eventMap.all()