-
Notifications
You must be signed in to change notification settings - Fork 9
/
infuser.min.js
1 lines (1 loc) · 3.31 KB
/
infuser.min.js
1
(function(a,b){var c={templates:{},storeTemplate:function(a,b){this.templates[a]=b},getTemplate:function(a){return this.templates[a]},purge:function(){this.templates={}}},d={templateIds:[],storeTemplate:function(a,b){var c=document.getElementById(a);c===null&&(this.templateIds.push(a),c=document.createElement("script"),c.type="text/html",c.id=a,document.body.appendChild(c)),c.text=b},getTemplate:function(a){return document.getElementById(a)},purge:function(){for(var a=0;a<this.templateIds.length;a++)document.body.removeChild(document.getElementById(this.templateIds[a]));this.templateIds=[]}},e="<div class='infuser-error'>The template <a href='{TEMPLATEURL}'>{TEMPLATEID}</a> could not be loaded. {STATUS}</div>",f=function(a,b,c){return e.replace("{STATUS}",a).replace("{TEMPLATEID}",b).replace("{TEMPLATEURL}",c)},g=[],h={getTemplatePath:function(a){var c=j.config.templatePrefix+a+j.config.templateSuffix;return j.config.templateUrl===b||j.config.templateUrl===""?c:j.config.templateUrl+"/"+c},templateGetSuccess:function(a,b){return function(c){j.store.storeTemplate(a,c),b(j.store.getTemplate(a))}},templateGetError:function(a,b,c){return function(d){$.inArray(a,g)===-1&&g.push(a);var e=f("HTTP Status code: "+d.status,a,b);j.store.storeTemplate(a,e),c(j.store.getTemplate(a))}}},i={inProgress:{},direct:function(a){var b=a.type+"_"+a.dataType+"_"+a.url,c=this;if(!c.inProgress[b]){var d=function(){delete c.inProgress[b]},e={successCallbacks:[a.success],errorCallbacks:[a.error],success:function(a){$.each($(c.inProgress[b].successCallbacks),function(b,c){c(a)}),d()},error:function(a){$.each($(c.inProgress[b].errorCallbacks),function(b,c){c(a)}),d()}};c.inProgress[b]=$.extend({},a,e),$.ajax(c.inProgress[b])}else c.inProgress[b].successCallbacks.push(a.success),c.inProgress[b].errorCallbacks.push(a.error)}},j={storageOptions:{hash:c,script:d},store:c,config:{templateUrl:"",templateSuffix:".html",templatePrefix:""},defaults:{domTargetResolver:function(a){return"#"+a},loadingTemplate:{content:'<div class="infuser-loading">Loading...</div>',transitionIn:function(a){var b=this;$(a).hide(),$(a).html(b.content),$(a).fadeIn()},transitionOut:function(a){$(a).html("")}},postRender:function(a){},preRender:function(a,b){},render:function(a,b){$(a).children().length===0?$(a).append($(b)):$(a).children().replaceWith($(b))},renderInstruction:function(a,b){return a},useLoadingTemplate:!0},get:function(a,b){var c=this.store.getTemplate(a),d,e;!c||$.inArray(a,g)!==-1?(d=h.getTemplatePath(a),e={async:!0,url:d,dataType:"html",type:"GET",success:h.templateGetSuccess(a,b),error:h.templateGetError(a,d,b)},i.direct(e)):b(c)},getSync:function(a){var b=this.store.getTemplate(a),c,d,e;if(!b||$.inArray(a,g)!==-1)c=h.getTemplatePath(a),d=null,e={async:!1,url:c,dataType:"html",type:"GET",success:function(a){d=a},error:function(b){$.inArray(a)===-1&&g.push(a),d=f("HTTP Status code: exception.status",a,c)}},$.ajax(e),d===null?d=f("An unknown error occurred.",a,c):(this.store.storeTemplate(a,d),b=this.store.getTemplate(a));return b},infuse:function(a,b){var c=this,d=$.extend({},c.defaults,b),e=d.targetSelector||d.domTargetResolver(a);d.useLoadingTemplate&&d.loadingTemplate.transitionIn(e),c.get(a,function(a){var b=a;d.preRender(e,b),b=d.renderInstruction(b,d.model),d.useLoadingTemplate&&d.loadingTemplate.transitionOut(e),d.render(e,b),d.postRender(e)})}};a.infuser=j})(window)