-
Notifications
You must be signed in to change notification settings - Fork 7
/
iugo-core.min.js
2 lines (2 loc) · 3.15 KB
/
iugo-core.min.js
1
2
/* Author Chris Scott, MIT license */
window.$iugo={};$iugo.$internals={};$iugo.$internals.registerModelMember=function(a,b){Object.defineProperty(a,b,{get:function(){return this.$[b]},set:function(a){this.updateView(b,a);this.$[b]=a;$iugo.$internals.applySetters(a,this,[b],a)}})};$iugo.$internals.applySetters=function(a,b,c,f){if(a instanceof Object||a instanceof Array){for(var d in a){$iugo.$internals.registerProperty(a,d,b,c);var e=c.concat([d]);$iugo.$internals.applySetters(a[d],b,e,f)}a instanceof Array&&$iugo.$internals.registerArray(a,b,c)}};$iugo.$internals.registerProperty=function(a,b,c,f){c.$[f.concat([b]).join(".")]=a[b];Object.defineProperty(a,b,{get:function(){return c.$[f.concat([b]).join(".")]},set:function(d){c.$[f.concat([b]).join(".")]=d;$iugo.$internals.setChildMembers(a,c,f);c.updateView(f[0],c[f[0]])}})};$iugo.$internals.setChildMembers=function(a,b,c){if(a instanceof Object||a instanceof Array)for(var f in a){var d=c.concat([f]);b.$[d.join(".")]=a[f];$iugo.$internals.setChildMembers(a[f],b,d)}};$iugo.$internals.registerArray=function(a,b,c){a.push=function(){var a=Array.prototype.push.apply(this,arguments);b[c[0]]=b[c[0]];return a};a.pop=function(){var f=$iugo.$internals.clone(Array.prototype.pop.call(a));b[c[0]]=b[c[0]];return f};a.unshift=function(){for(var a=$iugo.$internals.clone(this),d=0;d<arguments.length;d++)this[d]=arguments[d];for(var e=0;e<a.length;e++)this[d++]=a[e];b[c[0]]=b[c[0]];return this.length};a.shift=function(){var a=$iugo.$internals.clone(Array.prototype.shift.call(this));b[c[0]]=b[c[0]];return a};a.reverse=function(){for(var a=$iugo.$internals.clone(this),b=0;b<this.length;b++)this[b]=a[this.length-1-b];return this};a.sort=function(){var a=$iugo.$internals.clone(this);Array.prototype.sort.apply(a,arguments);for(var b=0;b<this.length;b++)this[b]=a[b];return this};a.splice=function(){for(var a=$iugo.$internals.clone(this),d=0;d<a.length,d<arguments[0];d++)this[d]=a[d];for(var e=2;e<arguments.length;e++)this[d++]=arguments[e];for(e=arguments[0]+arguments[1];e<a.length;e++)this[d++]=a[e];for(e=d;e<a.length;e++)this.pop();b[c[0]]=b[c[0]];return this}};$iugo.$internals.clone=function(a){var b;b=a instanceof Array?[]:{};for(var c in a)b[c]=a[c]instanceof Object||a[c]instanceof Array?$iugo.$internals.clone(a[c]):a[c];return b};$iugo.$internals.MVVC=function(a,b,c){this.view=b?b:document.body;this.viewcontroller=c?c:{};for(b=0;b<this.initializers.length;b++)if(this.initializers[b]instanceof Function)this.initializers[b](this.view);this.model=a};$iugo.$internals.MVVC.prototype={$:{},set model(a){for(var b in a)$iugo.$internals.registerModelMember(this,b),this[b]=a[b]},updateView:function(a,b){for(var c=0;c<this.defaultViewcontrollers.length;c++)if(this.defaultViewcontrollers[c]instanceof Function)this.defaultViewcontrollers[c](a,b,this.view);if("undefined"!==typeof this.viewcontroller[a]&&this.viewcontroller[a]instanceof Function)this.viewcontroller[a](b,this.view)},defaultViewcontrollers:[],initializers:[]};$iugo.defaultViewcontrollers=$iugo.$internals.MVVC.prototype.defaultViewcontrollers;$iugo.initializers=$iugo.$internals.MVVC.prototype.initializers;$iugo.store={};window.Iugo=function(a,b,c){return new $iugo.$internals.MVVC(a,b,c)};