forked from BorisMoore/jsdefer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.defer.min.js
1 lines (1 loc) · 2.5 KB
/
jquery.defer.min.js
1
(function(a,p){var n=p.document,o=n.createElement("a"),i,b,h,j,d={},k=[],f;function e(b,a){if(a.indexOf("://")===-1)a=b+a;o.href=a;return o.href.toLowerCase()}function l(a){return a.slice(0,a.lastIndexOf("/")+1)}function g(a){return typeof a==="string"?[a]:a}function m(a,f){if(!a)return 0;a=g(a);var c,d=a.length;while(d--){c=a[d];if(!b[c])a[d]=e(f,c)}return a}function c(f,a){var c=b[f];if(c)return c;a=e(l(a||""),f);return d[a]||(d[a]={url:a})}a.extend({defer:function(I,j,J){j=j||{};var x,C,l,m,u,E=0,z=j.delayDomReady||i.delayDomReady,L=j.min||i.min,d=c(I,J),r=d.url,K=L&&d.minUrl||d.url,o=a.extend(d,j),s=o.bare,e=o.contains,F=o.loaded,q=o.depends,D=o.multiple,t=d.prntPrms,n=d.promise,G,M,v,A;function H(){var b,g=G||d.runCb;if(!E--){if(!l.isRejected()){if(t)l.resolve(m||(d.result=m=g.call(n,a,j)));else if(e){f=[];g.call(n,a,j);b=e.length;while(b--)c(e[b],r).runCb=f[b].run;f=0;v.resolve();p(e,[],function(){b=e.length;m=[];while(b--)m.push(c(e[b],r).result);l.resolve(m)})}else l.resolve(m||(d.result=m=s?"bare":g.call(n,a,j)));m=D?0:m}z&&h(true)}}function w(){l.reject("fail",r)}function p(d,c,f){c=c||[];var e=d&&d.length;while(e--)c.push(b(d[e],j,r));a.when.apply(a,c).fail(w).done(f||H)}function B(){return a.ajax({url:K,dataType:"script",timeout:o.timeout,cache:!o.noCache,crossDomain:true}).fail(w).done(function(){var b=s?0:k.shift();if(!b){!s&&w();H();return}G=d.runCb=b.run;b.def&&a.deferDef(b.def,r);q=g(b.depends)||[];y(!e&&b.contains);if(q.length){E++;p(q)}})}function y(b){if(b){v=a.Deferred();A=[v.promise()];e=g(b);x=e.length;while(x--)c(e[x],r).prntPrms=A}}if(D||!n){l=a.Deferred();if(F&&eval(F))return l.resolve().promise();if(z)a.readyWait++;u=n;l=a.Deferred();n=d.promise=l.promise();if(s)p(q,0,B);else if(u)p(0,[u]);else if(t)p(q,t);else{y(e);p(q,[B().promise()])}}if(C=j.readyName||d.name)h[C]=n;return n},deferDef:function(f,o){var h,g,i,j=n.getElementsByTagName("script");function k(h,c){if(typeof c==="string")c={url:c};var j=c.minUrl,i=e(g,c.url),f=d[i]||function(){var c=Array.prototype.slice.call(arguments,0);c.unshift(h);return b.apply(a,c)};c.url=i;if(j)c.minUrl=e(g,j);a.extend(f,c);d[i]=b[h]=f;f.name=h}j=j[j.length-1];g=l(o||j.src);if(typeof f==="string")return b[f]||d[e(g,f)];for(h in f)k(h,f[h]);for(h in f){i=c(h);i.depends=m(i.depends,g);i.contains=m(i.contains,g)}},deferSettings:{delayDomReady:false,min:true}});p.$deferRun=function(b,a){a=g(a);a=a&&a.length?{depends:a}:a||{};a.run=b;(f||k).push(a)};i=a.deferSettings;b=a.defer;h=a.ready;j=a.Deferred();j.promise(h);a(function(){j.resolve()})})(jQuery,window);