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(" "));});