JSFiddle - React, Tailwind, and code Playground

by Chase Wilson

JavaScript

if(!window.SML){ 
    window.namespace = window.SML = {}; 
    window.global = window;
}


(function(global,namespace){
namespace.extend = function(original){
    var  length = arguments.length
        ,i = 1
        ,extended;

    for (; i < length; i++){
        extended = arguments[i] || {};
        for (var key in extended){
            original[key] = extended[key];
        }
    }
    return original;
};
})(global,namespace);

/*
*    Events Mixin
*/
(function(global,namespace){
var Events = namespace.Events = {
     _events: {}
    
    ,addEvent: function(type, callback){
        this._events[type] = this._events[type] || [];
        if(typeof callback !== 'function'){
            return new TypeError('The Callback needs to be a function.');   
        }
        this._events[type].push(callback);
    }

    ,addEvents: function(/* Object */ events){
        for(var key in events){
            if(events.hasOwnProperty(key)){
                this.addEvent(key,events[key]);
            }
        }
    }
    
    ,fireEvent: function(type) {
        var events = this._events[type],
            length = events.length >>> 0,
            args = Array.prototype.slice.call(arguments,1);
        
 
        if(events && length) {
            for (var i = 0; i < length; i++) {
                if (i in events) {
                    events[i].apply(this,args);
                }
            }
        }
    }
};
})(global,namespace);


var NEW = {};
SML.extend(NEW,SML.Events);
NEW.addEvent('Hello',function(who){alert(['Hello',who].join(" "));});