src/cm/media/js/lib/yui/yui_3.10.3/build/loader-base/loader-base-debug.js
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
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
                        Y.log('Found CSS module on page: ' + v.name, 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
                        self.loaded[i] = true;
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
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
        for (i in ON_PAGE) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
            if (ON_PAGE.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
                v = ON_PAGE[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
                if (v.details) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
                    m = self.moduleInfo[v.name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
                    req = v.details.requires;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
                    mr = m && m.requires;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
                   if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
                       if (!m._inspected && req && mr.length !== req.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
                           // console.log('deleting ' + m.name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
                           delete m.expanded;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
                       }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
                   } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
                       m = self.addModule(v.details, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
                   }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
                   m._inspected = true;
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
    /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
    * 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
   777
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
    * @method _requires
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   779
    * @param {String} mod1 The first module to compare
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   780
    * @param {String} mod2 The second module to compare
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   781
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   782
   _requires: function(mod1, mod2) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   783
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   784
        var i, rm, after_map, s,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   785
            info = this.moduleInfo,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
            m = info[mod1],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
            other = info[mod2];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
        if (!m || !other) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
        rm = m.expanded_map;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
        after_map = m.after_map;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
        // check if this module should be sorted after the other
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
        // do this first to short circut circular deps
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
        if (after_map && (mod2 in after_map)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
            return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   801
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
        after_map = other.after_map;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
        // and vis-versa
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
        if (after_map && (mod1 in after_map)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
        // check if this module requires one the other supersedes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   810
        s = info[mod2] && info[mod2].supersedes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   811
        if (s) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   812
            for (i = 0; i < s.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   813
                if (this._requires(mod1, s[i])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   814
                    return true;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
        s = info[mod1] && info[mod1].supersedes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
        if (s) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
            for (i = 0; i < s.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
                if (this._requires(mod2, s[i])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
                    return false;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   828
        // check if this module requires the other directly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   829
        // if (r && yArray.indexOf(r, mod2) > -1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   830
        if (rm && (mod2 in rm)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   831
            return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   832
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   833
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
        // external css files should be sorted below yui css
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
        if (m.ext && m.type === CSS && !other.ext && other.type === CSS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
            return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
        return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
    * Apply a new config to the Loader instance
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
    * @method _config
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
    * @param {Object} o The new configuration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
    _config: function(o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
        var i, j, val, a, f, group, groupName, self = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
            mods = [], mod;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
        // apply config values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   851
        if (o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   852
            for (i in o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   853
                if (o.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   854
                    val = o[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   855
                    //TODO This should be a case
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   856
                    if (i === 'require') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   857
                        self.require(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
                    } else if (i === 'skin') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
                        //If the config.skin is a string, format to the expected object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
                        if (typeof val === 'string') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
                            self.skin.defaultSkin = o.skin;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
                            val = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
                                defaultSkin: val
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
                        Y.mix(self.skin, val, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
                    } else if (i === 'groups') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
                        for (j in val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
                            if (val.hasOwnProperty(j)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
                                // Y.log('group: ' + j);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
                                groupName = j;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
                                group = val[j];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
                                self.addGroup(group, groupName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
                                if (group.aliases) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
                                    for (a in group.aliases) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
                                        if (group.aliases.hasOwnProperty(a)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
                                            self.addAlias(group.aliases[a], a);
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
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   884
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   885
                    } else if (i === 'modules') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   886
                        // add a hash of module definitions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
                        for (j in val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
                            if (val.hasOwnProperty(j)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
                                self.addModule(val[j], j);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
                    } else if (i === 'aliases') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
                        for (j in val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
                            if (val.hasOwnProperty(j)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
                                self.addAlias(val[j], j);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
                    } else if (i === 'gallery') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   899
                        if (this.groups.gallery.update) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   900
                            this.groups.gallery.update(val, o);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   901
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   902
                    } else if (i === 'yui2' || i === '2in3') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   903
                        if (this.groups.yui2.update) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
                            this.groups.yui2.update(o['2in3'], o.yui2, o);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
                        self[i] = val;
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
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
        // fix filter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
        f = self.filter;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
        if (L.isString(f)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
            f = f.toUpperCase();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
            self.filterName = f;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   919
            self.filter = self.FILTER_DEFS[f];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   920
            if (f === 'DEBUG') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   921
                self.require('yui-log', 'dump');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
        if (self.filterName && self.coverage) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
            if (self.filterName === 'COVERAGE' && L.isArray(self.coverage) && self.coverage.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
                for (i = 0; i < self.coverage.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
                    mod = self.coverage[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
                    if (self.moduleInfo[mod] && self.moduleInfo[mod].use) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
                        mods = [].concat(mods, self.moduleInfo[mod].use);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
                        mods.push(mod);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
                self.filters = self.filters || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
                Y.Array.each(mods, function(mod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   937
                    self.filters[mod] = self.FILTER_DEFS.COVERAGE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   938
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   939
                self.filterName = 'RAW';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
                self.filter = self.FILTER_DEFS[self.filterName];
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   946
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
     * Returns the skin module name for the specified skin name.  If a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
     * module name is supplied, the returned skin module name is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
     * specific to the module passed in.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
     * @method formatSkin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
     * @param {string} skin the name of the skin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
     * @param {string} mod optional: the name of a module to skin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
     * @return {string} the full skin module name.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
    formatSkin: function(skin, mod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
        var s = SKIN_PREFIX + skin;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
        if (mod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
            s = s + '-' + mod;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
        return s;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
     * Adds the skin def to the module info
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
     * @method _addSkin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
     * @param {string} skin the name of the skin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
     * @param {string} mod the name of the module.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   969
     * @param {string} parent parent module if this is a skin of a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   970
     * submodule or plugin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
     * @return {string} the module name for the skin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
    _addSkin: function(skin, mod, parent) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
        var mdef, pkg, name, nmod,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   976
            info = this.moduleInfo,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
            sinf = this.skin,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
            ext = info[mod] && info[mod].ext;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
        // Add a module definition for the module-specific skin css
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
        if (mod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
            name = this.formatSkin(skin, mod);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
            if (!info[name]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
                mdef = info[mod];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   985
                pkg = mdef.pkg || mod;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   986
                nmod = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   987
                    skin: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   988
                    name: name,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   989
                    group: mdef.group,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   990
                    type: 'css',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
                    after: sinf.after,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
                    path: (parent || pkg) + '/' + sinf.base + skin +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
                          '/' + mod + '.css',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
                    ext: ext
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
                };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
                if (mdef.base) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
                    nmod.base = mdef.base;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
                if (mdef.configFn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
                    nmod.configFn = mdef.configFn;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
                this.addModule(nmod, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
                Y.log('Adding skin (' + name + '), ' + parent + ', ' + pkg + ', ' + info[name].path, 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1005
            }
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
        return name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1009
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
    * Adds an alias module to the system
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
    * @method addAlias
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
    * @param {Array} use An array of modules that makes up this alias
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
    * @param {String} name The name of the alias
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
    * @example
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
    *       var loader = new Y.Loader({});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
    *       loader.addAlias([ 'node', 'yql' ], 'davglass');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
    *       loader.require(['davglass']);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
    *       var out = loader.resolve(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
    *       //out.js will contain Node and YQL modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1022
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1023
    addAlias: function(use, name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1024
        YUI.Env.aliases[name] = use;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1025
        this.addModule({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1026
            name: name,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1027
            use: use
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
     * Add a new module group
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
     * @method addGroup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
     * @param {Object} config An object containing the group configuration data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
     * @param {String} config.name required, the group name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
     * @param {String} config.base The base directory for this module group
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1036
     * @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
  1037
     * @param {Boolean} config.combine Should the request be combined
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
     * @param {String} config.comboBase Combo service base path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
     * @param {Object} config.modules The group of modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
     * @param {String} name the group name.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1041
     * @example
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1042
     *      var loader = new Y.Loader({});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1043
     *      loader.addGroup({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1044
     *          name: 'davglass',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1045
     *          combine: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1046
     *          comboBase: '/combo?',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
     *          root: '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
     *          modules: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1049
     *              //Module List here
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
     *          }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
     *      }, 'davglass');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
    addGroup: function(o, name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
        var mods = o.modules,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
            self = this, i, v;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
        name = name || o.name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
        o.name = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
        self.groups[name] = o;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
        if (o.patterns) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
            for (i in o.patterns) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1063
                if (o.patterns.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
                    o.patterns[i].group = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
                    self.patterns[i] = o.patterns[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
        if (mods) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
            for (i in mods) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
                if (mods.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
                    v = mods[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
                    if (typeof v === 'string') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
                        v = { name: i, fullpath: v };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1076
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1077
                    v.group = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1078
                    self.addModule(v, i);
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
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1083
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
     * Add a new module to the component metadata.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
     * @method addModule
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
     * @param {Object} config An object containing the module data.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
     * @param {String} config.name Required, the component name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
     * @param {String} config.type Required, the component type (js or css)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
     * @param {String} config.path Required, the path to the script from `base`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
     * @param {Array} config.requires Array of modules required by this component
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
     * @param {Array} [config.optional] Array of optional modules for this component
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
     * @param {Array} [config.supersedes] Array of the modules this component replaces
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
     * @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
  1095
     * @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
  1096
     * @param {Number} [config.rollup] The number of superseded modules required for automatic rollup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1097
     * @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
  1098
     * @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
  1099
     * @param {Object} [config.submodules] Hash of submodules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
     * @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
  1101
     * @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
  1102
     * @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
  1103
     * @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
  1104
     * @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
  1105
     * @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
  1106
     * @param {String} [config.condition.when] Specifies the load order of the conditional module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
     *  with regard to the position of the trigger module.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
     *  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
  1109
     * @param {Object} [config.testresults] A hash of test results from `Y.Features.all()`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1110
     * @param {Function} [config.configFn] A function to exectute when configuring this module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1111
     * @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
  1112
     * @param {String} [name] The module name, required if not in the module data.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1113
     * @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
  1114
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
    addModule: function(o, name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1116
        name = name || o.name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1117
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1118
        if (typeof o === 'string') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
            o = { name: name, fullpath: o };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
        var subs, i, l, t, sup, s, smod, plugins, plug,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
            j, langs, packName, supName, flatSup, flatLang, lang, ret,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
            overrides, skinname, when, g, p,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
            conditions = this.conditions, trigger;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
        //Only merge this data if the temp flag is set
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
        //from an earlier pass from a pattern or else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
        //an override module (YUI_config) can not be used to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
        //replace a default module.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1132
        if (this.moduleInfo[name] && this.moduleInfo[name].temp) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1133
            //This catches temp modules loaded via a pattern
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1134
            // The module will be added twice, once from the pattern and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1135
            // Once from the actual add call, this ensures that properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1136
            // that were added to the module the first time around (group: gallery)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1137
            // are also added the second time around too.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1138
            o = Y.merge(this.moduleInfo[name], o);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
        o.name = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
        if (!o || !o.name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
            return null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
        if (!o.type) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
            //Always assume it's javascript unless the CSS pattern is matched.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
            o.type = JS;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
            p = o.path || o.fullpath;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
            if (p && this.REGEX_CSS.test(p)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
                Y.log('Auto determined module type as CSS', 'warn', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1153
                o.type = CSS;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1154
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1155
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1156
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1157
        if (!o.path && !o.fullpath) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1158
            o.path = _path(name, name, o.type);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
        o.supersedes = o.supersedes || o.use;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
        o.ext = ('ext' in o) ? o.ext : (this._internal) ? false : true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
        // Handle submodule logic
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
        subs = o.submodules;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
        this.moduleInfo[name] = o;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
        o.requires = o.requires || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
        Only allowing the cascade of requires information, since
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
        optional and supersedes are far more fine grained than
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
        a blanket requires is.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
        if (this.requires) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
            for (i = 0; i < this.requires.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
                o.requires.push(this.requires[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1181
        if (o.group && this.groups && this.groups[o.group]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
            g = this.groups[o.group];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
            if (g.requires) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
                for (i = 0; i < g.requires.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
                    o.requires.push(g.requires[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1190
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1191
        if (!o.defaults) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1192
            o.defaults = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1193
                requires: o.requires ? [].concat(o.requires) : null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
                supersedes: o.supersedes ? [].concat(o.supersedes) : null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
                optional: o.optional ? [].concat(o.optional) : null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1198
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
        if (o.skinnable && o.ext && o.temp) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
            skinname = this._addSkin(this.skin.defaultSkin, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
            o.requires.unshift(skinname);
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.requires.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1205
            o.requires = this.filterRequires(o.requires) || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1206
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1207
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1208
        if (!o.langPack && o.lang) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1209
            langs = yArray(o.lang);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
            for (j = 0; j < langs.length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
                lang = langs[j];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
                packName = this.getLangPackName(lang, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
                smod = this.moduleInfo[packName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
                if (!smod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
                    smod = this._addLangPack(lang, o, packName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
        if (subs) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
            sup = o.supersedes || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1223
            l = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1224
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1225
            for (i in subs) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1226
                if (subs.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1227
                    s = subs[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1228
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1229
                    s.path = s.path || _path(name, i, o.type);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
                    s.pkg = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
                    s.group = o.group;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
                    if (s.supersedes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
                        sup = sup.concat(s.supersedes);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1236
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
                    smod = this.addModule(s, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1238
                    sup.push(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
                    if (smod.skinnable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1241
                        o.skinnable = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1242
                        overrides = this.skin.overrides;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
                        if (overrides && overrides[i]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
                            for (j = 0; j < overrides[i].length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1245
                                skinname = this._addSkin(overrides[i][j],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
                                         i, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
                                sup.push(skinname);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
                        skinname = this._addSkin(this.skin.defaultSkin,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
                                        i, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
                        sup.push(skinname);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
                    // looks like we are expected to work out the metadata
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
                    // for the parent module language packs from what is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1257
                    // specified in the child modules.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1258
                    if (s.lang && s.lang.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1259
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1260
                        langs = yArray(s.lang);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
                        for (j = 0; j < langs.length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
                            lang = langs[j];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1263
                            packName = this.getLangPackName(lang, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1264
                            supName = this.getLangPackName(lang, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1265
                            smod = this.moduleInfo[packName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1266
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1267
                            if (!smod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1268
                                smod = this._addLangPack(lang, o, packName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
                            flatSup = flatSup || yArray.hash(smod.supersedes);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
                            if (!(supName in flatSup)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
                                smod.supersedes.push(supName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
                            o.lang = o.lang || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
                            flatLang = flatLang || yArray.hash(o.lang);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
                            if (!(lang in flatLang)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
                                o.lang.push(lang);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1284
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1285
// Y.log('pack ' + packName + ' should supersede ' + supName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1286
// Add rollup file, need to add to supersedes list too
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1287
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1288
                            // default packages
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1289
                            packName = this.getLangPackName(ROOT_LANG, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1290
                            supName = this.getLangPackName(ROOT_LANG, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1291
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1292
                            smod = this.moduleInfo[packName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1293
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1294
                            if (!smod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1295
                                smod = this._addLangPack(lang, o, packName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1296
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1297
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1298
                            if (!(supName in flatSup)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1299
                                smod.supersedes.push(supName);
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
// Y.log('pack ' + packName + ' should supersede ' + supName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1303
// Add rollup file, need to add to supersedes list too
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1304
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1305
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1306
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1307
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1308
                    l++;
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
            //o.supersedes = YObject.keys(yArray.hash(sup));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1312
            o.supersedes = yArray.dedupe(sup);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1313
            if (this.allowRollup) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1314
                o.rollup = (l < 4) ? l : Math.min(l - 1, 4);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1315
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1316
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1317
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1318
        plugins = o.plugins;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1319
        if (plugins) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1320
            for (i in plugins) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1321
                if (plugins.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1322
                    plug = plugins[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1323
                    plug.pkg = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1324
                    plug.path = plug.path || _path(name, i, o.type);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1325
                    plug.requires = plug.requires || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1326
                    plug.group = o.group;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1327
                    this.addModule(plug, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1328
                    if (o.skinnable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1329
                        this._addSkin(this.skin.defaultSkin, i, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1330
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1331
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1332
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1333
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1334
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1335
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1336
        if (o.condition) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1337
            t = o.condition.trigger;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1338
            if (YUI.Env.aliases[t]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1339
                t = YUI.Env.aliases[t];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1340
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1341
            if (!Y.Lang.isArray(t)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1342
                t = [t];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1343
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1344
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1345
            for (i = 0; i < t.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1346
                trigger = t[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1347
                when = o.condition.when;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1348
                conditions[trigger] = conditions[trigger] || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1349
                conditions[trigger][name] = o.condition;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1350
                // the 'when' attribute can be 'before', 'after', or 'instead'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1351
                // the default is after.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1352
                if (when && when !== 'after') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1353
                    if (when === 'instead') { // replace the trigger
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1354
                        o.supersedes = o.supersedes || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1355
                        o.supersedes.push(trigger);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1356
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1357
                    // before the trigger
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1358
                        // the trigger requires the conditional mod,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1359
                        // so it should appear before the conditional
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1360
                        // mod if we do not intersede.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1361
                } else { // after the trigger
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1362
                    o.after = o.after || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1363
                    o.after.push(trigger);
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
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1367
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1368
        if (o.supersedes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1369
            o.supersedes = this.filterRequires(o.supersedes);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1370
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1371
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1372
        if (o.after) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1373
            o.after = this.filterRequires(o.after);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1374
            o.after_map = yArray.hash(o.after);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1375
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1376
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1377
        // this.dirty = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1378
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1379
        if (o.configFn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1380
            ret = o.configFn(o);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1381
            if (ret === false) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1382
                Y.log('Config function returned false for ' + name + ', skipping.', 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1383
                delete this.moduleInfo[name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1384
                delete GLOBAL_ENV._renderedMods[name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1385
                o = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1386
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1387
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1388
        //Add to global cache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1389
        if (o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1390
            if (!GLOBAL_ENV._renderedMods) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1391
                GLOBAL_ENV._renderedMods = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1392
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1393
            GLOBAL_ENV._renderedMods[name] = Y.mix(GLOBAL_ENV._renderedMods[name] || {}, o);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1394
            GLOBAL_ENV._conditions = conditions;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1395
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1396
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1397
        return o;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1398
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1399
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1400
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1401
     * Add a requirement for one or more module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1402
     * @method require
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1403
     * @param {string[] | string*} what the modules to load.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1404
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1405
    require: function(what) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1406
        var a = (typeof what === 'string') ? yArray(arguments) : what;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1407
        this.dirty = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1408
        this.required = Y.merge(this.required, yArray.hash(this.filterRequires(a)));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1409
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1410
        this._explodeRollups();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1411
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1412
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1413
    * 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
  1414
    * 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
  1415
    * the content of the "use".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1416
    * This will make asking for: "dd"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1417
    * 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
  1418
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1419
    * @method _explodeRollups
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1420
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1421
    _explodeRollups: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1422
        var self = this, m, m2, i, a, v, len, len2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1423
        r = self.required;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1424
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1425
        if (!self.allowRollup) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1426
            for (i in r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1427
                if (r.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1428
                    m = self.getModule(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1429
                    if (m && m.use) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1430
                        len = m.use.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1431
                        for (a = 0; a < len; a++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1432
                            m2 = self.getModule(m.use[a]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1433
                            if (m2 && m2.use) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1434
                                len2 = m2.use.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1435
                                for (v = 0; v < len2; v++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1436
                                    r[m2.use[v]] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1437
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1438
                            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1439
                                r[m.use[a]] = true;
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
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1444
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1445
            self.required = r;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1446
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1447
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1448
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1449
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1450
    * Explodes the required array to remove aliases and replace them with real modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1451
    * @method filterRequires
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1452
    * @param {Array} r The original requires array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1453
    * @return {Array} The new array of exploded requirements
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1454
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1455
    filterRequires: function(r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1456
        if (r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1457
            if (!Y.Lang.isArray(r)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1458
                r = [r];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1459
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1460
            r = Y.Array(r);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1461
            var c = [], i, mod, o, m;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1462
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1463
            for (i = 0; i < r.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1464
                mod = this.getModule(r[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1465
                if (mod && mod.use) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1466
                    for (o = 0; o < mod.use.length; o++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1467
                        //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
  1468
                        m = this.getModule(mod.use[o]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1469
                        if (m && m.use && (m.name !== mod.name)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1470
                            c = Y.Array.dedupe([].concat(c, this.filterRequires(m.use)));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1471
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1472
                            c.push(mod.use[o]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1473
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1474
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1475
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1476
                    c.push(r[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1477
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1478
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1479
            r = c;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1480
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1481
        return r;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1482
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1483
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1484
     * Returns an object containing properties for all modules required
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1485
     * in order to load the requested module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1486
     * @method getRequires
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1487
     * @param {object}  mod The module definition from moduleInfo.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1488
     * @return {array} the expanded requirement list.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1489
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1490
    getRequires: function(mod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1491
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1492
        if (!mod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1493
            //console.log('returning no reqs for ' + mod.name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1494
            return NO_REQUIREMENTS;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1495
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1496
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1497
        if (mod._parsed) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1498
            //console.log('returning requires for ' + mod.name, mod.requires);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1499
            return mod.expanded || NO_REQUIREMENTS;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1500
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1501
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1502
        //TODO add modue cache here out of scope..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1503
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1504
        var i, m, j, add, packName, lang, testresults = this.testresults,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1505
            name = mod.name, cond,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1506
            adddef = ON_PAGE[name] && ON_PAGE[name].details,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1507
            d, go, def,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1508
            r, old_mod,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1509
            o, skinmod, skindef, skinpar, skinname,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1510
            intl = mod.lang || mod.intl,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1511
            info = this.moduleInfo,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1512
            ftests = Y.Features && Y.Features.tests.load,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1513
            hash, reparse;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1514
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1515
        // console.log(name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1516
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1517
        // pattern match leaves module stub that needs to be filled out
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1518
        if (mod.temp && adddef) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1519
            old_mod = mod;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1520
            mod = this.addModule(adddef, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1521
            mod.group = old_mod.group;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1522
            mod.pkg = old_mod.pkg;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1523
            delete mod.expanded;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1524
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1526
        // console.log('cache: ' + mod.langCache + ' == ' + this.lang);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1527
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1528
        //If a skin or a lang is different, reparse..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1529
        reparse = !((!this.lang || mod.langCache === this.lang) && (mod.skinCache === this.skin.defaultSkin));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1530
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1531
        if (mod.expanded && !reparse) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1532
            //Y.log('Already expanded ' + name + ', ' + mod.expanded);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1533
            return mod.expanded;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1534
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1535
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1536
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1537
        d = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1538
        hash = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1539
        r = this.filterRequires(mod.requires);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1540
        if (mod.lang) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1541
            //If a module has a lang attribute, auto add the intl requirement.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1542
            d.unshift('intl');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1543
            r.unshift('intl');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1544
            intl = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1545
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1546
        o = this.filterRequires(mod.optional);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1547
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1548
        // Y.log("getRequires: " + name + " (dirty:" + this.dirty +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1549
        // ", expanded:" + mod.expanded + ")");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1550
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1551
        mod._parsed = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1552
        mod.langCache = this.lang;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1553
        mod.skinCache = this.skin.defaultSkin;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1554
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1555
        for (i = 0; i < r.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1556
            //Y.log(name + ' requiring ' + r[i], 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1557
            if (!hash[r[i]]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1558
                d.push(r[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1559
                hash[r[i]] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1560
                m = this.getModule(r[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1561
                if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1562
                    add = this.getRequires(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1563
                    intl = intl || (m.expanded_map &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1564
                        (INTL in m.expanded_map));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1565
                    for (j = 0; j < add.length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1566
                        d.push(add[j]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1567
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1568
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1569
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1570
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1571
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1572
        // get the requirements from superseded modules, if any
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1573
        r = this.filterRequires(mod.supersedes);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1574
        if (r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1575
            for (i = 0; i < r.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1576
                if (!hash[r[i]]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1577
                    // if this module has submodules, the requirements list is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1578
                    // expanded to include the submodules.  This is so we can
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1579
                    // prevent dups when a submodule is already loaded and the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1580
                    // parent is requested.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1581
                    if (mod.submodules) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1582
                        d.push(r[i]);
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
                    hash[r[i]] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1586
                    m = this.getModule(r[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1587
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1588
                    if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1589
                        add = this.getRequires(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1590
                        intl = intl || (m.expanded_map &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1591
                            (INTL in m.expanded_map));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1592
                        for (j = 0; j < add.length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1593
                            d.push(add[j]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1594
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1595
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1596
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1597
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1598
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1599
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1600
        if (o && this.loadOptional) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1601
            for (i = 0; i < o.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1602
                if (!hash[o[i]]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1603
                    d.push(o[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1604
                    hash[o[i]] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1605
                    m = info[o[i]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1606
                    if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1607
                        add = this.getRequires(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1608
                        intl = intl || (m.expanded_map &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1609
                            (INTL in m.expanded_map));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1610
                        for (j = 0; j < add.length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1611
                            d.push(add[j]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1612
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1613
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1614
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1615
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1616
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1617
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1618
        cond = this.conditions[name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1619
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1620
        if (cond) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1621
            //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
  1622
            mod._parsed = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1623
            if (testresults && ftests) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1624
                oeach(testresults, function(result, id) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1625
                    var condmod = ftests[id].name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1626
                    if (!hash[condmod] && ftests[id].trigger === name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1627
                        if (result && ftests[id]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1628
                            hash[condmod] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1629
                            d.push(condmod);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1630
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1631
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1632
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1633
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1634
                for (i in cond) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1635
                    if (cond.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1636
                        if (!hash[i]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1637
                            def = cond[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1638
                            //first see if they've specfied a ua check
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1639
                            //then see if they've got a test fn & if it returns true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1640
                            //otherwise just having a condition block is enough
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1641
                            go = def && ((!def.ua && !def.test) || (def.ua && Y.UA[def.ua]) ||
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1642
                                        (def.test && def.test(Y, r)));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1643
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1644
                            if (go) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1645
                                hash[i] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1646
                                d.push(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1647
                                m = this.getModule(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1648
                                if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1649
                                    add = this.getRequires(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1650
                                    for (j = 0; j < add.length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1651
                                        d.push(add[j]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1652
                                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1653
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1654
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1655
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1656
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1657
                    }
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1662
        // Create skin modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1663
        if (mod.skinnable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1664
            skindef = this.skin.overrides;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1665
            for (i in YUI.Env.aliases) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1666
                if (YUI.Env.aliases.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1667
                    if (Y.Array.indexOf(YUI.Env.aliases[i], name) > -1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1668
                        skinpar = i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1669
                    }
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
            if (skindef && (skindef[name] || (skinpar && skindef[skinpar]))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1673
                skinname = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1674
                if (skindef[skinpar]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1675
                    skinname = skinpar;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1676
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1677
                for (i = 0; i < skindef[skinname].length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1678
                    skinmod = this._addSkin(skindef[skinname][i], name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1679
                    if (!this.isCSSLoaded(skinmod, this._boot)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1680
                        d.push(skinmod);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1681
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1682
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1683
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1684
                skinmod = this._addSkin(this.skin.defaultSkin, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1685
                if (!this.isCSSLoaded(skinmod, this._boot)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1686
                    d.push(skinmod);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1687
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1688
            }
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
        mod._parsed = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1692
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1693
        if (intl) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1694
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1695
            if (mod.lang && !mod.langPack && Y.Intl) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1696
                lang = Y.Intl.lookupBestLang(this.lang || ROOT_LANG, mod.lang);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1697
                //Y.log('Best lang: ' + lang + ', this.lang: ' + this.lang + ', mod.lang: ' + mod.lang);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1698
                packName = this.getLangPackName(lang, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1699
                if (packName) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1700
                    d.unshift(packName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1701
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1702
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1703
            d.unshift(INTL);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1704
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1705
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1706
        mod.expanded_map = yArray.hash(d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1707
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1708
        mod.expanded = YObject.keys(mod.expanded_map);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1709
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1710
        return mod.expanded;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1711
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1712
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1713
    * Check to see if named css module is already loaded on the page
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1714
    * @method isCSSLoaded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1715
    * @param {String} name The name of the css file
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1716
    * @return Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1717
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1718
    isCSSLoaded: function(name, skip) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1719
        //TODO - Make this call a batching call with name being an array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1720
        if (!name || !YUI.Env.cssStampEl || (!skip && this.ignoreRegistered)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1721
            Y.log('isCSSLoaded was skipped for ' + name, 'warn', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1722
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1723
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1724
        var el = YUI.Env.cssStampEl,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1725
            ret = false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1726
            mod = YUI.Env._cssLoaded[name],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1727
            style = el.currentStyle; //IE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1728
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1729
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1730
        if (mod !== undefined) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1731
            //Y.log('isCSSLoaded was cached for ' + name, 'warn', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1732
            return mod;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1733
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1734
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1735
        //Add the classname to the element
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1736
        el.className = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1737
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1738
        if (!style) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1739
            style = Y.config.doc.defaultView.getComputedStyle(el, null);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1740
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1741
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1742
        if (style && style.display === 'none') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1743
            ret = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1744
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1745
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1746
        Y.log('Has Skin? ' + name + ' : ' + ret, 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1747
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1748
        el.className = ''; //Reset the classname to ''
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1749
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1750
        YUI.Env._cssLoaded[name] = ret;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1751
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1752
        return ret;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1753
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1754
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1755
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1756
     * Returns a hash of module names the supplied module satisfies.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1757
     * @method getProvides
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1758
     * @param {string} name The name of the module.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1759
     * @return {object} what this module provides.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1760
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1761
    getProvides: function(name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1762
        var m = this.getModule(name), o, s;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1763
            // supmap = this.provides;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1764
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1765
        if (!m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1766
            return NOT_FOUND;
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
        if (m && !m.provides) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1770
            o = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1771
            s = m.supersedes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1772
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1773
            if (s) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1774
                yArray.each(s, function(v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1775
                    Y.mix(o, this.getProvides(v));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1776
                }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1777
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1778
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1779
            o[name] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1780
            m.provides = o;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1781
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1782
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1783
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1784
        return m.provides;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1785
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1786
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1787
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1788
     * Calculates the dependency tree, the result is stored in the sorted
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1789
     * property.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1790
     * @method calculate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1791
     * @param {object} o optional options object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1792
     * @param {string} type optional argument to prune modules.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1793
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1794
    calculate: function(o, type) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1795
        if (o || type || this.dirty) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1796
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1797
            if (o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1798
                this._config(o);
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
            if (!this._init) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1802
                this._setup();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1803
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1804
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1805
            this._explode();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1806
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1807
            if (this.allowRollup) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1808
                this._rollup();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1809
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1810
                this._explodeRollups();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1811
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1812
            this._reduce();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1813
            this._sort();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1814
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1815
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1816
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1817
    * Creates a "psuedo" package for languages provided in the lang array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1818
    * @method _addLangPack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1819
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1820
    * @param {String} lang The language to create
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1821
    * @param {Object} m The module definition to create the language pack around
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1822
    * @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
  1823
    * @return {Object} The module definition
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1824
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1825
    _addLangPack: function(lang, m, packName) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1826
        var name = m.name,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1827
            packPath, conf,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1828
            existing = this.moduleInfo[packName];
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 (!existing) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1831
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1832
            packPath = _path((m.pkg || name), packName, JS, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1833
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1834
            conf = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1835
                path: packPath,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1836
                intl: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1837
                langPack: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1838
                ext: m.ext,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1839
                group: m.group,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1840
                supersedes: []
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1841
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1842
            if (m.root) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1843
                conf.root = m.root;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1844
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1845
            if (m.base) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1846
                conf.base = m.base;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1847
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1848
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1849
            if (m.configFn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1850
                conf.configFn = m.configFn;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1851
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1852
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1853
            this.addModule(conf, packName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1854
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1855
            if (lang) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1856
                Y.Env.lang = Y.Env.lang || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1857
                Y.Env.lang[lang] = Y.Env.lang[lang] || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1858
                Y.Env.lang[lang][name] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1859
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1860
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1861
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1862
        return this.moduleInfo[packName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1863
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1864
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1865
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1866
     * Investigates the current YUI configuration on the page.  By default,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1867
     * modules already detected will not be loaded again unless a force
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1868
     * option is encountered.  Called by calculate()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1869
     * @method _setup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1870
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1871
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1872
    _setup: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1873
        var info = this.moduleInfo, name, i, j, m, l,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1874
            packName;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1875
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1876
        for (name in info) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1877
            if (info.hasOwnProperty(name)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1878
                m = info[name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1879
                if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1880
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1881
                    // remove dups
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1882
                    //m.requires = YObject.keys(yArray.hash(m.requires));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1883
                    m.requires = yArray.dedupe(m.requires);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1884
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1885
                    // Create lang pack modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1886
                    //if (m.lang && m.lang.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1887
                    if (m.lang) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1888
                        // Setup root package if the module has lang defined,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1889
                        // it needs to provide a root language pack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1890
                        packName = this.getLangPackName(ROOT_LANG, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1891
                        this._addLangPack(null, m, packName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1892
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1893
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1894
                }
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1898
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1899
        //l = Y.merge(this.inserted);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1900
        l = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1901
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1902
        // available modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1903
        if (!this.ignoreRegistered) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1904
            Y.mix(l, GLOBAL_ENV.mods);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1905
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1906
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1907
        // add the ignore list to the list of loaded packages
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1908
        if (this.ignore) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1909
            Y.mix(l, yArray.hash(this.ignore));
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
        // expand the list to include superseded modules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1913
        for (j in l) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1914
            if (l.hasOwnProperty(j)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1915
                Y.mix(l, this.getProvides(j));
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
        // remove modules on the force list from the loaded list
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1920
        if (this.force) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1921
            for (i = 0; i < this.force.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1922
                if (this.force[i] in l) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1923
                    delete l[this.force[i]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1924
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1925
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1926
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1927
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1928
        Y.mix(this.loaded, l);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1929
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1930
        this._init = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1931
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1932
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1933
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1934
     * Builds a module name for a language pack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1935
     * @method getLangPackName
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1936
     * @param {string} lang the language code.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1937
     * @param {string} mname the module to build it for.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1938
     * @return {string} the language pack module name.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1939
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1940
    getLangPackName: function(lang, mname) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1941
        return ('lang/' + mname + ((lang) ? '_' + lang : ''));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1942
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1943
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1944
     * Inspects the required modules list looking for additional
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1945
     * dependencies.  Expands the required list to include all
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1946
     * required modules.  Called by calculate()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1947
     * @method _explode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1948
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1949
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1950
    _explode: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1951
        //TODO Move done out of scope
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1952
        var r = this.required, m, reqs, done = {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1953
            self = this, name, expound;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1954
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1955
        // the setup phase is over, all modules have been created
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1956
        self.dirty = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1957
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1958
        self._explodeRollups();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1959
        r = self.required;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1960
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1961
        for (name in r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1962
            if (r.hasOwnProperty(name)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1963
                if (!done[name]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1964
                    done[name] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1965
                    m = self.getModule(name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1966
                    if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1967
                        expound = m.expound;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1968
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1969
                        if (expound) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1970
                            r[expound] = self.getModule(expound);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1971
                            reqs = self.getRequires(r[expound]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1972
                            Y.mix(r, yArray.hash(reqs));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1973
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1974
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1975
                        reqs = self.getRequires(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1976
                        Y.mix(r, yArray.hash(reqs));
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
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1980
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1981
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1982
        // Y.log('After explode: ' + YObject.keys(r));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1983
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1984
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1985
    * The default method used to test a module against a pattern
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1986
    * @method _patternTest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1987
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1988
    * @param {String} mname The module being tested
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1989
    * @param {String} pname The pattern to match
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1990
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1991
    _patternTest: function(mname, pname) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1992
        return (mname.indexOf(pname) > -1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1993
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1994
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1995
    * Get's the loader meta data for the requested module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1996
    * @method getModule
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1997
    * @param {String} mname The module name to get
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1998
    * @return {Object} The module metadata
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1999
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2000
    getModule: function(mname) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2001
        //TODO: Remove name check - it's a quick hack to fix pattern WIP
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2002
        if (!mname) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2003
            return null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2004
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2005
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2006
        var p, found, pname,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2007
            m = this.moduleInfo[mname],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2008
            patterns = this.patterns;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2009
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2010
        // check the patterns library to see if we should automatically add
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2011
        // the module with defaults
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2012
        if (!m || (m && m.ext)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2013
           // Y.log('testing patterns ' + YObject.keys(patterns));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2014
            for (pname in patterns) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2015
                if (patterns.hasOwnProperty(pname)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2016
                    // Y.log('testing pattern ' + i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2017
                    p = patterns[pname];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2018
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2019
                    //There is no test method, create a default one that tests
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2020
                    // the pattern against the mod name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2021
                    if (!p.test) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2022
                        p.test = this._patternTest;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2023
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2024
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2025
                    if (p.test(mname, pname)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2026
                        // use the metadata supplied for the pattern
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2027
                        // as the module definition.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2028
                        found = p;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2029
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2030
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2031
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2032
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2033
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2034
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2035
        if (!m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2036
            if (found) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2037
                if (p.action) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2038
                    // Y.log('executing pattern action: ' + pname);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2039
                    p.action.call(this, mname, pname);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2040
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2041
Y.log('Undefined module: ' + mname + ', matched a pattern: ' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2042
    pname, 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2043
                    // ext true or false?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2044
                    m = this.addModule(Y.merge(found), mname);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2045
                    if (found.configFn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2046
                        m.configFn = found.configFn;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2047
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2048
                    m.temp = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2049
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2050
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2051
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2052
            if (found && m && found.configFn && !m.configFn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2053
                m.configFn = found.configFn;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2054
                m.configFn(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2055
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2056
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2057
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2058
        return m;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2059
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2060
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2061
    // impl in rollup submodule
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2062
    _rollup: function() { },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2063
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2064
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2065
     * Remove superceded modules and loaded modules.  Called by
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2066
     * calculate() after we have the mega list of all dependencies
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2067
     * @method _reduce
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2068
     * @return {object} the reduced dependency hash.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2069
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2070
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2071
    _reduce: function(r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2072
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2073
        r = r || this.required;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2074
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2075
        var i, j, s, m, type = this.loadType,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2076
        ignore = this.ignore ? yArray.hash(this.ignore) : false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2077
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2078
        for (i in r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2079
            if (r.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2080
                m = this.getModule(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2081
                // remove if already loaded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2082
                if (((this.loaded[i] || ON_PAGE[i]) &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2083
                        !this.forceMap[i] && !this.ignoreRegistered) ||
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2084
                        (type && m && m.type !== type)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2085
                    delete r[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2086
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2087
                if (ignore && ignore[i]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2088
                    delete r[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2089
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2090
                // remove anything this module supersedes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2091
                s = m && m.supersedes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2092
                if (s) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2093
                    for (j = 0; j < s.length; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2094
                        if (s[j] in r) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2095
                            delete r[s[j]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2096
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2097
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2098
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2099
            }
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
        return r;
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
    * Handles the queue when a module has been loaded for all cases
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2106
    * @method _finish
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
    * @param {String} msg The message from Loader
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2109
    * @param {Boolean} success A boolean denoting success or failure
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2110
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2111
    _finish: function(msg, success) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2112
        Y.log('loader finishing: ' + msg + ', ' + Y.id + ', ' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2113
            this.data, 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2114
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2115
        _queue.running = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2116
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2117
        var onEnd = this.onEnd;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2118
        if (onEnd) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2119
            onEnd.call(this.context, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2120
                msg: msg,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2121
                data: this.data,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2122
                success: success
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2123
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2124
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2125
        this._continue();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2126
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2127
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2128
    * The default Loader onSuccess handler, calls this.onSuccess with a payload
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2129
    * @method _onSuccess
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2130
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2131
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2132
    _onSuccess: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2133
        var self = this, skipped = Y.merge(self.skipped), fn,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2134
            failed = [], rreg = self.requireRegistration,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2135
            success, msg, i, mod;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2136
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2137
        for (i in skipped) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2138
            if (skipped.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2139
                delete self.inserted[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2140
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2141
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2142
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2143
        self.skipped = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2144
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2145
        for (i in self.inserted) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2146
            if (self.inserted.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2147
                mod = self.getModule(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2148
                if (mod && rreg && mod.type === JS && !(i in YUI.Env.mods)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2149
                    failed.push(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2150
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2151
                    Y.mix(self.loaded, self.getProvides(i));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2152
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2153
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2154
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2155
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2156
        fn = self.onSuccess;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2157
        msg = (failed.length) ? 'notregistered' : 'success';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2158
        success = !(failed.length);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2159
        if (fn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2160
            fn.call(self.context, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2161
                msg: msg,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2162
                data: self.data,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2163
                success: success,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2164
                failed: failed,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2165
                skipped: skipped
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
        self._finish(msg, success);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2169
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2170
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2171
    * The default Loader onProgress handler, calls this.onProgress with a payload
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2172
    * @method _onProgress
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2173
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2174
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2175
    _onProgress: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2176
        var self = this, i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2177
        //set the internal cache to what just came in.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2178
        if (e.data && e.data.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2179
            for (i = 0; i < e.data.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2180
                e.data[i] = self.getModule(e.data[i].name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2181
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2182
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2183
        if (self.onProgress) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2184
            self.onProgress.call(self.context, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2185
                name: e.url,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2186
                data: e.data
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2191
    * The default Loader onFailure handler, calls this.onFailure with a payload
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2192
    * @method _onFailure
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2193
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2194
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2195
    _onFailure: function(o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2196
        var f = this.onFailure, msg = [], i = 0, len = o.errors.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2197
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2198
        for (i; i < len; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2199
            msg.push(o.errors[i].error);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2200
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2201
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2202
        msg = msg.join(',');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2203
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2204
        Y.log('load error: ' + msg + ', ' + Y.id, 'error', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2205
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2206
        if (f) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2207
            f.call(this.context, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2208
                msg: msg,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2209
                data: this.data,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2210
                success: false
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2214
        this._finish(msg, false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2215
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2216
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2217
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2218
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2219
    * The default Loader onTimeout handler, calls this.onTimeout with a payload
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2220
    * @method _onTimeout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2221
    * @param {Get.Transaction} transaction The Transaction object from `Y.Get`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2222
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2223
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2224
    _onTimeout: function(transaction) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2225
        Y.log('loader timeout: ' + Y.id, 'error', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2226
        var f = this.onTimeout;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2227
        if (f) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2228
            f.call(this.context, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2229
                msg: 'timeout',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2230
                data: this.data,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2231
                success: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2232
                transaction: transaction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2233
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2234
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2235
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2236
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2237
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2238
     * Sorts the dependency tree.  The last step of calculate()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2239
     * @method _sort
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2240
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2241
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2242
    _sort: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2243
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2244
        // create an indexed list
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2245
        var s = YObject.keys(this.required),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2246
            // loaded = this.loaded,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2247
            //TODO Move this out of scope
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2248
            done = {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2249
            p = 0, l, a, b, j, k, moved, doneKey;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2251
        // keep going until we make a pass without moving anything
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2252
        for (;;) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2253
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2254
            l = s.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2255
            moved = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2256
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2257
            // start the loop after items that are already sorted
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2258
            for (j = p; j < l; j++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2259
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2260
                // check the next module on the list to see if its
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2261
                // dependencies have been met
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2262
                a = s[j];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2263
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2264
                // check everything below current item and move if we
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2265
                // find a requirement for the current item
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2266
                for (k = j + 1; k < l; k++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2267
                    doneKey = a + s[k];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2268
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2269
                    if (!done[doneKey] && this._requires(a, s[k])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2270
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2271
                        // extract the dependency so we can move it up
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2272
                        b = s.splice(k, 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2273
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2274
                        // insert the dependency above the item that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2275
                        // requires it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2276
                        s.splice(j, 0, b[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2277
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2278
                        // only swap two dependencies once to short circut
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2279
                        // circular dependencies
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2280
                        done[doneKey] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2281
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2282
                        // keep working
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2283
                        moved = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2284
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2285
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2286
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2287
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2288
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2289
                // jump out of loop if we moved something
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2290
                if (moved) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2291
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2292
                // this item is sorted, move our pointer and keep going
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2293
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2294
                    p++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2295
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2296
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2297
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2298
            // when we make it here and moved is false, we are
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2299
            // finished sorting
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2300
            if (!moved) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2301
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2302
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2303
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2304
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2305
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2306
        this.sorted = s;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2307
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2308
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2309
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2310
    * Handles the actual insertion of script/link tags
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2311
    * @method _insert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2312
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2313
    * @param {Object} source The YUI instance the request came from
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2314
    * @param {Object} o The metadata to include
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2315
    * @param {String} type JS or CSS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2316
    * @param {Boolean} [skipcalc=false] Do a Loader.calculate on the meta
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2317
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2318
    _insert: function(source, o, type, skipcalc) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2319
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2320
        Y.log('private _insert() ' + (type || '') + ', ' + Y.id, "info", "loader");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2321
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2322
        // restore the state at the time of the request
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2323
        if (source) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2324
            this._config(source);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2325
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2326
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2327
        // build the dependency list
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2328
        // don't include type so we can process CSS and script in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2329
        // one pass when the type is not specified.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2330
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2331
        var modules = this.resolve(!skipcalc),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2332
            self = this, comp = 0, actions = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2333
            mods = {}, deps, complete;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2334
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2335
        self._refetch = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2336
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2337
        if (type) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2338
            //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
  2339
            modules[((type === JS) ? CSS : JS)] = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2340
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2341
        if (!self.fetchCSS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2342
            modules.css = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2343
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2344
        if (modules.js.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2345
            comp++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2346
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2347
        if (modules.css.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2348
            comp++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2349
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2350
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2351
        //console.log('Resolved Modules: ', modules);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2352
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2353
        complete = function(d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2354
            actions++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2355
            var errs = {}, i = 0, o = 0, u = '', fn,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2356
                modName, resMods;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2357
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2358
            if (d && d.errors) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2359
                for (i = 0; i < d.errors.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2360
                    if (d.errors[i].request) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2361
                        u = d.errors[i].request.url;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2362
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2363
                        u = d.errors[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2364
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2365
                    errs[u] = u;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2366
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2367
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2368
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2369
            if (d && d.data && d.data.length && (d.type === 'success')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2370
                for (i = 0; i < d.data.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2371
                    self.inserted[d.data[i].name] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2372
                    //If the external module has a skin or a lang, reprocess it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2373
                    if (d.data[i].lang || d.data[i].skinnable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2374
                        delete self.inserted[d.data[i].name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2375
                        self._refetch.push(d.data[i].name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2376
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2377
                }
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
            if (actions === comp) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2381
                self._loading = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2382
                Y.log('Loader actions complete!', 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2383
                if (self._refetch.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2384
                    //Get the deps for the new meta-data and reprocess
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2385
                    Y.log('Found potential modules to refetch', 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2386
                    for (i = 0; i < self._refetch.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2387
                        deps = self.getRequires(self.getModule(self._refetch[i]));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2388
                        for (o = 0; o < deps.length; o++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2389
                            if (!self.inserted[deps[o]]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2390
                                //We wouldn't be to this point without the module being here
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2391
                                mods[deps[o]] = deps[o];
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
                    mods = Y.Object.keys(mods);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2396
                    if (mods.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2397
                        Y.log('Refetching modules with new meta-data', 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2398
                        self.require(mods);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2399
                        resMods = self.resolve(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2400
                        if (resMods.cssMods.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2401
                            for (i=0; i <  resMods.cssMods.length; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2402
                                modName = resMods.cssMods[i].name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2403
                                delete YUI.Env._cssLoaded[modName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2404
                                if (self.isCSSLoaded(modName)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2405
                                    self.inserted[modName] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2406
                                    delete self.required[modName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2407
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2408
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2409
                            self.sorted = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2410
                            self._sort();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2411
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2412
                        d = null; //bail
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2413
                        self._insert(); //insert the new deps
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2414
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2415
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2416
                if (d && d.fn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2417
                    Y.log('Firing final Loader callback!', 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2418
                    fn = d.fn;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2419
                    delete d.fn;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2420
                    fn.call(self, d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2421
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2422
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2423
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2424
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2425
        this._loading = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2426
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2427
        if (!modules.js.length && !modules.css.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2428
            Y.log('No modules resolved..', 'warn', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2429
            actions = -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2430
            complete({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2431
                fn: self._onSuccess
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2432
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2433
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2434
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2435
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2436
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2437
        if (modules.css.length) { //Load CSS first
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2438
            Y.log('Loading CSS modules', 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2439
            Y.Get.css(modules.css, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2440
                data: modules.cssMods,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2441
                attributes: self.cssAttributes,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2442
                insertBefore: self.insertBefore,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2443
                charset: self.charset,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2444
                timeout: self.timeout,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2445
                context: self,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2446
                onProgress: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2447
                    self._onProgress.call(self, e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2448
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2449
                onTimeout: function(d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2450
                    self._onTimeout.call(self, d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2451
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2452
                onSuccess: function(d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2453
                    d.type = 'success';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2454
                    d.fn = self._onSuccess;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2455
                    complete.call(self, d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2456
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2457
                onFailure: function(d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2458
                    d.type = 'failure';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2459
                    d.fn = self._onFailure;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2460
                    complete.call(self, d);
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
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2464
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2465
        if (modules.js.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2466
            Y.log('Loading JS modules', 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2467
            Y.Get.js(modules.js, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2468
                data: modules.jsMods,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2469
                insertBefore: self.insertBefore,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2470
                attributes: self.jsAttributes,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2471
                charset: self.charset,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2472
                timeout: self.timeout,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2473
                autopurge: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2474
                context: self,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2475
                async: self.async,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2476
                onProgress: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2477
                    self._onProgress.call(self, e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2478
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2479
                onTimeout: function(d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2480
                    self._onTimeout.call(self, d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2481
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2482
                onSuccess: function(d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2483
                    d.type = 'success';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2484
                    d.fn = self._onSuccess;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2485
                    complete.call(self, d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2486
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2487
                onFailure: function(d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2488
                    d.type = 'failure';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2489
                    d.fn = self._onFailure;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2490
                    complete.call(self, d);
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
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2494
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2495
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2496
    * Once a loader operation is completely finished, process any additional queued items.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2497
    * @method _continue
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2498
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2499
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2500
    _continue: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2501
        if (!(_queue.running) && _queue.size() > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2502
            _queue.running = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2503
            _queue.next()();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2504
        }
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
     * inserts the requested modules and their dependencies.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2509
     * <code>type</code> can be "js" or "css".  Both script and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2510
     * css are inserted if type is not provided.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2511
     * @method insert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2512
     * @param {object} o optional options object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2513
     * @param {string} type the type of dependency to insert.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2514
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2515
    insert: function(o, type, skipsort) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2516
         Y.log('public insert() ' + (type || '') + ', ' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2517
         Y.Object.keys(this.required), "info", "loader");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2518
        var self = this, copy = Y.merge(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2519
        delete copy.require;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2520
        delete copy.dirty;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2521
        _queue.add(function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2522
            self._insert(copy, o, type, skipsort);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2523
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2524
        this._continue();
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2528
     * 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
  2529
     * cycle, we attempt to load the next script.  Public so that it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2530
     * is possible to call this if using a method other than
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2531
     * Y.register to determine when scripts are fully loaded
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2532
     * @method loadNext
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2533
     * @deprecated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2534
     * @param {string} mname optional the name of the module that has
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2535
     * been loaded (which is usually why it is time to load the next
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2536
     * one).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2537
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2538
    loadNext: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2539
        Y.log('loadNext was called..', 'error', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2540
        return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2541
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2542
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2543
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2544
     * Apply filter defined for this instance to a url/path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2545
     * @method _filter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2546
     * @param {string} u the string to filter.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2547
     * @param {string} name the name of the module, if we are processing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2548
     * a single module as opposed to a combined url.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2549
     * @return {string} the filtered string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2550
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2551
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2552
    _filter: function(u, name, group) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2553
        var f = this.filter,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2554
            hasFilter = name && (name in this.filters),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2555
            modFilter = hasFilter && this.filters[name],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2556
            groupName = group || (this.moduleInfo[name] ? this.moduleInfo[name].group : null);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2557
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2558
        if (groupName && this.groups[groupName] && this.groups[groupName].filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2559
            modFilter = this.groups[groupName].filter;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2560
            hasFilter = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2561
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2562
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2563
        if (u) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2564
            if (hasFilter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2565
                f = (L.isString(modFilter)) ? this.FILTER_DEFS[modFilter.toUpperCase()] || null : modFilter;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2566
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2567
            if (f) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2568
                u = u.replace(new RegExp(f.searchExp, 'g'), f.replaceStr);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2569
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2570
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2571
        return u;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2572
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2573
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2574
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2575
     * Generates the full url for a module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2576
     * @method _url
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2577
     * @param {string} path the path fragment.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2578
     * @param {String} name The name of the module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2579
     * @param {String} [base=self.base] The base url to use
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2580
     * @return {string} the full url.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2581
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2582
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2583
    _url: function(path, name, base) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2584
        return this._filter((base || this.base || '') + path, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2585
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2586
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2587
    * 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
  2588
    * @method resolve
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2589
    * @param {Boolean} [calc=false] Perform a loader.calculate() before anything else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2590
    * @param {Array} [s=loader.sorted] An override for the loader.sorted array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2591
    * @return {Object} Object hash (js and css) of two arrays of file lists
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2592
    * @example This method can be used as an off-line dep calculator
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2593
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2594
    *        var Y = YUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2595
    *        var loader = new Y.Loader({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2596
    *            filter: 'debug',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2597
    *            base: '../../',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2598
    *            root: 'build/',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2599
    *            combine: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2600
    *            require: ['node', 'dd', 'console']
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2601
    *        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2602
    *        var out = loader.resolve(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2603
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2604
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2605
    resolve: function(calc, s) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2606
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2607
        var len, i, m, url, group, groupName, j, frag,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2608
            comboSource, comboSources, mods, comboBase,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2609
            base, urls, u = [], tmpBase, baseLen, resCombos = {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2610
            self = this, comboSep, maxURLLength,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2611
            inserted = (self.ignoreRegistered) ? {} : self.inserted,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2612
            resolved = { js: [], jsMods: [], css: [], cssMods: [] },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2613
            type = self.loadType || 'js', addSingle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2614
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2615
        if (self.skin.overrides || self.skin.defaultSkin !== DEFAULT_SKIN || self.ignoreRegistered) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2616
            self._resetModules();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2617
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2618
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2619
        if (calc) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2620
            self.calculate();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2621
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2622
        s = s || self.sorted;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2623
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2624
        addSingle = function(m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2625
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2626
            if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2627
                group = (m.group && self.groups[m.group]) || NOT_FOUND;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2628
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2629
                //Always assume it's async
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2630
                if (group.async === false) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2631
                    m.async = group.async;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2632
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2633
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2634
                url = (m.fullpath) ? self._filter(m.fullpath, s[i]) :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2635
                      self._url(m.path, s[i], group.base || m.base);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2636
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2637
                if (m.attributes || m.async === false) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2638
                    url = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2639
                        url: url,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2640
                        async: m.async
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2641
                    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2642
                    if (m.attributes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2643
                        url.attributes = m.attributes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2644
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2645
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2646
                resolved[m.type].push(url);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2647
                resolved[m.type + 'Mods'].push(m);
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
                Y.log('Undefined Module', 'warn', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2650
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2651
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2652
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2653
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2654
        len = s.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2655
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2656
        // the default combo base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2657
        comboBase = self.comboBase;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2658
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2659
        url = comboBase;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2660
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2661
        comboSources = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2662
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2663
        for (i = 0; i < len; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2664
            comboSource = comboBase;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2665
            m = self.getModule(s[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2666
            groupName = m && m.group;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2667
            group = self.groups[groupName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2668
            if (groupName && group) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2669
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2670
                if (!group.combine || m.fullpath) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2671
                    //This is not a combo module, skip it and load it singly later.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2672
                    addSingle(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2673
                    continue;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2674
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2675
                m.combine = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2676
                if (group.comboBase) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2677
                    comboSource = group.comboBase;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2678
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2679
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2680
                if ("root" in group && L.isValue(group.root)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2681
                    m.root = group.root;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2682
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2683
                m.comboSep = group.comboSep || self.comboSep;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2684
                m.maxURLLength = group.maxURLLength || self.maxURLLength;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2685
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2686
                if (!self.combine) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2687
                    //This is not a combo module, skip it and load it singly later.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2688
                    addSingle(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2689
                    continue;
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
            comboSources[comboSource] = comboSources[comboSource] || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2694
            comboSources[comboSource].push(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2695
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2696
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2697
        for (j in comboSources) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2698
            if (comboSources.hasOwnProperty(j)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2699
                resCombos[j] = resCombos[j] || { js: [], jsMods: [], css: [], cssMods: [] };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2700
                url = j;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2701
                mods = comboSources[j];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2702
                len = mods.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2703
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2704
                if (len) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2705
                    for (i = 0; i < len; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2706
                        if (inserted[mods[i]]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2707
                            continue;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2708
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2709
                        m = mods[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2710
                        // Do not try to combine non-yui JS unless combo def
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2711
                        // is found
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2712
                        if (m && (m.combine || !m.ext)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2713
                            resCombos[j].comboSep = m.comboSep;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2714
                            resCombos[j].group = m.group;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2715
                            resCombos[j].maxURLLength = m.maxURLLength;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2716
                            frag = ((L.isValue(m.root)) ? m.root : self.root) + (m.path || m.fullpath);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2717
                            frag = self._filter(frag, m.name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2718
                            resCombos[j][m.type].push(frag);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2719
                            resCombos[j][m.type + 'Mods'].push(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2720
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2721
                            //Add them to the next process..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2722
                            if (mods[i]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2723
                                addSingle(mods[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2724
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2725
                        }
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
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2730
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2731
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2732
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2733
        for (j in resCombos) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2734
            if (resCombos.hasOwnProperty(j)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2735
                base = j;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2736
                comboSep = resCombos[base].comboSep || self.comboSep;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2737
                maxURLLength = resCombos[base].maxURLLength || self.maxURLLength;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2738
                Y.log('Using maxURLLength of ' + maxURLLength, 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2739
                for (type in resCombos[base]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2740
                    if (type === JS || type === CSS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2741
                        urls = resCombos[base][type];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2742
                        mods = resCombos[base][type + 'Mods'];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2743
                        len = urls.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2744
                        tmpBase = base + urls.join(comboSep);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2745
                        baseLen = tmpBase.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2746
                        if (maxURLLength <= base.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2747
                            Y.log('maxURLLength (' + maxURLLength + ') is lower than the comboBase length (' + base.length + '), resetting to default (' + MAX_URL_LENGTH + ')', 'error', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2748
                            maxURLLength = MAX_URL_LENGTH;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2749
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2750
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2751
                        if (len) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2752
                            if (baseLen > maxURLLength) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2753
                                Y.log('Exceeded maxURLLength (' + maxURLLength + ') for ' + type + ', splitting', 'info', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2754
                                u = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2755
                                for (s = 0; s < len; s++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2756
                                    u.push(urls[s]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2757
                                    tmpBase = base + u.join(comboSep);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2758
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2759
                                    if (tmpBase.length > maxURLLength) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2760
                                        m = u.pop();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2761
                                        tmpBase = base + u.join(comboSep);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2762
                                        resolved[type].push(self._filter(tmpBase, null, resCombos[base].group));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2763
                                        u = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2764
                                        if (m) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2765
                                            u.push(m);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2766
                                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2767
                                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2768
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2769
                                if (u.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2770
                                    tmpBase = base + u.join(comboSep);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2771
                                    resolved[type].push(self._filter(tmpBase, null, resCombos[base].group));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2772
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2773
                            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2774
                                resolved[type].push(self._filter(tmpBase, null, resCombos[base].group));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2775
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2776
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2777
                        resolved[type + 'Mods'] = resolved[type + 'Mods'].concat(mods);
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
            }
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
        resCombos = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2784
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2785
        return resolved;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2786
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2787
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2788
    Shortcut to calculate, resolve and load all modules.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2789
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2790
        var loader = new Y.Loader({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2791
            ignoreRegistered: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2792
            modules: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2793
                mod: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2794
                    path: 'mod.js'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2795
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2796
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2797
            requires: [ 'mod' ]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2798
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2799
        loader.load(function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2800
            console.log('All modules have loaded..');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2801
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2802
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2803
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2804
    @method load
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2805
    @param {Callback} cb Executed after all load operations are complete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2806
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2807
    load: function(cb) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2808
        if (!cb) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2809
            Y.log('No callback supplied to load()', 'error', 'loader');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2810
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2811
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2812
        var self = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2813
            out = self.resolve(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2814
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2815
        self.data = out;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2816
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2817
        self.onEnd = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2818
            cb.apply(self.context || self, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2819
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2820
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2821
        self.insert();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2822
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2823
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2824
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2825
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2826
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2827
}, '@VERSION@', {"requires": ["get", "features"]});