JSFiddle - React, Tailwind, and code Playground
by Chase Wilson
JavaScript
var Events = function(){
var slice = Array.prototype.slice
,removePseudo: function(key){
return key.split(':')[0];
}
,handleType = function(keyName,callback){
var i, pseudo, args = slice.apply(arguments,0);
args.push(this);
if(typeof key === 'string' && key.indexof(':'){
pseudo = key.match(/:(\w+)/)[1];
key = removePseudo(key);
}
/*
for(i in Events.plugins){
var plg = Events.plugins[i];
if(plg.test){
return plg.test.apply(this, args);
}
}
*/
};
return {
_events:{}
,getEvents: function(key){
var events =_events[key];
return (typeof key === 'string') ? events?events:[] :Object.keys(_events);
}
,addEvent: function(/* Sting */ type, /* Function */ callback){
var args = slice.call(arguments,0);
if(handleType.apply(this,args)) return;
var events = this._events[type] = _events[type] || [];
if(!(typeof callback == 'function')) {
throw new TypeError(Events.errors.callback_must_be_function);
}
events.push(callback);
return this;
}
,addEvents: function(/* Object */ events){
for(var key in events){
if(events.hasOwnProperty(key)){
this.addEvent(key,events[key]);
}
}
return this;
}
,fireEvent: function(/* String */ type) {
var events = this._events[type]
,length = events.length >>> 0
,args = slice.call(arguments,1)
,i = 0;
if(events && length) {
for (; i < length; i++) {
if (i in events) {
try{
events[i].apply(this,args);
} catch (e) {
...