nnnjjj123
2020-11-17 1b2c1edb61190eeb19f465ff031eaa3b2a1b8dbc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/*
 * 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}};
})();