UNPKG

growppt

Version:

A simple, in-browser, markdown-driven presentation framework

3 lines (2 loc) 7.78 kB
/*! mix 0.3.0 2013-05-05 by Theowang */ (function(t,e){"use strict";function n(t,e){return b.toString.call(t).slice(8,-1)===e}function i(t,n,i,r){if(0===arguments.length)throw Error("Module: I need a agrument");H.isFunction(t)?(i=t,t=e,n=F):H.isArray(t)?(n=F,t=e):H.isFunction(n)&&(i=n,n=F),this.id=t?a(t)[2]:t,this.status="uninitialized",H.isString(n)&&(n=n.split(",")),this.dependencies=n,this.factory=i,this.root=r||C,this.undef=[],this.id&&(D[this.id]="uninitialized"),this.checkDependencies(n),this.define()}function r(t){return"THEO"===t.amd}function s(t){return"defined"===D[t]}function o(){this.status="unfulfilled",this.fulfilledHandlers=[],this.errorHandlers=[],this.reason=""}function u(t){return t instanceof o}function a(t,e){var n,i,r,s=t,o=C.alias;if(e=e||N.baseURL,e=e.substr(0,e.lastIndexOf("/")),r=t,E.test(t)&&o[t])s=o[t];else if(/^(\w+)(\d)?:.*/.test(t))s=t;else if(n=t.charAt(0),i=t.slice(0,2),"."!==n&&"/"!==n)s=e+"/"+t;else if("./"===i)r=t.substr(2),s=e+"/"+r;else if(".."===i){var u=e.split("/");n=t.replace(/\.\.\//g,function(){return u.pop(),""}),r=n,s=u.join("/")+"/"+n}var a="js";return n=s.replace(/[?#].*/,""),/\.(\w+)$/.test(n)&&(a=RegExp.$1),"css"===a||n!==s||j.test(s)||(s+=".js"),[s,a,r]}function f(t,e,n,i,r,s){if(H.isObject(t))return e=t.callback,n=t.attrs,i=t.timeout,r=t.fail,s=t.complete,t=t.src,f(t,e,n,i,r,s);var o=p.createElement("script"),u=!1;if(H.isObject(n))for(var l in n)o.setAttribute(l,n[l]);var d=a(t);return t=o.src=d[0].replace(/\/\/$/,'/'),o.async=!0,o.type="text/javascript",o.charset=N.charset,s=H.isFunction(s)?s:y,o.onload=o.onreadystatechange=function(n){n=n||b,u||"load"!==n.type&&!/loaded|complete|undefined/.test(o.readyState)||(u=!0,c(o),B[t]="loaded",H.isFunction(e)&&e(),s("load"))},o.onerror=function(){u=!0,B[t]="error",H.isFunction(r)&&r(),s("error")},i=H.isNumber(i)?i:N.timeout,i&&g(function(){u||(u=!0,B[t]="timeout",s("timeout"))},i),B[t]="pending",O.insertBefore(o,S),C}function c(t){t.onload=t.onerror=t.onreadystatechange=null,t.parentNode&&g(function(){t.parentNode.removeChild(t),t=null},0)}function l(t,e,n,i,r,s){if(H.isObject(t))return e=t.callback,n=t.attrs,i=t.timeout,r=t.fail,s=t.complete,t=t.href,l(t,e,n,i,r,s);var o=p.createElement("link"),u=!1;i=H.isNumber(i)?i:N.timeout;var f=a(t);if(t=o.href=f[0],o.rel="stylesheet",o.type="text/css",H.isObject(n))for(var c in n)o.setAttribute(c,n[c]);if(H.isFunction(e)){s=H.isFunction(s)?s:y;var d,h;d=function(){u||(u=!0,o.onload=o.onerror=o.onreadystatechange=null,B[t]="loaded",H.isFunction(e)&&e(),s("load"))},H.isFunction(r)&&(h=function(){u||(u=!0,o.onload=o.onerror=o.onreadystatechange=null,B[t]="error",r(),s("error"))}),U(o,d,h),i&&g(function(){u||(u=!0,B[t]="timeout",s("timeout"))},i)}return B[t]="pending",O.insertBefore(o,S),C}function d(t){for(var e in t)t.hasOwnProperty(e)&&t[e]&&(H.isArray(t[e])&&(t[e].length=0),H.isFunction(t[e].destroy)&&t[e].destroy(),delete t[e])}function h(t,e,n){var i,r=x.call(arguments),s=1;for(n=H.isBoolean(n)?n:!0;e=r[s++];)if(H.isArray(e))for(var o=0,u=e.length;u>o;o++)h(t,e[o],n);else for(i in e)!n&&i in t||(t[i]=e[i]);return t}var p=t.document,g=t.setTimeout,m=function(){var t=p.getElementsByTagName("script");return t[t.length-1]}(),v="MixJS 0.3 butterfly",y=function(){},b={},F=[],O=p.head||p.getElementsByTagName("head")[0]||p.documentElement,S=O.getElementsByTagName("base")[0]||null,x=F.slice,A=function(t){var e=t.hasAttribute?t.src:t.getAttribute("src",4);return e.substr(0,e.lastIndexOf("/"))+"/"}(m),j=/\.js$/i,w=/\.css$/i,E=/^[-\w\d_$]{2,}$/i,H={},N={timeout:2e4,baseURL:A,charset:"utf-8"},k={},B={},D={},J={};"Function,String,Array,Number".replace(/[^, ]+/g,function(t){H["is"+t]=function(e){return n(e,t)}}),H.isFunction=function(t){return"function"==typeof t},H.isObject=function(t){return"object"==typeof t},H.isBoolean=function(t){return t===!0||t===!1||n(t,"Boolean")},H.isUndefined=function(t){return t===e};var $=t.navigator.userAgent;i.prototype={constructor:i,define:function(){this.canDefine()?this.namespace():"pending"!==this.status&&(this.status="pending",this.id&&(D[this.id]=this.status),this.loadDeps())},namespace:function(){for(var e,n,i=H.isString(this.id)?this.id.split("/"):F,r=this.root;e=i.shift();)n=e,i.length&&(r=r[e]=r[e]||{});try{var s=H.isFunction(this.factory)&&this.factory.apply(t,this.getArgs());s&&(s.amd="THEO",r[n]=s,this.id&&(D[this.id]="defined"))}catch(o){throw this.id&&(D[this.id]="error"),Error("Module.namespace error:id=>"+this.id+";undef=>"+this.undef.join(",")+";info=>"+o.message)}this.id&&H.isArray(J[this.id])&&C.each(J[this.id],function(t){u(t)&&t.resolve()}),this.destroy()},getFn:function(t){t=t.split("/");for(var e,n=this.root;e=t.shift();)n=n[e];return n},getArgs:function(){for(var t,e=this.dependencies,n=[this.root],i=0,r=e.length;r>i;i++)t=e[i],n.push(this.getFn(t));return n},canDefine:function(){for(var t,e=this.undef,n=e.length;n--;)if(t=e[n],!s(t)){if((w.test(t)||j.test(t))&&C.loaded(t))continue;return!1}return!0},loadDeps:function(){var t,e=this,n=e.undef;C.each(n,function(n){if(t=new o,J[n]=J[n]?J[n]:[],J[n].push(t.done(function(){e.define()})),"pending"!==D[n]){var i=C.alias(n);if(i&&i.length){var r=new o;r.done(function(){e.define()});var s=i.length,u=function(){s--,0===s&&(D[n]="defined",r.resolve())};C.each(i,function(t){if(w.test(t))C.loadCSS(t,u);else if(j.test(t))C.loadJS(t,u);else{var e=new o;J[t]=J[t]?J[t]:[],J[t].push(e.done(u)),C.loadJS(t)}})}else w.test(n)?C.loadCSS(n,function(){e.define()}):j.test(n)?C.loadJS(n,function(){e.define()}):C.loadJS(n)}})},checkDependencies:function(t){var e=this;C.each(t,function(t){t=a(t)[2],s(t)||e.undef.push(t)})},destroy:function(){d(this)}},o.prototype={constructor:o,reject:function(t){return"unfulfilled"!==this.status?this:(this.reason=t,this.status="failed",this.fire(this.errorHandlers,t))},isResolved:function(){return"fulfilled"===this.status},resolve:function(t){return"unfulfilled"!==this.status?this:(this.reason=t,this.status="fulfilled",this.fire(this.fulfilledHandlers,t))},fail:function(t){return this.then(e,t)},always:function(t){return this.then(t,t)},then:function(t,e){switch(this.status){case"unfulfilled":this.add(t,"fulfilled").add(e,"error");break;case"fulfilled":this.fire(t,this.reason);break;case"failed":this.fire(e,this.reason)}return this},done:function(t){return this.then(t)},fire:function(t,e){if(H.isArray(t)){for(var n;n=t.shift();)H.isFunction(n)&&n(e);this.clear()}else H.isFunction(t)&&t(e);return this},add:function(t,e){return e+="Handlers",H.isFunction(t)&&this[e]&&this[e].push(t),this},clear:function(){this.fulfilledHandlers.length=0,this.errorHandlers.length=0}};var M=536>Number($.replace(/.*AppleWebKit\/(\d+)\..*/,"$1")),T=~$.indexOf("Firefox")&&!("onload"in p.createElement("link")),U=M||T?function(t,e){if(H.isFunction(e)){var n=new Image;n.src=t.href,n.error=e}}:function(t,e,n){H.isFunction(e)&&(t.onload=function(){e()}),H.isFunction(n)&&(t.onerror=function(){n()})},C={version:v,mix:h,indexOf:function(t,e,n){if(null==t)return-1;var i=0,r=t.length;if(n&&(i=0>n?Math.max(0,r+n):n),F.indexOf&&t.indexOf===F.indexOf)return t.indexOf(e,n);for(;r>i;i++)if(t[i]===e)return i;return-1},each:F.forEach?function(t,e,n){F.forEach.call(t,e,n)}:function(t,e,n){for(var i=0,r=t.length;r>i;i++)i in t&&e.call(n,t[i],i,t)},defined:s,define:function(t,e,n){return new i(t,e,n),this},use:function(t,n){return new i(e,t,n),this},config:function(t){return H.isObject(t)?(h(N,t),this):N},loaded:function(t){return t=a(t)[0],"loaded"===C.status(t)},status:function(t){return B[t]},alias:function(t,e){if(E.test(t)){if(H.isUndefined(e))return k[t];k[t]=(e+"").split(",")}else H.isObject(t)&&(e=t.path,t=t,C.alias(t,e))},loadJS:f,loadCSS:l,Promise:o,isAMD:r};H.isUndefined(t.define)&&(t.define=C.define),t.MixJS=h(C,H)})(this);