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) { 
    ...