/* * This is a very simple AMD module loader so that xstyle can be used standalone */ (function(){ var doc = document; // find a script to go off of var scripts = doc.scripts; var baseScript = scripts[scripts.length-1]; var baseUrl = baseScript.src.replace(/[^\/]+\/xstyle[^\/]*js/,''); // a very simple AMD loader define = function(id, deps, factory){ if(!factory){ factory = deps; deps = id; id = 'put-selector/put'; } var waiting = 1; for(var i = 0;i < deps.length; i++){ var dep = deps[i]; var module = modules[dep]; if(!module){ // inject script tag module = modules[dep] = {callbacks: []}; var node = doc.createElement('script'); node.src = baseUrl + dep + '.js'; baseScript.parentNode.insertBefore(node, baseScript); } if(module.callbacks){ // add a callback for this waiting module waiting++; module.callbacks.push((function(i){ return function(value){ deps[i] = value; loaded(); }; })(i)); }else{ deps[i] = module.result; } } module = modules[id] || (modules[id] = {callbacks: []}); loaded(); function loaded(){ if(--waiting < 1){ // done loading, run the factory var result = module.result = factory && factory.apply(this, deps); var callbacks = module.callbacks; for(var i = 0 ; i < callbacks.length; i++){ callbacks[i](result); } module.callbacks = 0; } } }; require = function(deps, factory){ define('', deps, factory); }; var modules = {require: {result: require}}; })();