src/cm/media/js/lib/yui/yui_3.10.3/build/loader-base/loader-base.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('loader-base', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
 * The YUI loader core
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 * @module loader
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 * @submodule loader-base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
if (!YUI.Env[Y.version]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
    (function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
        var VERSION = Y.version,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
            BUILD = '/build/',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
            ROOT = VERSION + '/',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
            CDN_BASE = Y.Env.base,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
            GALLERY_VERSION = 'gallery-2013.06.05-22-14',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
            TNT = '2in3',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
            TNT_VERSION = '4',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
            YUI2_VERSION = '2.9.0',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
            COMBO_BASE = CDN_BASE + 'combo?',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
            META = { version: VERSION,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
                              root: ROOT,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
                              base: Y.Env.base,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
                              comboBase: COMBO_BASE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
                              skin: { defaultSkin: 'sam',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
                                           base: 'assets/skins/',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
                                           path: 'skin.css',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
                                           after: ['cssreset',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
                                                          'cssfonts',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
                                                          'cssgrids',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
                                                          'cssbase',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
                                                          'cssreset-context',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
                                                          'cssfonts-context']},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
                              groups: {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
                              patterns: {} },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
            groups = META.groups,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
            yui2Update = function(tnt, yui2, config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
                var root = TNT + '.' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
                        (tnt || TNT_VERSION) + '/' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
                        (yui2 || YUI2_VERSION) + BUILD,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
                    base = (config && config.base) ? config.base : CDN_BASE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
                    combo = (config && config.comboBase) ? config.comboBase : COMBO_BASE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
                groups.yui2.base = base + root;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
                groups.yui2.root = root;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
                groups.yui2.comboBase = combo;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
            galleryUpdate = function(tag, config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
                var root = (tag || GALLERY_VERSION) + BUILD,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
                    base = (config && config.base) ? config.base : CDN_BASE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
                    combo = (config && config.comboBase) ? config.comboBase : COMBO_BASE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
                groups.gallery.base = base + root;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
                groups.gallery.root = root;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
                groups.gallery.comboBase = combo;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
        groups[VERSION] = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
        groups.gallery = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
            ext: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
            combine: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
            comboBase: COMBO_BASE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
            update: galleryUpdate,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
            patterns: { 'gallery-': { },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
                        'lang/gallery-': {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
                        'gallerycss-': { type: 'css' } }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
        groups.yui2 = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
            combine: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
            ext: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
            comboBase: COMBO_BASE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
            update: yui2Update,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
            patterns: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
                'yui2-': {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
                    configFn: function(me) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
                        if (/-skin|reset|fonts|grids|base/.test(me.name)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
                            me.type = 'css';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
                            me.path = me.path.replace(/\.js/, '.css');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
                            // this makes skins in builds earlier than
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
                            // 2.6.0 work as long as combine is false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
                            me.path = me.path.replace(/\/yui2-skin/,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
                                             '/assets/skins/sam/yui2-skin');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
        galleryUpdate();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
        yui2Update();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
        YUI.Env[VERSION] = META;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
    }());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
/*jslint forin: true, maxlen: 350 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
 * Loader dynamically loads script and css files.  It includes the dependency
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
 * information for the version of the library in use, and will automatically pull in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
 * dependencies for the modules requested. It can also load the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
 * files from the Yahoo! CDN, and it can utilize the combo service provided on
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
 * this network to reduce the number of http connections required to download
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
 * YUI files.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
 * @module loader
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
 * @main loader
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
 * @submodule loader-base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
var NOT_FOUND = {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
    NO_REQUIREMENTS = [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
    MAX_URL_LENGTH = 1024,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
    GLOBAL_ENV = YUI.Env,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
    GLOBAL_LOADED = GLOBAL_ENV._loaded,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
    CSS = 'css',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
    JS = 'js',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
    INTL = 'intl',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
    DEFAULT_SKIN = 'sam',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
    VERSION = Y.version,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
    ROOT_LANG = '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
    YObject = Y.Object,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
    oeach = YObject.each,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
    yArray = Y.Array,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
    _queue = GLOBAL_ENV._loaderQueue,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
    META = GLOBAL_ENV[VERSION],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
    SKIN_PREFIX = 'skin-',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
    L = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
    ON_PAGE = GLOBAL_ENV.mods,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
    modulekey,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
    _path = function(dir, file, type, nomin) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
        var path = dir + '/' + file;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
        if (!nomin) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
            path += '-min';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
        path += '.' + (type || CSS);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
        return path;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
    if (!YUI.Env._cssLoaded) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
        YUI.Env._cssLoaded = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
 * The component metadata is stored in Y.Env.meta.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
 * Part of the loader module.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
 * @property meta
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
 * @for YUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
Y.Env.meta = META;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
 * Loader dynamically loads script and css files.  It includes the dependency
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
 * info for the version of the library in use, and will automatically pull in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
 * dependencies for the modules requested. It can load the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
 * files from the Yahoo! CDN, and it can utilize the combo service provided on
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
 * this network to reduce the number of http connections required to download
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
 * YUI files. You can also specify an external, custom combo service to host
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
 * your modules as well.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
        var Y = YUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
        var loader = new Y.Loader({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
            filter: 'debug',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
            base: '../../',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
            root: 'build/',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
            combine: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
            require: ['node', 'dd', 'console']
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
        var out = loader.resolve(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
 * @class Loader
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
 * @param {Object} config an optional set of configuration options.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
 * @param {String} config.base The base dir which to fetch this module from
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
 * @param {String} config.comboBase The Combo service base path. Ex: `http://yui.yahooapis.com/combo?`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
 * @param {String} config.root The root path to prepend to module names for the combo service. Ex: `2.5.2/build/`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
 * @param {String|Object} config.filter A filter to apply to result urls. <a href="#property_filter">See filter property</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
 * @param {Object} config.filters Per-component filter specification.  If specified for a given component, this overrides the filter config.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
 * @param {Boolean} config.combine Use a combo service to reduce the number of http connections required to load your dependencies
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
 * @param {Boolean} [config.async=true] Fetch files in async
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
 * @param {Array} config.ignore: A list of modules that should never be dynamically loaded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
 * @param {Array} config.force A list of modules that should always be loaded when required, even if already present on the page
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
 * @param {HTMLElement|String} config.insertBefore Node or id for a node that should be used as the insertion point for new nodes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
 * @param {Object} config.jsAttributes Object literal containing attributes to add to script nodes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
 * @param {Object} config.cssAttributes Object literal containing attributes to add to link nodes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
 * @param {Number} config.timeout The number of milliseconds before a timeout occurs when dynamically loading nodes.  If not set, there is no timeout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
 * @param {Object} config.context Execution context for all callbacks
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
 * @param {Function} config.onSuccess Callback for the 'success' event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
 * @param {Function} config.onFailure Callback for the 'failure' event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
 * @param {Function} config.onCSS Callback for the 'CSSComplete' event.  When loading YUI components with CSS the CSS is loaded first, then the script.  This provides a moment you can tie into to improve the presentation of the page while the script is loading.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
 * @param {Function} config.onTimeout Callback for the 'timeout' event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
 * @param {Function} config.onProgress Callback executed each time a script or css file is loaded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
 * @param {Object} config.modules A list of module definitions.  See <a href="#method_addModule">Loader.addModule</a> for the supported module metadata
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
 * @param {Object} config.groups A list of group definitions.  Each group can contain specific definitions for `base`, `comboBase`, `combine`, and accepts a list of `modules`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
 * @param {String} config.2in3 The version of the YUI 2 in 3 wrapper to use.  The intrinsic support for YUI 2 modules in YUI 3 relies on versions of the YUI 2 components inside YUI 3 module wrappers.  These wrappers change over time to accomodate the issues that arise from running YUI 2 in a YUI 3 sandbox.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
 * @param {String} config.yui2 When using the 2in3 project, you can select the version of YUI 2 to use.  Valid values are `2.2.2`, `2.3.1`, `2.4.1`, `2.5.2`, `2.6.0`, `2.7.0`, `2.8.0`, `2.8.1` and `2.9.0` [default] -- plus all versions of YUI 2 going forward.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
Y.Loader = function(o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
    var self = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
    //Catch no config passed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
    o = o || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
    modulekey = META.md5;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
     * Internal callback to handle multiple internal insert() calls
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
     * so that css is inserted prior to js
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
     * @property _internalCallback
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
    // self._internalCallback = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
     * Callback that will be executed when the loader is finished
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
     * with an insert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
     * @method onSuccess
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
     * @type function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
    // self.onSuccess = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
     * Callback that will be executed if there is a failure
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
     * @method onFailure
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
     * @type function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
    // self.onFailure = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
     * Callback for the 'CSSComplete' event.  When loading YUI components
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
     * with CSS the CSS is loaded first, then the script.  This provides
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
     * a moment you can tie into to improve the presentation of the page
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
     * while the script is loading.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
     * @method onCSS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
     * @type function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
    // self.onCSS = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
     * Callback executed each time a script or css file is loaded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
     * @method onProgress
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
     * @type function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
    // self.onProgress = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
     * Callback that will be executed if a timeout occurs
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
     * @method onTimeout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
     * @type function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
    // self.onTimeout = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
     * The execution context for all callbacks
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
     * @property context
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
     * @default {YUI} the YUI instance
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
    self.context = Y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
     * Data that is passed to all callbacks
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
     * @property data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
    // self.data = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
     * Node reference or id where new nodes should be inserted before
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
     * @property insertBefore
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
     * @type string|HTMLElement
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
    // self.insertBefore = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
     * The charset attribute for inserted nodes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
     * @property charset
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
     * @type string
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
     * @deprecated , use cssAttributes or jsAttributes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
    // self.charset = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
     * An object literal containing attributes to add to link nodes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
     * @property cssAttributes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
     * @type object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
    // self.cssAttributes = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
     * An object literal containing attributes to add to script nodes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
     * @property jsAttributes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
     * @type object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
    // self.jsAttributes = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
     * The base directory.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
     * @property base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
     * @type string
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
     * @default http://yui.yahooapis.com/[YUI VERSION]/build/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
    self.base = Y.Env.meta.base + Y.Env.meta.root;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
     * Base path for the combo service
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
     * @property comboBase
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
     * @type string
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
     * @default http://yui.yahooapis.com/combo?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
    self.comboBase = Y.Env.meta.comboBase;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
    /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
     * Base path for language packs.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
    // self.langBase = Y.Env.meta.langBase;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
    // self.lang = "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
     * If configured, the loader will attempt to use the combo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
     * service for YUI resources and configured external resources.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
     * @property combine
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
     * @type boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
     * @default true if a base dir isn't in the config
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
    self.combine = o.base &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
        (o.base.indexOf(self.comboBase.substr(0, 20)) > -1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
    * The default seperator to use between files in a combo URL
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
    * @property comboSep
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
    * @type {String}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
    * @default Ampersand
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
    self.comboSep = '&';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
     * Max url length for combo urls.  The default is 1024. This is the URL
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
     * limit for the Yahoo! hosted combo servers.  If consuming
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
     * a different combo service that has a different URL limit
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
     * it is possible to override this default by supplying
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
     * the maxURLLength config option.  The config option will
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
     * only take effect if lower than the default.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
     * @property maxURLLength
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
     * @type int
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
    self.maxURLLength = MAX_URL_LENGTH;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
     * Ignore modules registered on the YUI global
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
     * @property ignoreRegistered
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
     * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
    self.ignoreRegistered = o.ignoreRegistered;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
     * Root path to prepend to module path for the combo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
     * service
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
     * @property root
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
     * @type string
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
     * @default [YUI VERSION]/build/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
    self.root = Y.Env.meta.root;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
     * Timeout value in milliseconds.  If set, self value will be used by
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
     * the get utility.  the timeout event will fire if
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
     * a timeout occurs.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
     * @property timeout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
     * @type int
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
    self.timeout = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
     * A list of modules that should not be loaded, even if
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
     * they turn up in the dependency tree
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
     * @property ignore
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
     * @type string[]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
    // self.ignore = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
     * A list of modules that should always be loaded, even
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
     * if they have already been inserted into the page.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
     * @property force
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
     * @type string[]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
    // self.force = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
    self.forceMap = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
     * Should we allow rollups
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
     * @property allowRollup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
     * @type boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
     * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
    self.allowRollup = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
     * A filter to apply to result urls.  This filter will modify the default
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
     * path for all modules.  The default path for the YUI library is the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
     * minified version of the files (e.g., event-min.js).  The filter property
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
     * can be a predefined filter or a custom filter.  The valid predefined
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
     * filters are:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
     * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
     *  <dt>DEBUG</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
     *  <dd>Selects the debug versions of the library (e.g., event-debug.js).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
     *      This option will automatically include the Logger widget</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
     *  <dt>RAW</dt>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
     *  <dd>Selects the non-minified version of the library (e.g., event.js).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
     *  </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
     * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
     * You can also define a custom filter, which must be an object literal
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
     * containing a search expression and a replace string:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
     *      myFilter: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
     *          'searchExp': "-min\\.js",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
     *          'replaceStr': "-debug.js"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
     *      }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
     * @property filter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
     * @type string| {searchExp: string, replaceStr: string}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
    // self.filter = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
     * per-component filter specification.  If specified for a given
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
     * component, this overrides the filter config.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
     * @property filters
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
     * @type object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
    self.filters = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
     * The list of requested modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
     * @property required
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
     * @type {string: boolean}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
    self.required = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
     * If a module name is predefined when requested, it is checked againsts
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
     * the patterns provided in this property.  If there is a match, the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
     * module is added with the default configuration.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
     * At the moment only supporting module prefixes, but anticipate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
     * supporting at least regular expressions.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
     * @property patterns
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
    // self.patterns = Y.merge(Y.Env.meta.patterns);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
    self.patterns = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
     * The library metadata
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
     * @property moduleInfo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
    // self.moduleInfo = Y.merge(Y.Env.meta.moduleInfo);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
    self.moduleInfo = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
    self.groups = Y.merge(Y.Env.meta.groups);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
     * Provides the information used to skin the skinnable components.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
     * The following skin definition would result in 'skin1' and 'skin2'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
     * being loaded for calendar (if calendar was requested), and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
     * 'sam' for all other skinnable components:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
     *      skin: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
     *          // The default skin, which is automatically applied if not
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
     *          // overriden by a component-specific skin definition.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
     *          // Change this in to apply a different skin globally
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
     *          defaultSkin: 'sam',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
     *          // This is combined with the loader base property to get
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
     *          // the default root directory for a skin. ex:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
     *          // http://yui.yahooapis.com/2.3.0/build/assets/skins/sam/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
     *          base: 'assets/skins/',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
     *          // Any component-specific overrides can be specified here,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
     *          // making it possible to load different skins for different
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
     *          // components.  It is possible to load more than one skin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
     *          // for a given component as well.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
     *          overrides: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
     *              calendar: ['skin1', 'skin2']
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
     *          }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
     *      }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
     * @property skin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
     * @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
    self.skin = Y.merge(Y.Env.meta.skin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
    /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
     * Map of conditional modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
     * @since 3.2.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
    self.conditions = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
    // map of modules with a hash of modules that meet the requirement
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
    // self.provides = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
    self.config = o;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
    self._internal = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
    self._populateCache();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
     * Set when beginning to compute the dependency tree.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
     * Composed of what YUI reports to be loaded combined
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
     * with what has been loaded by any instance on the page
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
     * with the version number specified in the metadata.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
     * @property loaded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
     * @type {string: boolean}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
    self.loaded = GLOBAL_LOADED[VERSION];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
    * Should Loader fetch scripts in `async`, defaults to `true`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
    * @property async
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
    self.async = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
    self._inspectPage();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
    self._internal = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
    self._config(o);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
    self.forceMap = (self.force) ? Y.Array.hash(self.force) : {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
    self.testresults = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
    if (Y.config.tests) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
        self.testresults = Y.config.tests;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
     * List of rollup files found in the library metadata
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
     * @property rollups
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
    // self.rollups = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
     * Whether or not to load optional dependencies for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
     * the requested modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
     * @property loadOptional
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
     * @type boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
     * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
    // self.loadOptional = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
     * All of the derived dependencies in sorted order, which
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
     * will be populated when either calculate() or insert()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
     * is called
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
     * @property sorted
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
     * @type string[]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
    self.sorted = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
    /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
     * A list of modules to attach to the YUI instance when complete.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
     * If not supplied, the sorted list of dependencies are applied.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
     * @property attaching
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
    // self.attaching = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
     * Flag to indicate the dependency tree needs to be recomputed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
     * if insert is called again.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
     * @property dirty
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
     * @type boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
     * @default true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
    self.dirty = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
     * List of modules inserted by the utility
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
     * @property inserted
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
     * @type {string: boolean}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
    self.inserted = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
     * List of skipped modules during insert() because the module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
     * was not defined
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
     * @property skipped
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
    self.skipped = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
    // Y.on('yui:load', self.loadNext, self);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
    self.tested = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
    /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
     * Cached sorted calculate results
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
     * @property results
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
     * @since 3.2.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
    //self.results = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
    if (self.ignoreRegistered) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
        //Clear inpage already processed modules.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
        self._resetModules();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
Y.Loader.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
    * Checks the cache for modules and conditions, if they do not exist
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
    * process the default metadata and populate the local moduleInfo hash.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
    * @method _populateCache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
    _populateCache: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
        var self = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
            defaults = META.modules,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
            cache = GLOBAL_ENV._renderedMods,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
            i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
        if (cache && !self.ignoreRegistered) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
            for (i in cache) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
                if (cache.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
                    self.moduleInfo[i] = Y.merge(cache[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
            cache = GLOBAL_ENV._conditions;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
            for (i in cache) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
                if (cache.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
                    self.conditions[i] = Y.merge(cache[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
            for (i in defaults) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
                if (defaults.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
                    self.addModule(defaults[i], i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
    * Reset modules in the module cache to a pre-processed state so additional
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
    * computations with a different skin or language will work as expected.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
    * @method _resetModules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
    _resetModules: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
        var self = this, i, o,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
            mod, name, details;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
        for (i in self.moduleInfo) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
            if (self.moduleInfo.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
                mod = self.moduleInfo[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
                name = mod.name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
                details  = (YUI.Env.mods[name] ? YUI.Env.mods[name].details : null);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
                if (details) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
                    self.moduleInfo[name]._reset = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
                    self.moduleInfo[name].requires = details.requires || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
                    self.moduleInfo[name].optional = details.optional || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
                    self.moduleInfo[name].supersedes = details.supercedes || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
                if (mod.defaults) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
                    for (o in mod.defaults) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
                        if (mod.defaults.hasOwnProperty(o)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
                            if (mod[o]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
                                mod[o] = mod.defaults[o];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
                delete mod.langCache;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
                delete mod.skinCache;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
                if (mod.skinnable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
                    self._addSkin(self.skin.defaultSkin, mod.name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
    Regex that matches a CSS URL. Used to guess the file type when it's not
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
    specified.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
    @property REGEX_CSS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
    @type RegExp
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
    @final
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
    REGEX_CSS: /\.css(?:[?;].*)?$/i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
    * Default filters for raw and debug
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
    * @property FILTER_DEFS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
    * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
    * @final
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
    * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
    FILTER_DEFS: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
        RAW: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
            'searchExp': '-min\\.js',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
            'replaceStr': '.js'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
        DEBUG: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
            'searchExp': '-min\\.js',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
            'replaceStr': '-debug.js'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
        COVERAGE: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
            'searchExp': '-min\\.js',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
            'replaceStr': '-coverage.js'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
    /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
    * Check the pages meta-data and cache the result.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
    * @method _inspectPage
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
    _inspectPage: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
        var self = this, v, m, req, mr, i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
        //Inspect the page for CSS only modules and mark them as loaded.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
        for (i in self.moduleInfo) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
            if (self.moduleInfo.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
                v = self.moduleInfo[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
                if (v.type && v.type === CSS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
                    if (self.isCSSLoaded(v.name)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
                        self.loaded[i] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
        for (i in ON_PAGE) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
            if (ON_PAGE.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
                v = ON_PAGE[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
                if (v.details) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
                    m = self.moduleInfo[v.name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
                    req = v.details.requires;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
                    mr = m && m.requires;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
                   if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
                       if (!m._inspected && req && mr.length !== req.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
                           // console.log('deleting ' + m.name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
                           delete m.expanded;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
                       }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
                   } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
                       m = self.addModule(v.details, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
                   }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
                   m._inspected = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
               }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
    /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
    * returns true if b is not loaded, and is required directly or by means of modules it supersedes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
    * @method _requires
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
    * @param {String} mod1 The first module to compare
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   779
    * @param {String} mod2 The second module to compare
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   780
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   781
   _requires: function(mod1, mod2) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   782
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   783
        var i, rm, after_map, s,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   784
            info = this.moduleInfo,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   785
            m = info[mod1],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
            other = info[mod2];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
        if (!m || !other) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
        rm = m.expanded_map;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
        after_map = m.after_map;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
        // check if this module should be sorted after the other
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
        // do this first to short circut circular deps
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
        if (after_map && (mod2 in after_map)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
            return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   801
        after_map = other.after_map;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
        // and vis-versa
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
        if (after_map && (mod1 in after_map)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
        // check if this module requires one the other supersedes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
        s = info[mod2] && info[mod2].supersedes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   810
        if (s) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   811
            for (i = 0; i < s.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   812
                if (this._requires(mod1, s[i])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   813
                    return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   814
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   815
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   816
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   817
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   818
        s = info[mod1] && info[mod1].supersedes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
        if (s) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
            for (i = 0; i < s.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
                if (this._requires(mod2, s[i])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
                    return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   824
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   825
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   826
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   827
        // check if this module requires the other directly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   828
        // if (r && yArray.indexOf(r, mod2) > -1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   829
        if (rm && (mod2 in rm)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   830
            return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   831
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   832
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   833
        // external css files should be sorted below yui css
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
        if (m.ext && m.type === CSS && !other.ext && other.type === CSS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
            return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
        return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
    * Apply a new config to the Loader instance
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
    * @method _config
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
    * @param {Object} o The new configuration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
    _config: function(o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
        var i, j, val, a, f, group, groupName, self = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
            mods = [], mod;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
        // apply config values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
        if (o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   851
            for (i in o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   852
                if (o.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   853
                    val = o[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   854
                    //TODO This should be a case
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   855
                    if (i === 'require') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   856
                        self.require(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   857
                    } else if (i === 'skin') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
                        //If the config.skin is a string, format to the expected object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
                        if (typeof val === 'string') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
                            self.skin.defaultSkin = o.skin;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
                            val = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
                                defaultSkin: val
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
                            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   864
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   865
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   866
                        Y.mix(self.skin, val, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
                    } else if (i === 'groups') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
                        for (j in val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
                            if (val.hasOwnProperty(j)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
                                groupName = j;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
                                group = val[j];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
                                self.addGroup(group, groupName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
                                if (group.aliases) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
                                    for (a in group.aliases) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
                                        if (group.aliases.hasOwnProperty(a)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
                                            self.addAlias(group.aliases[a], a);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
                                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
                                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   879
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   880
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   881
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   882
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   883
                    } else if (i === 'modules') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   884
                        // add a hash of module definitions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   885
                        for (j in val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   886
                            if (val.hasOwnProperty(j)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
                                self.addModule(val[j], j);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
                    } else if (i === 'aliases') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
                        for (j in val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
                            if (val.hasOwnProperty(j)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
                                self.addAlias(val[j], j);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
                    } else if (i === 'gallery') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
                        if (this.groups.gallery.update) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
                            this.groups.gallery.update(val, o);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   899
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   900
                    } else if (i === 'yui2' || i === '2in3') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   901
                        if (this.groups.yui2.update) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   902
                            this.groups.yui2.update(o['2in3'], o.yui2, o);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   903
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
                        self[i] = val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   908
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   909
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   910
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   911
        // fix filter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
        f = self.filter;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
        if (L.isString(f)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
            f = f.toUpperCase();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
            self.filterName = f;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
            self.filter = self.FILTER_DEFS[f];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
            if (f === 'DEBUG') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   919
                self.require('yui-log', 'dump');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   920
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   921
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
        if (self.filterName && self.coverage) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
            if (self.filterName === 'COVERAGE' && L.isArray(self.coverage) && self.coverage.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
                for (i = 0; i < self.coverage.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
                    mod = self.coverage[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
                    if (self.moduleInfo[mod] && self.moduleInfo[mod].use) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
                        mods = [].concat(mods, self.moduleInfo[mod].use);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
                        mods.push(mod);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
                self.filters = self.filters || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
                Y.Array.each(mods, function(mod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
                    self.filters[mod] = self.FILTER_DEFS.COVERAGE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   937
                self.filterName = 'RAW';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   938
                self.filter = self.FILTER_DEFS[self.filterName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   939
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   941
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   942
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   943
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   944
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   945
     * Returns the skin module name for the specified skin name.  If a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   946
     * module name is supplied, the returned skin module name is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
     * specific to the module passed in.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
     * @method formatSkin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
     * @param {string} skin the name of the skin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
     * @param {string} mod optional: the name of a module to skin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
     * @return {string} the full skin module name.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
    formatSkin: function(skin, mod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
        var s = SKIN_PREFIX + skin;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
        if (mod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
            s = s + '-' + mod;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
        return s;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
     * Adds the skin def to the module info
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
     * @method _addSkin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
     * @param {string} skin the name of the skin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
     * @param {string} mod the name of the module.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
     * @param {string} parent parent module if this is a skin of a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
     * submodule or plugin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   969
     * @return {string} the module name for the skin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   970
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
    _addSkin: function(skin, mod, parent) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
        var mdef, pkg, name, nmod,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
            info = this.moduleInfo,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
            sinf = this.skin,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   976
            ext = info[mod] && info[mod].ext;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
        // Add a module definition for the module-specific skin css
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
        if (mod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
            name = this.formatSkin(skin, mod);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
            if (!info[name]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
                mdef = info[mod];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
                pkg = mdef.pkg || mod;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
                nmod = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   985
                    skin: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   986
                    name: name,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   987
                    group: mdef.group,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   988
                    type: 'css',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   989
                    after: sinf.after,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   990
                    path: (parent || pkg) + '/' + sinf.base + skin +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
                          '/' + mod + '.css',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
                    ext: ext
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
                };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
                if (mdef.base) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
                    nmod.base = mdef.base;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
                if (mdef.configFn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
                    nmod.configFn = mdef.configFn;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
                this.addModule(nmod, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1005
        return name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1006
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1007
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1008
    * Adds an alias module to the system
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1009
    * @method addAlias
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
    * @param {Array} use An array of modules that makes up this alias
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
    * @param {String} name The name of the alias
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
    * @example
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
    *       var loader = new Y.Loader({});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
    *       loader.addAlias([ 'node', 'yql' ], 'davglass');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
    *       loader.require(['davglass']);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
    *       var out = loader.resolve(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
    *       //out.js will contain Node and YQL modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
    addAlias: function(use, name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
        YUI.Env.aliases[name] = use;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1022
        this.addModule({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1023
            name: name,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1024
            use: use
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1025
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1026
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1027
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
     * Add a new module group
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
     * @method addGroup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
     * @param {Object} config An object containing the group configuration data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
     * @param {String} config.name required, the group name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
     * @param {String} config.base The base directory for this module group
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
     * @param {String} config.root The root path to add to each combo resource path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
     * @param {Boolean} config.combine Should the request be combined
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
     * @param {String} config.comboBase Combo service base path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1036
     * @param {Object} config.modules The group of modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1037
     * @param {String} name the group name.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
     * @example
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
     *      var loader = new Y.Loader({});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
     *      loader.addGroup({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1041
     *          name: 'davglass',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1042
     *          combine: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1043
     *          comboBase: '/combo?',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1044
     *          root: '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1045
     *          modules: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1046
     *              //Module List here
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
     *          }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
     *      }, 'davglass');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1049
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
    addGroup: function(o, name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
        var mods = o.modules,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
            self = this, i, v;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
        name = name || o.name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
        o.name = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
        self.groups[name] = o;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
        if (o.patterns) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
            for (i in o.patterns) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
                if (o.patterns.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
                    o.patterns[i].group = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
                    self.patterns[i] = o.patterns[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1063
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
        if (mods) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
            for (i in mods) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
                if (mods.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
                    v = mods[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
                    if (typeof v === 'string') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
                        v = { name: i, fullpath: v };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
                    v.group = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
                    self.addModule(v, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1076
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1077
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1078
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1079
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1080
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1081
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1082
     * Add a new module to the component metadata.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1083
     * @method addModule
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
     * @param {Object} config An object containing the module data.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
     * @param {String} config.name Required, the component name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
     * @param {String} config.type Required, the component type (js or css)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
     * @param {String} config.path Required, the path to the script from `base`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
     * @param {Array} config.requires Array of modules required by this component
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
     * @param {Array} [config.optional] Array of optional modules for this component
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
     * @param {Array} [config.supersedes] Array of the modules this component replaces
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
     * @param {Array} [config.after] Array of modules the components which, if present, should be sorted above this one
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
     * @param {Object} [config.after_map] Faster alternative to 'after' -- supply a hash instead of an array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
     * @param {Number} [config.rollup] The number of superseded modules required for automatic rollup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
     * @param {String} [config.fullpath] If `fullpath` is specified, this is used instead of the configured `base + path`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1095
     * @param {Boolean} [config.skinnable] Flag to determine if skin assets should automatically be pulled in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1096
     * @param {Object} [config.submodules] Hash of submodules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1097
     * @param {String} [config.group] The group the module belongs to -- this is set automatically when it is added as part of a group configuration.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1098
     * @param {Array} [config.lang] Array of BCP 47 language tags of languages for which this module has localized resource bundles, e.g., `["en-GB", "zh-Hans-CN"]`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1099
     * @param {Object} [config.condition] Specifies that the module should be loaded automatically if a condition is met. This is an object with up to four fields:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
     * @param {String} [config.condition.trigger] The name of a module that can trigger the auto-load
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1101
     * @param {Function} [config.condition.test] A function that returns true when the module is to be loaded.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1102
     * @param {String} [config.condition.ua] The UA name of <a href="UA.html">Y.UA</a> object that returns true when the module is to be loaded. e.g., `"ie"`, `"nodejs"`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1103
     * @param {String} [config.condition.when] Specifies the load order of the conditional module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1104
     *  with regard to the position of the trigger module.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1105
     *  This should be one of three values: `before`, `after`, or `instead`.  The default is `after`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1106
     * @param {Object} [config.testresults] A hash of test results from `Y.Features.all()`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
     * @param {Function} [config.configFn] A function to exectute when configuring this module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
     * @param {Object} config.configFn.mod The module config, modifying this object will modify it's config. Returning false will delete the module's config.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1109
     * @param {String} [name] The module name, required if not in the module data.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1110
     * @return {Object} the module definition or null if the object passed in did not provide all required attributes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1111
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1112
    addModule: function(o, name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1113
        name = name || o.name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1114
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
        if (typeof o === 'string') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1116
            o = { name: name, fullpath: o };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1117
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1118
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
        var subs, i, l, t, sup, s, smod, plugins, plug,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
            j, langs, packName, supName, flatSup, flatLang, lang, ret,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
            overrides, skinname, when, g, p,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
            conditions = this.conditions, trigger;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
        //Only merge this data if the temp flag is set
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
        //from an earlier pass from a pattern or else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
        //an override module (YUI_config) can not be used to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
        //replace a default module.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
        if (this.moduleInfo[name] && this.moduleInfo[name].temp) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
            //This catches temp modules loaded via a pattern
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
            // The module will be added twice, once from the pattern and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1132
            // Once from the actual add call, this ensures that properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1133
            // that were added to the module the first time around (group: gallery)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1134
            // are also added the second time around too.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1135
            o = Y.merge(this.moduleInfo[name], o);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1136
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1137
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1138
        o.name = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
        if (!o || !o.name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
            return null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
        if (!o.type) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
            //Always assume it's javascript unless the CSS pattern is matched.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
            o.type = JS;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
            p = o.path || o.fullpath;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
            if (p && this.REGEX_CSS.test(p)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
                o.type = CSS;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1153
        if (!o.path && !o.fullpath) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1154
            o.path = _path(name, name, o.type);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1155
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1156
        o.supersedes = o.supersedes || o.use;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1157
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1158
        o.ext = ('ext' in o) ? o.ext : (this._internal) ? false : true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
        // Handle submodule logic
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
        subs = o.submodules;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
        this.moduleInfo[name] = o;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
        o.requires = o.requires || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
        Only allowing the cascade of requires information, since
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
        optional and supersedes are far more fine grained than
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
        a blanket requires is.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
        if (this.requires) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
            for (i = 0; i < this.requires.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
                o.requires.push(this.requires[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
        if (o.group && this.groups && this.groups[o.group]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
            g = this.groups[o.group];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
            if (g.requires) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
                for (i = 0; i < g.requires.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1181
                    o.requires.push(g.requires[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
        if (!o.defaults) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
            o.defaults = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
                requires: o.requires ? [].concat(o.requires) : null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1190
                supersedes: o.supersedes ? [].concat(o.supersedes) : null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1191
                optional: o.optional ? [].concat(o.optional) : null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1192
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1193
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
        if (o.skinnable && o.ext && o.temp) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
            skinname = this._addSkin(this.skin.defaultSkin, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
            o.requires.unshift(skinname);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1198
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
        if (o.requires.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
            o.requires = this.filterRequires(o.requires) || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1202
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1203
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1204
        if (!o.langPack && o.lang) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1205
            langs = yArray(o.lang);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1206
            for (j = 0; j < langs.length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1207
                lang = langs[j];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1208
                packName = this.getLangPackName(lang, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1209
                smod = this.moduleInfo[packName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
                if (!smod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
                    smod = this._addLangPack(lang, o, packName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
        if (subs) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
            sup = o.supersedes || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
            l = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
            for (i in subs) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
                if (subs.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1223
                    s = subs[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1224
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1225
                    s.path = s.path || _path(name, i, o.type);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1226
                    s.pkg = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1227
                    s.group = o.group;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1228
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1229
                    if (s.supersedes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
                        sup = sup.concat(s.supersedes);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
                    smod = this.addModule(s, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
                    sup.push(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1236
                    if (smod.skinnable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
                        o.skinnable = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1238
                        overrides = this.skin.overrides;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
                        if (overrides && overrides[i]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
                            for (j = 0; j < overrides[i].length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1241
                                skinname = this._addSkin(overrides[i][j],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1242
                                         i, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
                                sup.push(skinname);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1245
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
                        skinname = this._addSkin(this.skin.defaultSkin,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
                                        i, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
                        sup.push(skinname);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
                    // looks like we are expected to work out the metadata
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
                    // for the parent module language packs from what is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
                    // specified in the child modules.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
                    if (s.lang && s.lang.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
                        langs = yArray(s.lang);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1257
                        for (j = 0; j < langs.length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1258
                            lang = langs[j];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1259
                            packName = this.getLangPackName(lang, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1260
                            supName = this.getLangPackName(lang, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
                            smod = this.moduleInfo[packName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1263
                            if (!smod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1264
                                smod = this._addLangPack(lang, o, packName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1265
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1266
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1267
                            flatSup = flatSup || yArray.hash(smod.supersedes);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1268
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
                            if (!(supName in flatSup)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
                                smod.supersedes.push(supName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
                            o.lang = o.lang || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
                            flatLang = flatLang || yArray.hash(o.lang);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
                            if (!(lang in flatLang)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
                                o.lang.push(lang);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
// Add rollup file, need to add to supersedes list too
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
                            // default packages
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1284
                            packName = this.getLangPackName(ROOT_LANG, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1285
                            supName = this.getLangPackName(ROOT_LANG, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1286
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1287
                            smod = this.moduleInfo[packName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1288
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1289
                            if (!smod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1290
                                smod = this._addLangPack(lang, o, packName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1291
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1292
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1293
                            if (!(supName in flatSup)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1294
                                smod.supersedes.push(supName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1295
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1296
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1297
// Add rollup file, need to add to supersedes list too
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1298
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1299
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1300
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1301
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1302
                    l++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1303
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1304
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1305
            //o.supersedes = YObject.keys(yArray.hash(sup));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1306
            o.supersedes = yArray.dedupe(sup);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1307
            if (this.allowRollup) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1308
                o.rollup = (l < 4) ? l : Math.min(l - 1, 4);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1309
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1310
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1311
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1312
        plugins = o.plugins;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1313
        if (plugins) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1314
            for (i in plugins) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1315
                if (plugins.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1316
                    plug = plugins[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1317
                    plug.pkg = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1318
                    plug.path = plug.path || _path(name, i, o.type);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1319
                    plug.requires = plug.requires || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1320
                    plug.group = o.group;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1321
                    this.addModule(plug, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1322
                    if (o.skinnable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1323
                        this._addSkin(this.skin.defaultSkin, i, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1324
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1325
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1326
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1327
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1328
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1329
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1330
        if (o.condition) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1331
            t = o.condition.trigger;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1332
            if (YUI.Env.aliases[t]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1333
                t = YUI.Env.aliases[t];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1334
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1335
            if (!Y.Lang.isArray(t)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1336
                t = [t];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1337
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1338
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1339
            for (i = 0; i < t.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1340
                trigger = t[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1341
                when = o.condition.when;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1342
                conditions[trigger] = conditions[trigger] || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1343
                conditions[trigger][name] = o.condition;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1344
                // the 'when' attribute can be 'before', 'after', or 'instead'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1345
                // the default is after.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1346
                if (when && when !== 'after') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1347
                    if (when === 'instead') { // replace the trigger
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1348
                        o.supersedes = o.supersedes || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1349
                        o.supersedes.push(trigger);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1350
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1351
                    // before the trigger
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1352
                        // the trigger requires the conditional mod,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1353
                        // so it should appear before the conditional
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1354
                        // mod if we do not intersede.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1355
                } else { // after the trigger
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1356
                    o.after = o.after || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1357
                    o.after.push(trigger);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1358
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1359
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1360
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1361
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1362
        if (o.supersedes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1363
            o.supersedes = this.filterRequires(o.supersedes);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1364
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1365
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1366
        if (o.after) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1367
            o.after = this.filterRequires(o.after);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1368
            o.after_map = yArray.hash(o.after);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1369
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1370
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1371
        // this.dirty = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1372
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1373
        if (o.configFn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1374
            ret = o.configFn(o);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1375
            if (ret === false) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1376
                delete this.moduleInfo[name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1377
                delete GLOBAL_ENV._renderedMods[name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1378
                o = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1379
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1380
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1381
        //Add to global cache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1382
        if (o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1383
            if (!GLOBAL_ENV._renderedMods) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1384
                GLOBAL_ENV._renderedMods = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1385
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1386
            GLOBAL_ENV._renderedMods[name] = Y.mix(GLOBAL_ENV._renderedMods[name] || {}, o);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1387
            GLOBAL_ENV._conditions = conditions;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1388
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1389
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1390
        return o;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1391
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1392
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1393
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1394
     * Add a requirement for one or more module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1395
     * @method require
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1396
     * @param {string[] | string*} what the modules to load.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1397
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1398
    require: function(what) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1399
        var a = (typeof what === 'string') ? yArray(arguments) : what;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1400
        this.dirty = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1401
        this.required = Y.merge(this.required, yArray.hash(this.filterRequires(a)));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1402
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1403
        this._explodeRollups();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1404
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1405
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1406
    * Grab all the items that were asked for, check to see if the Loader
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1407
    * meta-data contains a "use" array. If it doesm remove the asked item and replace it with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1408
    * the content of the "use".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1409
    * This will make asking for: "dd"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1410
    * Actually ask for: "dd-ddm-base,dd-ddm,dd-ddm-drop,dd-drag,dd-proxy,dd-constrain,dd-drop,dd-scroll,dd-drop-plugin"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1411
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1412
    * @method _explodeRollups
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1413
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1414
    _explodeRollups: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1415
        var self = this, m, m2, i, a, v, len, len2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1416
        r = self.required;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1417
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1418
        if (!self.allowRollup) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1419
            for (i in r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1420
                if (r.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1421
                    m = self.getModule(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1422
                    if (m && m.use) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1423
                        len = m.use.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1424
                        for (a = 0; a < len; a++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1425
                            m2 = self.getModule(m.use[a]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1426
                            if (m2 && m2.use) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1427
                                len2 = m2.use.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1428
                                for (v = 0; v < len2; v++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1429
                                    r[m2.use[v]] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1430
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1431
                            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1432
                                r[m.use[a]] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1433
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1434
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1435
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1436
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1437
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1438
            self.required = r;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1439
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1440
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1441
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1442
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1443
    * Explodes the required array to remove aliases and replace them with real modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1444
    * @method filterRequires
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1445
    * @param {Array} r The original requires array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1446
    * @return {Array} The new array of exploded requirements
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1447
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1448
    filterRequires: function(r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1449
        if (r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1450
            if (!Y.Lang.isArray(r)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1451
                r = [r];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1452
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1453
            r = Y.Array(r);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1454
            var c = [], i, mod, o, m;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1455
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1456
            for (i = 0; i < r.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1457
                mod = this.getModule(r[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1458
                if (mod && mod.use) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1459
                    for (o = 0; o < mod.use.length; o++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1460
                        //Must walk the other modules in case a module is a rollup of rollups (datatype)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1461
                        m = this.getModule(mod.use[o]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1462
                        if (m && m.use && (m.name !== mod.name)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1463
                            c = Y.Array.dedupe([].concat(c, this.filterRequires(m.use)));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1464
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1465
                            c.push(mod.use[o]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1466
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1467
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1468
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1469
                    c.push(r[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1470
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1471
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1472
            r = c;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1473
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1474
        return r;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1475
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1476
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1477
     * Returns an object containing properties for all modules required
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1478
     * in order to load the requested module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1479
     * @method getRequires
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1480
     * @param {object}  mod The module definition from moduleInfo.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1481
     * @return {array} the expanded requirement list.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1482
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1483
    getRequires: function(mod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1484
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1485
        if (!mod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1486
            //console.log('returning no reqs for ' + mod.name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1487
            return NO_REQUIREMENTS;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1488
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1489
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1490
        if (mod._parsed) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1491
            //console.log('returning requires for ' + mod.name, mod.requires);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1492
            return mod.expanded || NO_REQUIREMENTS;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1493
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1494
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1495
        //TODO add modue cache here out of scope..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1496
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1497
        var i, m, j, add, packName, lang, testresults = this.testresults,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1498
            name = mod.name, cond,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1499
            adddef = ON_PAGE[name] && ON_PAGE[name].details,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1500
            d, go, def,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1501
            r, old_mod,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1502
            o, skinmod, skindef, skinpar, skinname,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1503
            intl = mod.lang || mod.intl,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1504
            info = this.moduleInfo,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1505
            ftests = Y.Features && Y.Features.tests.load,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1506
            hash, reparse;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1507
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1508
        // console.log(name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1509
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1510
        // pattern match leaves module stub that needs to be filled out
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1511
        if (mod.temp && adddef) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1512
            old_mod = mod;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1513
            mod = this.addModule(adddef, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1514
            mod.group = old_mod.group;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1515
            mod.pkg = old_mod.pkg;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1516
            delete mod.expanded;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1517
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1518
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1519
        // console.log('cache: ' + mod.langCache + ' == ' + this.lang);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1520
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1521
        //If a skin or a lang is different, reparse..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1522
        reparse = !((!this.lang || mod.langCache === this.lang) && (mod.skinCache === this.skin.defaultSkin));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1523
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1524
        if (mod.expanded && !reparse) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1525
            return mod.expanded;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1526
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1527
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1528
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1529
        d = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1530
        hash = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1531
        r = this.filterRequires(mod.requires);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1532
        if (mod.lang) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1533
            //If a module has a lang attribute, auto add the intl requirement.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1534
            d.unshift('intl');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1535
            r.unshift('intl');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1536
            intl = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1537
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1538
        o = this.filterRequires(mod.optional);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1539
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1540
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1541
        mod._parsed = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1542
        mod.langCache = this.lang;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1543
        mod.skinCache = this.skin.defaultSkin;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1544
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1545
        for (i = 0; i < r.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1546
            if (!hash[r[i]]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1547
                d.push(r[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1548
                hash[r[i]] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1549
                m = this.getModule(r[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1550
                if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1551
                    add = this.getRequires(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1552
                    intl = intl || (m.expanded_map &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1553
                        (INTL in m.expanded_map));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1554
                    for (j = 0; j < add.length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1555
                        d.push(add[j]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1556
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1557
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1558
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1559
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1560
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1561
        // get the requirements from superseded modules, if any
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1562
        r = this.filterRequires(mod.supersedes);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1563
        if (r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1564
            for (i = 0; i < r.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1565
                if (!hash[r[i]]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1566
                    // if this module has submodules, the requirements list is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1567
                    // expanded to include the submodules.  This is so we can
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1568
                    // prevent dups when a submodule is already loaded and the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1569
                    // parent is requested.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1570
                    if (mod.submodules) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1571
                        d.push(r[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1572
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1573
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1574
                    hash[r[i]] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1575
                    m = this.getModule(r[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1576
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1577
                    if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1578
                        add = this.getRequires(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1579
                        intl = intl || (m.expanded_map &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1580
                            (INTL in m.expanded_map));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1581
                        for (j = 0; j < add.length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1582
                            d.push(add[j]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1583
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1584
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1585
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1586
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1587
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1588
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1589
        if (o && this.loadOptional) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1590
            for (i = 0; i < o.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1591
                if (!hash[o[i]]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1592
                    d.push(o[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1593
                    hash[o[i]] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1594
                    m = info[o[i]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1595
                    if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1596
                        add = this.getRequires(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1597
                        intl = intl || (m.expanded_map &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1598
                            (INTL in m.expanded_map));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1599
                        for (j = 0; j < add.length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1600
                            d.push(add[j]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1601
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1602
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1603
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1604
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1605
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1606
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1607
        cond = this.conditions[name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1608
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1609
        if (cond) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1610
            //Set the module to not parsed since we have conditionals and this could change the dependency tree.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1611
            mod._parsed = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1612
            if (testresults && ftests) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1613
                oeach(testresults, function(result, id) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1614
                    var condmod = ftests[id].name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1615
                    if (!hash[condmod] && ftests[id].trigger === name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1616
                        if (result && ftests[id]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1617
                            hash[condmod] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1618
                            d.push(condmod);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1619
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1620
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1621
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1622
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1623
                for (i in cond) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1624
                    if (cond.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1625
                        if (!hash[i]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1626
                            def = cond[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1627
                            //first see if they've specfied a ua check
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1628
                            //then see if they've got a test fn & if it returns true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1629
                            //otherwise just having a condition block is enough
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1630
                            go = def && ((!def.ua && !def.test) || (def.ua && Y.UA[def.ua]) ||
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1631
                                        (def.test && def.test(Y, r)));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1632
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1633
                            if (go) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1634
                                hash[i] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1635
                                d.push(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1636
                                m = this.getModule(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1637
                                if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1638
                                    add = this.getRequires(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1639
                                    for (j = 0; j < add.length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1640
                                        d.push(add[j]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1641
                                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1642
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1643
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1644
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1645
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1646
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1647
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1648
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1649
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1650
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1651
        // Create skin modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1652
        if (mod.skinnable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1653
            skindef = this.skin.overrides;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1654
            for (i in YUI.Env.aliases) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1655
                if (YUI.Env.aliases.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1656
                    if (Y.Array.indexOf(YUI.Env.aliases[i], name) > -1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1657
                        skinpar = i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1658
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1659
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1660
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1661
            if (skindef && (skindef[name] || (skinpar && skindef[skinpar]))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1662
                skinname = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1663
                if (skindef[skinpar]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1664
                    skinname = skinpar;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1665
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1666
                for (i = 0; i < skindef[skinname].length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1667
                    skinmod = this._addSkin(skindef[skinname][i], name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1668
                    if (!this.isCSSLoaded(skinmod, this._boot)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1669
                        d.push(skinmod);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1670
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1671
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1672
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1673
                skinmod = this._addSkin(this.skin.defaultSkin, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1674
                if (!this.isCSSLoaded(skinmod, this._boot)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1675
                    d.push(skinmod);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1676
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1677
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1678
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1679
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1680
        mod._parsed = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1681
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1682
        if (intl) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1683
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1684
            if (mod.lang && !mod.langPack && Y.Intl) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1685
                lang = Y.Intl.lookupBestLang(this.lang || ROOT_LANG, mod.lang);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1686
                packName = this.getLangPackName(lang, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1687
                if (packName) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1688
                    d.unshift(packName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1689
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1690
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1691
            d.unshift(INTL);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1692
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1693
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1694
        mod.expanded_map = yArray.hash(d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1695
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1696
        mod.expanded = YObject.keys(mod.expanded_map);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1697
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1698
        return mod.expanded;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1699
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1700
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1701
    * Check to see if named css module is already loaded on the page
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1702
    * @method isCSSLoaded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1703
    * @param {String} name The name of the css file
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1704
    * @return Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1705
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1706
    isCSSLoaded: function(name, skip) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1707
        //TODO - Make this call a batching call with name being an array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1708
        if (!name || !YUI.Env.cssStampEl || (!skip && this.ignoreRegistered)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1709
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1710
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1711
        var el = YUI.Env.cssStampEl,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1712
            ret = false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1713
            mod = YUI.Env._cssLoaded[name],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1714
            style = el.currentStyle; //IE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1715
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1716
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1717
        if (mod !== undefined) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1718
            return mod;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1719
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1720
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1721
        //Add the classname to the element
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1722
        el.className = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1723
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1724
        if (!style) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1725
            style = Y.config.doc.defaultView.getComputedStyle(el, null);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1726
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1727
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1728
        if (style && style.display === 'none') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1729
            ret = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1730
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1731
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1732
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1733
        el.className = ''; //Reset the classname to ''
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1734
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1735
        YUI.Env._cssLoaded[name] = ret;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1736
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1737
        return ret;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1738
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1739
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1740
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1741
     * Returns a hash of module names the supplied module satisfies.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1742
     * @method getProvides
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1743
     * @param {string} name The name of the module.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1744
     * @return {object} what this module provides.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1745
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1746
    getProvides: function(name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1747
        var m = this.getModule(name), o, s;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1748
            // supmap = this.provides;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1749
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1750
        if (!m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1751
            return NOT_FOUND;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1752
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1753
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1754
        if (m && !m.provides) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1755
            o = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1756
            s = m.supersedes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1757
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1758
            if (s) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1759
                yArray.each(s, function(v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1760
                    Y.mix(o, this.getProvides(v));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1761
                }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1762
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1763
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1764
            o[name] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1765
            m.provides = o;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1766
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1767
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1768
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1769
        return m.provides;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1770
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1771
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1772
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1773
     * Calculates the dependency tree, the result is stored in the sorted
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1774
     * property.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1775
     * @method calculate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1776
     * @param {object} o optional options object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1777
     * @param {string} type optional argument to prune modules.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1778
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1779
    calculate: function(o, type) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1780
        if (o || type || this.dirty) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1781
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1782
            if (o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1783
                this._config(o);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1784
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1785
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1786
            if (!this._init) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1787
                this._setup();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1788
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1789
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1790
            this._explode();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1791
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1792
            if (this.allowRollup) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1793
                this._rollup();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1794
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1795
                this._explodeRollups();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1796
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1797
            this._reduce();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1798
            this._sort();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1799
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1800
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1801
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1802
    * Creates a "psuedo" package for languages provided in the lang array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1803
    * @method _addLangPack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1804
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1805
    * @param {String} lang The language to create
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1806
    * @param {Object} m The module definition to create the language pack around
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1807
    * @param {String} packName The name of the package (e.g: lang/datatype-date-en-US)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1808
    * @return {Object} The module definition
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1809
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1810
    _addLangPack: function(lang, m, packName) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1811
        var name = m.name,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1812
            packPath, conf,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1813
            existing = this.moduleInfo[packName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1814
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1815
        if (!existing) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1816
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1817
            packPath = _path((m.pkg || name), packName, JS, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1818
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1819
            conf = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1820
                path: packPath,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1821
                intl: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1822
                langPack: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1823
                ext: m.ext,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1824
                group: m.group,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1825
                supersedes: []
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1826
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1827
            if (m.root) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1828
                conf.root = m.root;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1829
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1830
            if (m.base) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1831
                conf.base = m.base;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1832
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1833
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1834
            if (m.configFn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1835
                conf.configFn = m.configFn;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1836
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1837
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1838
            this.addModule(conf, packName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1839
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1840
            if (lang) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1841
                Y.Env.lang = Y.Env.lang || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1842
                Y.Env.lang[lang] = Y.Env.lang[lang] || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1843
                Y.Env.lang[lang][name] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1844
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1845
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1846
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1847
        return this.moduleInfo[packName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1848
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1849
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1850
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1851
     * Investigates the current YUI configuration on the page.  By default,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1852
     * modules already detected will not be loaded again unless a force
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1853
     * option is encountered.  Called by calculate()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1854
     * @method _setup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1855
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1856
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1857
    _setup: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1858
        var info = this.moduleInfo, name, i, j, m, l,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1859
            packName;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1860
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1861
        for (name in info) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1862
            if (info.hasOwnProperty(name)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1863
                m = info[name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1864
                if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1865
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1866
                    // remove dups
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1867
                    //m.requires = YObject.keys(yArray.hash(m.requires));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1868
                    m.requires = yArray.dedupe(m.requires);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1869
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1870
                    // Create lang pack modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1871
                    //if (m.lang && m.lang.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1872
                    if (m.lang) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1873
                        // Setup root package if the module has lang defined,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1874
                        // it needs to provide a root language pack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1875
                        packName = this.getLangPackName(ROOT_LANG, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1876
                        this._addLangPack(null, m, packName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1877
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1878
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1879
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1880
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1881
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1882
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1883
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1884
        //l = Y.merge(this.inserted);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1885
        l = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1886
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1887
        // available modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1888
        if (!this.ignoreRegistered) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1889
            Y.mix(l, GLOBAL_ENV.mods);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1890
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1891
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1892
        // add the ignore list to the list of loaded packages
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1893
        if (this.ignore) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1894
            Y.mix(l, yArray.hash(this.ignore));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1895
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1896
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1897
        // expand the list to include superseded modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1898
        for (j in l) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1899
            if (l.hasOwnProperty(j)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1900
                Y.mix(l, this.getProvides(j));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1901
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1902
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1903
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1904
        // remove modules on the force list from the loaded list
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1905
        if (this.force) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1906
            for (i = 0; i < this.force.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1907
                if (this.force[i] in l) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1908
                    delete l[this.force[i]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1909
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1910
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1911
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1912
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1913
        Y.mix(this.loaded, l);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1914
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1915
        this._init = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1916
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1917
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1918
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1919
     * Builds a module name for a language pack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1920
     * @method getLangPackName
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1921
     * @param {string} lang the language code.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1922
     * @param {string} mname the module to build it for.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1923
     * @return {string} the language pack module name.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1924
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1925
    getLangPackName: function(lang, mname) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1926
        return ('lang/' + mname + ((lang) ? '_' + lang : ''));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1927
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1928
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1929
     * Inspects the required modules list looking for additional
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1930
     * dependencies.  Expands the required list to include all
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1931
     * required modules.  Called by calculate()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1932
     * @method _explode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1933
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1934
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1935
    _explode: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1936
        //TODO Move done out of scope
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1937
        var r = this.required, m, reqs, done = {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1938
            self = this, name, expound;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1939
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1940
        // the setup phase is over, all modules have been created
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1941
        self.dirty = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1942
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1943
        self._explodeRollups();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1944
        r = self.required;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1945
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1946
        for (name in r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1947
            if (r.hasOwnProperty(name)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1948
                if (!done[name]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1949
                    done[name] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1950
                    m = self.getModule(name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1951
                    if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1952
                        expound = m.expound;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1953
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1954
                        if (expound) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1955
                            r[expound] = self.getModule(expound);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1956
                            reqs = self.getRequires(r[expound]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1957
                            Y.mix(r, yArray.hash(reqs));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1958
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1959
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1960
                        reqs = self.getRequires(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1961
                        Y.mix(r, yArray.hash(reqs));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1962
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1963
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1964
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1965
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1966
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1967
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1968
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1969
    * The default method used to test a module against a pattern
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1970
    * @method _patternTest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1971
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1972
    * @param {String} mname The module being tested
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1973
    * @param {String} pname The pattern to match
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1974
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1975
    _patternTest: function(mname, pname) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1976
        return (mname.indexOf(pname) > -1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1977
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1978
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1979
    * Get's the loader meta data for the requested module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1980
    * @method getModule
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1981
    * @param {String} mname The module name to get
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1982
    * @return {Object} The module metadata
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1983
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1984
    getModule: function(mname) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1985
        //TODO: Remove name check - it's a quick hack to fix pattern WIP
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1986
        if (!mname) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1987
            return null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1988
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1989
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1990
        var p, found, pname,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1991
            m = this.moduleInfo[mname],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1992
            patterns = this.patterns;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1993
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1994
        // check the patterns library to see if we should automatically add
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1995
        // the module with defaults
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1996
        if (!m || (m && m.ext)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1997
            for (pname in patterns) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1998
                if (patterns.hasOwnProperty(pname)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1999
                    p = patterns[pname];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2000
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2001
                    //There is no test method, create a default one that tests
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2002
                    // the pattern against the mod name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2003
                    if (!p.test) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2004
                        p.test = this._patternTest;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2005
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2006
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2007
                    if (p.test(mname, pname)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2008
                        // use the metadata supplied for the pattern
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2009
                        // as the module definition.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2010
                        found = p;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2011
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2012
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2013
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2014
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2015
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2016
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2017
        if (!m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2018
            if (found) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2019
                if (p.action) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2020
                    p.action.call(this, mname, pname);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2021
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2022
                    // ext true or false?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2023
                    m = this.addModule(Y.merge(found), mname);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2024
                    if (found.configFn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2025
                        m.configFn = found.configFn;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2026
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2027
                    m.temp = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2028
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2029
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2030
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2031
            if (found && m && found.configFn && !m.configFn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2032
                m.configFn = found.configFn;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2033
                m.configFn(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2034
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2035
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2036
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2037
        return m;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2038
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2039
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2040
    // impl in rollup submodule
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2041
    _rollup: function() { },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2042
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2043
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2044
     * Remove superceded modules and loaded modules.  Called by
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2045
     * calculate() after we have the mega list of all dependencies
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2046
     * @method _reduce
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2047
     * @return {object} the reduced dependency hash.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2048
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2049
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2050
    _reduce: function(r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2051
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2052
        r = r || this.required;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2053
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2054
        var i, j, s, m, type = this.loadType,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2055
        ignore = this.ignore ? yArray.hash(this.ignore) : false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2056
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2057
        for (i in r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2058
            if (r.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2059
                m = this.getModule(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2060
                // remove if already loaded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2061
                if (((this.loaded[i] || ON_PAGE[i]) &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2062
                        !this.forceMap[i] && !this.ignoreRegistered) ||
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2063
                        (type && m && m.type !== type)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2064
                    delete r[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2065
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2066
                if (ignore && ignore[i]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2067
                    delete r[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2068
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2069
                // remove anything this module supersedes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2070
                s = m && m.supersedes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2071
                if (s) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2072
                    for (j = 0; j < s.length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2073
                        if (s[j] in r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2074
                            delete r[s[j]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2075
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2076
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2077
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2078
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2079
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2080
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2081
        return r;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2082
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2083
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2084
    * Handles the queue when a module has been loaded for all cases
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2085
    * @method _finish
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2086
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2087
    * @param {String} msg The message from Loader
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2088
    * @param {Boolean} success A boolean denoting success or failure
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2089
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2090
    _finish: function(msg, success) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2091
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2092
        _queue.running = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2093
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2094
        var onEnd = this.onEnd;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2095
        if (onEnd) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2096
            onEnd.call(this.context, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2097
                msg: msg,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2098
                data: this.data,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2099
                success: success
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2100
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2101
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2102
        this._continue();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2103
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2104
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2105
    * The default Loader onSuccess handler, calls this.onSuccess with a payload
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2106
    * @method _onSuccess
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2107
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2108
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2109
    _onSuccess: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2110
        var self = this, skipped = Y.merge(self.skipped), fn,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2111
            failed = [], rreg = self.requireRegistration,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2112
            success, msg, i, mod;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2113
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2114
        for (i in skipped) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2115
            if (skipped.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2116
                delete self.inserted[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2117
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2118
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2119
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2120
        self.skipped = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2121
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2122
        for (i in self.inserted) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2123
            if (self.inserted.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2124
                mod = self.getModule(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2125
                if (mod && rreg && mod.type === JS && !(i in YUI.Env.mods)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2126
                    failed.push(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2127
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2128
                    Y.mix(self.loaded, self.getProvides(i));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2129
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2130
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2131
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2132
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2133
        fn = self.onSuccess;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2134
        msg = (failed.length) ? 'notregistered' : 'success';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2135
        success = !(failed.length);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2136
        if (fn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2137
            fn.call(self.context, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2138
                msg: msg,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2139
                data: self.data,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2140
                success: success,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2141
                failed: failed,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2142
                skipped: skipped
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2143
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2144
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2145
        self._finish(msg, success);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2146
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2147
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2148
    * The default Loader onProgress handler, calls this.onProgress with a payload
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2149
    * @method _onProgress
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2150
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2151
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2152
    _onProgress: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2153
        var self = this, i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2154
        //set the internal cache to what just came in.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2155
        if (e.data && e.data.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2156
            for (i = 0; i < e.data.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2157
                e.data[i] = self.getModule(e.data[i].name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2158
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2159
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2160
        if (self.onProgress) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2161
            self.onProgress.call(self.context, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2162
                name: e.url,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2163
                data: e.data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2164
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2165
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2166
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2167
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2168
    * The default Loader onFailure handler, calls this.onFailure with a payload
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2169
    * @method _onFailure
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2170
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2171
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2172
    _onFailure: function(o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2173
        var f = this.onFailure, msg = [], i = 0, len = o.errors.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2175
        for (i; i < len; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2176
            msg.push(o.errors[i].error);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2177
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2178
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2179
        msg = msg.join(',');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2180
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2181
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2182
        if (f) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2183
            f.call(this.context, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2184
                msg: msg,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2185
                data: this.data,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2186
                success: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2187
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2188
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2189
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2190
        this._finish(msg, false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2191
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2192
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2193
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2194
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2195
    * The default Loader onTimeout handler, calls this.onTimeout with a payload
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2196
    * @method _onTimeout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2197
    * @param {Get.Transaction} transaction The Transaction object from `Y.Get`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2198
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2199
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2200
    _onTimeout: function(transaction) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2201
        var f = this.onTimeout;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2202
        if (f) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2203
            f.call(this.context, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2204
                msg: 'timeout',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2205
                data: this.data,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2206
                success: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2207
                transaction: transaction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2208
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2209
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2210
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2211
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2212
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2213
     * Sorts the dependency tree.  The last step of calculate()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2214
     * @method _sort
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2215
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2216
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2217
    _sort: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2218
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2219
        // create an indexed list
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2220
        var s = YObject.keys(this.required),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2221
            // loaded = this.loaded,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2222
            //TODO Move this out of scope
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2223
            done = {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2224
            p = 0, l, a, b, j, k, moved, doneKey;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2225
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2226
        // keep going until we make a pass without moving anything
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2227
        for (;;) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2228
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2229
            l = s.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2230
            moved = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2231
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2232
            // start the loop after items that are already sorted
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2233
            for (j = p; j < l; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2234
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2235
                // check the next module on the list to see if its
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2236
                // dependencies have been met
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2237
                a = s[j];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2238
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2239
                // check everything below current item and move if we
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2240
                // find a requirement for the current item
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2241
                for (k = j + 1; k < l; k++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2242
                    doneKey = a + s[k];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2243
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2244
                    if (!done[doneKey] && this._requires(a, s[k])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2245
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2246
                        // extract the dependency so we can move it up
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2247
                        b = s.splice(k, 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2248
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2249
                        // insert the dependency above the item that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2250
                        // requires it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2251
                        s.splice(j, 0, b[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2252
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2253
                        // only swap two dependencies once to short circut
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2254
                        // circular dependencies
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2255
                        done[doneKey] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2256
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2257
                        // keep working
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2258
                        moved = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2259
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2260
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2261
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2262
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2263
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2264
                // jump out of loop if we moved something
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2265
                if (moved) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2266
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2267
                // this item is sorted, move our pointer and keep going
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2268
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2269
                    p++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2270
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2271
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2272
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2273
            // when we make it here and moved is false, we are
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2274
            // finished sorting
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2275
            if (!moved) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2276
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2277
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2278
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2279
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2280
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2281
        this.sorted = s;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2282
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2283
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2284
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2285
    * Handles the actual insertion of script/link tags
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2286
    * @method _insert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2287
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2288
    * @param {Object} source The YUI instance the request came from
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2289
    * @param {Object} o The metadata to include
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2290
    * @param {String} type JS or CSS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2291
    * @param {Boolean} [skipcalc=false] Do a Loader.calculate on the meta
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2292
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2293
    _insert: function(source, o, type, skipcalc) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2294
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2295
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2296
        // restore the state at the time of the request
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2297
        if (source) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2298
            this._config(source);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2299
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2300
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2301
        // build the dependency list
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2302
        // don't include type so we can process CSS and script in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2303
        // one pass when the type is not specified.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2304
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2305
        var modules = this.resolve(!skipcalc),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2306
            self = this, comp = 0, actions = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2307
            mods = {}, deps, complete;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2308
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2309
        self._refetch = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2310
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2311
        if (type) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2312
            //Filter out the opposite type and reset the array so the checks later work
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2313
            modules[((type === JS) ? CSS : JS)] = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2314
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2315
        if (!self.fetchCSS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2316
            modules.css = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2317
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2318
        if (modules.js.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2319
            comp++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2320
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2321
        if (modules.css.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2322
            comp++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2323
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2324
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2325
        //console.log('Resolved Modules: ', modules);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2326
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2327
        complete = function(d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2328
            actions++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2329
            var errs = {}, i = 0, o = 0, u = '', fn,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2330
                modName, resMods;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2331
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2332
            if (d && d.errors) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2333
                for (i = 0; i < d.errors.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2334
                    if (d.errors[i].request) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2335
                        u = d.errors[i].request.url;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2336
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2337
                        u = d.errors[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2338
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2339
                    errs[u] = u;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2340
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2341
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2342
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2343
            if (d && d.data && d.data.length && (d.type === 'success')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2344
                for (i = 0; i < d.data.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2345
                    self.inserted[d.data[i].name] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2346
                    //If the external module has a skin or a lang, reprocess it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2347
                    if (d.data[i].lang || d.data[i].skinnable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2348
                        delete self.inserted[d.data[i].name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2349
                        self._refetch.push(d.data[i].name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2350
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2351
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2352
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2353
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2354
            if (actions === comp) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2355
                self._loading = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2356
                if (self._refetch.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2357
                    //Get the deps for the new meta-data and reprocess
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2358
                    for (i = 0; i < self._refetch.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2359
                        deps = self.getRequires(self.getModule(self._refetch[i]));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2360
                        for (o = 0; o < deps.length; o++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2361
                            if (!self.inserted[deps[o]]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2362
                                //We wouldn't be to this point without the module being here
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2363
                                mods[deps[o]] = deps[o];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2364
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2365
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2366
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2367
                    mods = Y.Object.keys(mods);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2368
                    if (mods.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2369
                        self.require(mods);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2370
                        resMods = self.resolve(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2371
                        if (resMods.cssMods.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2372
                            for (i=0; i <  resMods.cssMods.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2373
                                modName = resMods.cssMods[i].name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2374
                                delete YUI.Env._cssLoaded[modName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2375
                                if (self.isCSSLoaded(modName)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2376
                                    self.inserted[modName] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2377
                                    delete self.required[modName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2378
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2379
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2380
                            self.sorted = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2381
                            self._sort();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2382
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2383
                        d = null; //bail
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2384
                        self._insert(); //insert the new deps
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2385
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2386
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2387
                if (d && d.fn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2388
                    fn = d.fn;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2389
                    delete d.fn;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2390
                    fn.call(self, d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2391
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2392
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2393
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2394
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2395
        this._loading = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2396
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2397
        if (!modules.js.length && !modules.css.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2398
            actions = -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2399
            complete({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2400
                fn: self._onSuccess
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2401
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2402
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2403
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2404
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2405
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2406
        if (modules.css.length) { //Load CSS first
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2407
            Y.Get.css(modules.css, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2408
                data: modules.cssMods,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2409
                attributes: self.cssAttributes,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2410
                insertBefore: self.insertBefore,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2411
                charset: self.charset,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2412
                timeout: self.timeout,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2413
                context: self,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2414
                onProgress: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2415
                    self._onProgress.call(self, e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2416
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2417
                onTimeout: function(d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2418
                    self._onTimeout.call(self, d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2419
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2420
                onSuccess: function(d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2421
                    d.type = 'success';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2422
                    d.fn = self._onSuccess;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2423
                    complete.call(self, d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2424
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2425
                onFailure: function(d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2426
                    d.type = 'failure';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2427
                    d.fn = self._onFailure;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2428
                    complete.call(self, d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2429
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2430
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2431
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2432
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2433
        if (modules.js.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2434
            Y.Get.js(modules.js, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2435
                data: modules.jsMods,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2436
                insertBefore: self.insertBefore,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2437
                attributes: self.jsAttributes,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2438
                charset: self.charset,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2439
                timeout: self.timeout,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2440
                autopurge: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2441
                context: self,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2442
                async: self.async,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2443
                onProgress: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2444
                    self._onProgress.call(self, e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2445
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2446
                onTimeout: function(d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2447
                    self._onTimeout.call(self, d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2448
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2449
                onSuccess: function(d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2450
                    d.type = 'success';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2451
                    d.fn = self._onSuccess;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2452
                    complete.call(self, d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2453
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2454
                onFailure: function(d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2455
                    d.type = 'failure';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2456
                    d.fn = self._onFailure;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2457
                    complete.call(self, d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2458
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2459
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2460
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2461
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2462
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2463
    * Once a loader operation is completely finished, process any additional queued items.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2464
    * @method _continue
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2465
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2466
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2467
    _continue: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2468
        if (!(_queue.running) && _queue.size() > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2469
            _queue.running = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2470
            _queue.next()();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2471
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2472
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2473
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2474
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2475
     * inserts the requested modules and their dependencies.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2476
     * <code>type</code> can be "js" or "css".  Both script and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2477
     * css are inserted if type is not provided.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2478
     * @method insert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2479
     * @param {object} o optional options object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2480
     * @param {string} type the type of dependency to insert.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2481
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2482
    insert: function(o, type, skipsort) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2483
        var self = this, copy = Y.merge(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2484
        delete copy.require;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2485
        delete copy.dirty;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2486
        _queue.add(function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2487
            self._insert(copy, o, type, skipsort);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2488
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2489
        this._continue();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2490
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2491
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2492
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2493
     * Executed every time a module is loaded, and if we are in a load
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2494
     * cycle, we attempt to load the next script.  Public so that it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2495
     * is possible to call this if using a method other than
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2496
     * Y.register to determine when scripts are fully loaded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2497
     * @method loadNext
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2498
     * @deprecated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2499
     * @param {string} mname optional the name of the module that has
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2500
     * been loaded (which is usually why it is time to load the next
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2501
     * one).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2502
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2503
    loadNext: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2504
        return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2505
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2506
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2507
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2508
     * Apply filter defined for this instance to a url/path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2509
     * @method _filter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2510
     * @param {string} u the string to filter.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2511
     * @param {string} name the name of the module, if we are processing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2512
     * a single module as opposed to a combined url.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2513
     * @return {string} the filtered string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2514
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2515
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2516
    _filter: function(u, name, group) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2517
        var f = this.filter,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2518
            hasFilter = name && (name in this.filters),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2519
            modFilter = hasFilter && this.filters[name],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2520
            groupName = group || (this.moduleInfo[name] ? this.moduleInfo[name].group : null);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2521
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2522
        if (groupName && this.groups[groupName] && this.groups[groupName].filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2523
            modFilter = this.groups[groupName].filter;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2524
            hasFilter = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2525
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2526
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2527
        if (u) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2528
            if (hasFilter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2529
                f = (L.isString(modFilter)) ? this.FILTER_DEFS[modFilter.toUpperCase()] || null : modFilter;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2530
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2531
            if (f) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2532
                u = u.replace(new RegExp(f.searchExp, 'g'), f.replaceStr);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2533
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2534
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2535
        return u;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2536
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2537
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2538
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2539
     * Generates the full url for a module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2540
     * @method _url
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2541
     * @param {string} path the path fragment.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2542
     * @param {String} name The name of the module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2543
     * @param {String} [base=self.base] The base url to use
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2544
     * @return {string} the full url.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2545
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2546
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2547
    _url: function(path, name, base) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2548
        return this._filter((base || this.base || '') + path, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2549
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2550
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2551
    * Returns an Object hash of file arrays built from `loader.sorted` or from an arbitrary list of sorted modules.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2552
    * @method resolve
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2553
    * @param {Boolean} [calc=false] Perform a loader.calculate() before anything else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2554
    * @param {Array} [s=loader.sorted] An override for the loader.sorted array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2555
    * @return {Object} Object hash (js and css) of two arrays of file lists
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2556
    * @example This method can be used as an off-line dep calculator
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2557
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2558
    *        var Y = YUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2559
    *        var loader = new Y.Loader({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2560
    *            filter: 'debug',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2561
    *            base: '../../',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2562
    *            root: 'build/',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2563
    *            combine: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2564
    *            require: ['node', 'dd', 'console']
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2565
    *        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2566
    *        var out = loader.resolve(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2567
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2568
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2569
    resolve: function(calc, s) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2570
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2571
        var len, i, m, url, group, groupName, j, frag,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2572
            comboSource, comboSources, mods, comboBase,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2573
            base, urls, u = [], tmpBase, baseLen, resCombos = {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2574
            self = this, comboSep, maxURLLength,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2575
            inserted = (self.ignoreRegistered) ? {} : self.inserted,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2576
            resolved = { js: [], jsMods: [], css: [], cssMods: [] },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2577
            type = self.loadType || 'js', addSingle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2578
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2579
        if (self.skin.overrides || self.skin.defaultSkin !== DEFAULT_SKIN || self.ignoreRegistered) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2580
            self._resetModules();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2581
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2582
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2583
        if (calc) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2584
            self.calculate();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2585
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2586
        s = s || self.sorted;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2587
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2588
        addSingle = function(m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2589
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2590
            if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2591
                group = (m.group && self.groups[m.group]) || NOT_FOUND;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2592
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2593
                //Always assume it's async
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2594
                if (group.async === false) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2595
                    m.async = group.async;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2596
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2597
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2598
                url = (m.fullpath) ? self._filter(m.fullpath, s[i]) :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2599
                      self._url(m.path, s[i], group.base || m.base);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2600
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2601
                if (m.attributes || m.async === false) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2602
                    url = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2603
                        url: url,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2604
                        async: m.async
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2605
                    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2606
                    if (m.attributes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2607
                        url.attributes = m.attributes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2608
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2609
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2610
                resolved[m.type].push(url);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2611
                resolved[m.type + 'Mods'].push(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2612
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2613
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2614
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2615
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2616
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2617
        len = s.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2618
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2619
        // the default combo base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2620
        comboBase = self.comboBase;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2621
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2622
        url = comboBase;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2623
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2624
        comboSources = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2625
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2626
        for (i = 0; i < len; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2627
            comboSource = comboBase;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2628
            m = self.getModule(s[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2629
            groupName = m && m.group;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2630
            group = self.groups[groupName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2631
            if (groupName && group) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2632
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2633
                if (!group.combine || m.fullpath) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2634
                    //This is not a combo module, skip it and load it singly later.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2635
                    addSingle(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2636
                    continue;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2637
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2638
                m.combine = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2639
                if (group.comboBase) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2640
                    comboSource = group.comboBase;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2641
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2642
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2643
                if ("root" in group && L.isValue(group.root)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2644
                    m.root = group.root;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2645
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2646
                m.comboSep = group.comboSep || self.comboSep;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2647
                m.maxURLLength = group.maxURLLength || self.maxURLLength;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2648
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2649
                if (!self.combine) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2650
                    //This is not a combo module, skip it and load it singly later.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2651
                    addSingle(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2652
                    continue;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2653
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2654
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2655
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2656
            comboSources[comboSource] = comboSources[comboSource] || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2657
            comboSources[comboSource].push(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2658
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2659
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2660
        for (j in comboSources) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2661
            if (comboSources.hasOwnProperty(j)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2662
                resCombos[j] = resCombos[j] || { js: [], jsMods: [], css: [], cssMods: [] };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2663
                url = j;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2664
                mods = comboSources[j];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2665
                len = mods.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2666
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2667
                if (len) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2668
                    for (i = 0; i < len; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2669
                        if (inserted[mods[i]]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2670
                            continue;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2671
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2672
                        m = mods[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2673
                        // Do not try to combine non-yui JS unless combo def
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2674
                        // is found
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2675
                        if (m && (m.combine || !m.ext)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2676
                            resCombos[j].comboSep = m.comboSep;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2677
                            resCombos[j].group = m.group;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2678
                            resCombos[j].maxURLLength = m.maxURLLength;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2679
                            frag = ((L.isValue(m.root)) ? m.root : self.root) + (m.path || m.fullpath);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2680
                            frag = self._filter(frag, m.name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2681
                            resCombos[j][m.type].push(frag);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2682
                            resCombos[j][m.type + 'Mods'].push(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2683
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2684
                            //Add them to the next process..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2685
                            if (mods[i]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2686
                                addSingle(mods[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2687
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2688
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2689
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2690
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2691
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2692
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2693
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2694
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2695
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2696
        for (j in resCombos) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2697
            if (resCombos.hasOwnProperty(j)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2698
                base = j;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2699
                comboSep = resCombos[base].comboSep || self.comboSep;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2700
                maxURLLength = resCombos[base].maxURLLength || self.maxURLLength;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2701
                for (type in resCombos[base]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2702
                    if (type === JS || type === CSS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2703
                        urls = resCombos[base][type];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2704
                        mods = resCombos[base][type + 'Mods'];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2705
                        len = urls.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2706
                        tmpBase = base + urls.join(comboSep);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2707
                        baseLen = tmpBase.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2708
                        if (maxURLLength <= base.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2709
                            maxURLLength = MAX_URL_LENGTH;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2710
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2711
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2712
                        if (len) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2713
                            if (baseLen > maxURLLength) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2714
                                u = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2715
                                for (s = 0; s < len; s++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2716
                                    u.push(urls[s]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2717
                                    tmpBase = base + u.join(comboSep);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2718
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2719
                                    if (tmpBase.length > maxURLLength) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2720
                                        m = u.pop();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2721
                                        tmpBase = base + u.join(comboSep);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2722
                                        resolved[type].push(self._filter(tmpBase, null, resCombos[base].group));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2723
                                        u = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2724
                                        if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2725
                                            u.push(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2726
                                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2727
                                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2728
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2729
                                if (u.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2730
                                    tmpBase = base + u.join(comboSep);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2731
                                    resolved[type].push(self._filter(tmpBase, null, resCombos[base].group));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2732
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2733
                            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2734
                                resolved[type].push(self._filter(tmpBase, null, resCombos[base].group));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2735
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2736
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2737
                        resolved[type + 'Mods'] = resolved[type + 'Mods'].concat(mods);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2738
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2739
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2740
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2741
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2742
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2743
        resCombos = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2744
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2745
        return resolved;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2746
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2747
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2748
    Shortcut to calculate, resolve and load all modules.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2749
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2750
        var loader = new Y.Loader({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2751
            ignoreRegistered: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2752
            modules: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2753
                mod: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2754
                    path: 'mod.js'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2755
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2756
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2757
            requires: [ 'mod' ]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2758
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2759
        loader.load(function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2760
            console.log('All modules have loaded..');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2761
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2762
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2763
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2764
    @method load
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2765
    @param {Callback} cb Executed after all load operations are complete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2766
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2767
    load: function(cb) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2768
        if (!cb) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2769
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2770
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2771
        var self = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2772
            out = self.resolve(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2773
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2774
        self.data = out;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2775
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2776
        self.onEnd = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2777
            cb.apply(self.context || self, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2778
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2779
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2780
        self.insert();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2781
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2782
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2783
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2784
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2785
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2786
}, '@VERSION@', {"requires": ["get", "features"]});