Skip to content

Instantly share code, notes, and snippets.

@derekmc
Last active June 8, 2026 13:42
Show Gist options
  • Select an option

  • Save derekmc/177e0c0e7695f5b739c1c770a655e783 to your computer and use it in GitHub Desktop.

Select an option

Save derekmc/177e0c0e7695f5b739c1c770a655e783 to your computer and use it in GitHub Desktop.
main()
function main(){
console.log('main')
let listener = EventMap(mapperUpperCase)(window)
listener.addEventListener('keydown', e=>console.info('down', e))
listener.addEventListener('keyup', e=>console.info('up', e))
}
//passthrough
function mapperUpperCase(handler){
return function callMapper(action, event){
let key = event.key
if(key.length == 1)
key = key.toUpperCase()
console.log(`mapper ${action}`, event)
handler[action]({key})
}
}
function EventMap(mapper){
let handler = {}
return function(listener){
let callMapper = mapper(handler)
init()
return {addEventListener}
function init(){
console.info('init EventMap')
}
function addEventListener(name, callback){
if(!handler.hasOwnProperty(name)){
listener.addEventListener(name,(e)=>{
callMapper(name, e)})
}
handler[name] = callback
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment