yui.js revision 081b17c1b52cfe9e64fefdbdddb29209663ccdb6
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolo * The YUI module contains the components required for building the YUI seed
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolo * file. This includes the script loading mechanism, a simple queue, and
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolo * the core utilities for the library.
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolo * @module yui
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolo * @submodule yui-base
b7afea0b1d778d946bf2b519e793aaf862414d33Eric FerraiuoloThe YUI global namespace object. If YUI is already defined, the
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuoloexisting YUI object will not be overwritten so that defined
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolonamespaces are preserved. It is the constructor for the object
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolothe end user interacts with. As indicated below, each instance
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniffhas full custom event support, but only if the event system
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniffis available. This is a self-instantiable factory function. You
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolocan invoke it directly like this:
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff YUI().use('*', function(Y) {
3b28a6cd6294fa40166327b097529ae5da1698ceJeff ConniffBut it also works like this:
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff var Y = YUI();
3b28a6cd6294fa40166327b097529ae5da1698ceJeff ConniffConfiguring the YUI object:
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff debug: true,
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff combine: false
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff }).use('node', function(Y) {
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff //Node is ready to use
3b28a6cd6294fa40166327b097529ae5da1698ceJeff ConniffSee the API docs for the <a href="config.html">Config</a> class
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Connifffor the complete list of supported configuration properties accepted
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniffby the YUI constuctor.
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff@uses EventTarget
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolo@param [o]* {Object} 0..n optional configuration objects. these values
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniffare store in Y.config. See <a href="config.html">Config</a> for the list of supported
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolo /*global YUI*/
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff /*global YUI_config*/
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff var YUI = function() {
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff return (o && o.hasOwnProperty && (o instanceof type));
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff gconf = (typeof YUI_config !== 'undefined') && YUI_config;
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff // set up the core environment
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff YUI.GlobalConfig is a master configuration that might span
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolo multiple contexts in a non-browser environment. It is applied
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff first to all instances in all contexts.
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff @property GlobalConfig
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff @type {Object}
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff YUI.GlobalConfig = {
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff filter: 'debug'
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff YUI().use('node', function(Y) {
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff //debug files used here
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff filter: 'min'
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff }).use('node', function(Y) {
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolo //min files used here
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff YUI_config is a page-level config. It is applied to all
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff instances created on the page. This is applied after
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff YUI.GlobalConfig, and before the instance level configuration
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff @property YUI_config
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff @type {Object}
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolo //Single global var to include before YUI seed file
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff YUI_config = {
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff filter: 'debug'
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff YUI().use('node', function(Y) {
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff //debug files used here
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolo filter: 'min'
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff }).use('node', function(Y) {
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolo //min files used here
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff // bind the specified additional modules for this instance
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff // Each instance can accept one or more configuration objects.
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff // These are applied after YUI.GlobalConfig and YUI_Config,
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolo // overriding values set in those config files if there is a '
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff // matching property.
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff for (; i < l; i++) {
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff(function() {
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff NOOP = function() {},
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff APPLY_TO_AUTH = { 'io.xdrReady': 1, // the functions applyTo
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff 'SWF.eventHandler': 1 }, // be done at build time
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff // this can throw an uncaught exception in FF
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff } catch (ex) {}
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff handleLoad = function() {
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff getLoader = function(Y, o) {
3b28a6cd6294fa40166327b097529ae5da1698ceJeff Conniff //loader._config(Y.config);
b7afea0b1d778d946bf2b519e793aaf862414d33Eric Ferraiuolo YUI.Env.core = Y.Array.dedupe([].concat(YUI.Env.core, [ 'loader-base', 'loader-rollup', 'loader-yui3' ]));
eaee839afff6e24a5ba7277c5fdacd4eeba4253bJeff Conniff clobber = function(r, s) {
eaee839afff6e24a5ba7277c5fdacd4eeba4253bJeff Conniff for (var i in s) {
eaee839afff6e24a5ba7277c5fdacd4eeba4253bJeff Conniff r[i] = s[i];
eaee839afff6e24a5ba7277c5fdacd4eeba4253bJeff Conniff// Stamp the documentElement (HTML) with a class of "yui-loaded" to
eaee839afff6e24a5ba7277c5fdacd4eeba4253bJeff Conniff// enable styles that need to key off of JS being enabled.
eaee839afff6e24a5ba7277c5fdacd4eeba4253bJeff Conniffif (docEl && docClass.indexOf(DOC_LABEL) == -1) {
proto = {
* update the loader cache if necessary. Updating Y.config directly
applyConfig: function(o) {
o = o || NOOP;
var attr,
name,
for (name in o) {
if (loader) {
_config: function(o) {
this.applyConfig(o);
_init: function() {
prop;
if (!Env) {
Y.Env = {
core: ['get','features','intl-base','yui-log','yui-later','loader-base', 'loader-rollup', 'loader-yui3'],
_used: {},
_attached: {},
_missed: [],
_loaded: {},
// so "yui/yui-min", "yui/yui-debug", "yui-base/yui-base-debug". NOT "yui/yui-tshirt".
// 4. This is followed by ".js", so "yui/yui.js", "simpleyui/simpleyui-min.js"
// "blah?foo/yui/yui.js" will capture "foo/" and "blah?some/thing.js&3.3.0/build/yui-davglass/yui-davglass.js"
if (match) {
path = {
return path;
function(pattern) {
if (src) {
if (parsed) {
return path;
bootstrap: true,
cacheUse: true,
debug: true,
fetchCSS: true,
throwFail: true,
useBrowserConsole: true,
useNativeES5: true,
el.innerHTML = '<div id="' + CSS_STAMP_EL + '" style="position: absolute !important; visibility: hidden !important"></div>';
_setup: function(o) {
core = [],
//extras = Y.config.core || ['get','features','intl-base','yui-log','yui-later','loader-base', 'loader-rollup', 'loader-yui3'];
if (Y.Loader) {
getLoader(Y);
if (instance) {
m = instance;
m = m[nest[i]];
mod = {
for (i in instances) {
if (loader) {
name = r[i];
if (go) {
if (!done[r[i]]) {
name = r[i];
if (!mod) {
moot = true;
if (req) {
if (after) {
if (use) {
use: function() {
name,
provisioned = true;
callback = null;
provisioned = false;
if (provisioned) {
if (Y._loading) {
* Notify handler from Loader for attachment/load errors
* @param callback {Function} The callback to pass to the `Y.config.loadErrorFn`
} else if (callback) {
YArray = Y.Array,
missing = [],
ret = true,
if (aliases) {
names = a;
if (!skip) {
success: true,
ret = true,
Y._loading = false;
if (data) {
missing = [];
if (redo) {
redo = false;
Y._loading = true;
if (data) {
if (ret) {
if (ret) {
handleLoader();
if (len) {
Y._loading = true;
Y._loading = true;
handleBoot = function() {
Y._loading = false;
if (ret) {
handleLoader();
namespace: function() {
for (; i < a.length; i++) {
arg = a[i];
* @param src Optional additional info (passed to `Y.config.errorFn` and `Y.message`)
var Y = this, ret;
var uid;
if (!uid) {
if (!readOnly) {
uid = null;
return uid;
destroy: function() {
if (Y.Event) {
delete Y.Env;
delete Y.config;
fullpath: './davglass.js'
fullpath: './foo.js'
if (hasWin) {
handleLoad();
* The YUI combo service base dir. Ex: `http://yui.yahooapis.com/combo?`
* minified version of the files (e.g., event-min.js). The filter property
* <dd>Selects the debug versions of the library (e.g., event-debug.js).
* <dd>Selects the non-minified version of the library (e.g., event.js).</dd>
* 'replaceStr': "-debug.js"
* mycssmod: '/css/mycssmod.css'
* base: 'http://yui.yahooapis.com/2.8.0r4/build/',
* comboBase: 'http://yui.yahooapis.com/combo?',
* path: "yahoo-dom-event/yahoo-dom-event.js"
* path: "animation/animation.js",
* @default loader/loader-min.js
TYPES = {
SUBREGEX = /\{\s*([^|}]+?)\s*(?:\|([^}]*))?\s*\}/g,
TRIMREGEX = /^\s+|\s+$/g,
L.isBoolean = function(o) {
L.isDate = function(o) {
L.isFunction = function(o) {
L.isNull = function(o) {
L.isNumber = function(o) {
L.isString = function(o) {
L.isUndefined = function(o) {
L.isValue = function(o) {
var t = L.type(o);
return isFinite(o);
return new Date().getTime();
L.sub = function(s, o) {
return s.trimLeft();
return s.trimRight();
L.type = function(o) {
} catch (ex) {
result = [];
return result;
return [thing];
Y.Array = YArray;
var hash = {},
results = [],
return results;
if (i in array) {
var hash = {},
i, len;
if (i in keys) {
return hash;
// http://es5.github.com/#x15.4.4.14
return from;
} catch (ex) {}
return result;
function Queue() {
this._init();
_init: function() {
this._q = [];
next: function() {
last: function() {
add: function() {
size: function() {
return function (arg) {
String(arg);
(e.g. Node.js).
[WebKit Bug 34679](https://bugs.webkit.org/show_bug.cgi?id=34679).
Y.getLocation = function () {
// YUI instance before a user's config is applied; i.e. `Y.config.win` does
Y.merge = function () {
result = {};
for (; i < len; ++i) {
return result;
return receiver || Y;
if (mode) {
return receiver;
if (whitelist) {
if (Y.Object._hasEnumBug) {
return receiver;
return function (obj) {
* - <https://developer.mozilla.org/en/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug>
var keys = [],
if (hasEnumBug) {
return keys;
values = [];
for (; i < len; ++i) {
return values;
} catch (ex) {
var key;
var key;
return UNDEFINED;
p = Y.Array(path),
l = p.length;
p = Y.Array(path),
ref = o;
return UNDEFINED;
var numberify = function(s) {
mobile: null,
ios: null,
accel: false,
secure: false,
os: null,
if (ua) {
o.ios = m;
if (!o.android) {
o.accel = true;
if (!subUA) {
"anim": ["anim-base","anim-color","anim-curve","anim-easing","anim-node-plugin","anim-scroll","anim-xy"],
"autocomplete": ["autocomplete-base","autocomplete-sources","autocomplete-list","autocomplete-plugin"],
"dataschema": ["dataschema-base","dataschema-json","dataschema-xml","dataschema-array","dataschema-text"],
"datasource": ["datasource-local","datasource-io","datasource-get","datasource-function","datasource-cache","datasource-jsonschema","datasource-xmlschema","datasource-arrayschema","datasource-textschema","datasource-polling"],
"datatable": ["datatable-core","datatable-head","datatable-body","datatable-base","datatable-column-widths","datatable-message","datatable-mutable","datatable-sort","datatable-datasource"],
"datatable-deprecated": ["datatable-base-deprecated","datatable-datasource-deprecated","datatable-sort-deprecated","datatable-scroll-deprecated"],
"dd": ["dd-ddm-base","dd-ddm","dd-ddm-drop","dd-drag","dd-proxy","dd-constrain","dd-drop","dd-scroll","dd-delegate"],
"editor": ["frame","editor-selection","exec-command","editor-base","editor-para","editor-br","editor-bidi","editor-tab","createlink-base"],
"event": ["event-base","event-delegate","event-synthetic","event-mousewheel","event-mouseenter","event-key","event-focus","event-resize","event-hover","event-outside","event-touch","event-move","event-flick","event-valuechange"],
cssOptions: {
attributes: {
jsOptions: {
autopurge: true,
options: {
attributes: {
_insertCache: {},
_pending: null,
_purgeNodes: [],
_queue: [],
transaction = null;
this._pending = null;
var urls = ['foo.css', 'http://example.com/bar.css', 'baz/quux.css'];
var urls = ['foo.js', 'http://example.com/bar.js', 'baz/quux.js'];
Y.Get.js(urls, function (err) {
Y.Get.js(urls, {
Y.Get.js([
{url: 'foo.js', attributes: {id: 'foo'}},
{url: 'bar.js', attributes: {id: 'bar', charset: 'iso-8859-1'}}
Y.Get.load(['foo.css', 'bar.js', 'baz.css'], function (err) {
_getEnv: function () {
return (this._env = {
// https://developer.mozilla.org/En/HTML/Element/Script#Attributes
var requests = [],
var transaction;
options = {};
if (!this._env) {
this._getEnv();
this._next();
return transaction;
_next: function () {
var item;
if (this._pending) {
if (item) {
if (isTransaction) {
var self = this;
This object comes from the options passed to `Get.css()`, `Get.js()`, or
this._pending = null;
this._pendingCSS = null;
this._queue = [];
this._finish();
var self = this,
purge: function () {
if (!CUSTOM_ATTRS) {
return node;
_finish: function () {
if (errors) {
if (req) {
return Y.merge(this, {
if (el) {
return el;
if (el) {
self = this,
if (!node) {
if (isScript) {
function onError() {
function onLoad() {
if (cssTimeout) {
if (isScript) {
onLoad();
_next: function () {
if (this._pending) {
} else if (!this._waiting) {
this._finish();
var self = this,
if (newReq) {
if (isWebKit) {
} catch (ex) {
if (err) {
this._pending = null;
this._next();
var feature_tests = {};
* @param {String} name The number sequence of the test, how it's reported in the URL or config: 1, 2, 3
* @param {Function} o.test The test function to execute, the only argument to the function is the `Y` instance
result = [];
if (cat_o) {
if (!feature) {
if (ua) {
return result;
/* This file is auto-generated by src/loader/scripts/meta_join.py */
svg = (DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"));
svg = (DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"));
return (DOCUMENT && !DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") && (!canvas || !canvas.getContext || !canvas.getContext("2d")));
svg = (DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"));
ret = true;
return ret;
ret = false;
test: function() {
test: function() {
return ret;
return ret;
svg = (DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"));
return (DOCUMENT && !DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") && (!canvas || !canvas.getContext || !canvas.getContext("2d")));
var SPLIT_REGEX = /[, ]/;
return availableLanguages[i];
if (result) {
return result;
* console implementations. This module is a `core` YUI module, <a href="../classes/YUI.html#method_log">it's documentation is located under the YUI class</a>.
var INSTANCE = Y,
Y = INSTANCE,
c = Y.config,
if (c.debug) {
if (src) {
if (!bail) {
if (c.useBrowserConsole) {
console[f](m);
* Provides a setTimeout/setInterval wrapper. This module is a `core` YUI module, <a href="../classes/YUI.html#method_later">it's documentation is located under the YUI class</a>.
var NO_ARGS = [];
var cancelled = false,
wrapper = function() {
if (!cancelled) {
cancel: function() {
cancelled = true;
if (this.interval) {
groups: {},
patterns: {} },
ext: false,
combine: true,
combine: true,
ext: false,
patterns: {
yui2Update();
var NOT_FOUND = {},
NO_REQUIREMENTS = [],
YObject = Y.Object,
YArray = Y.Array,
L = Y.Lang,
if (!nomin) {
return path;
* @param {String} config.comboBase The Combo service base path. Ex: `http://yui.yahooapis.com/combo?`
* @param {String} config.root The root path to prepend to module names for the combo service. Ex: `2.5.2/build/`
* @param {String|Object} config.filter A filter to apply to result urls. <a href="#property_filter">See filter property</a>
* @param {Object} config.filters Per-component filter specification. If specified for a given component, this overrides the filter config.
* @param {Boolean} config.combine Use a combo service to reduce the number of http connections required to load your dependencies
* @param {Array} config.force A list of modules that should always be loaded when required, even if already present on the page
* @param {HTMLElement|String} config.insertBefore Node or id for a node that should be used as the insertion point for new nodes
* @param {Object} config.jsAttributes Object literal containing attributes to add to script nodes
* @param {Number} config.timeout The number of milliseconds before a timeout occurs when dynamically loading nodes. If not set, there is no timeout
* @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.
* @param {Object} config.modules A list of module definitions. See <a href="#method_addModule">Loader.addModule</a> for the supported module metadata
* @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`.
* @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.
* @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.
Y.Loader = function(o) {
self = this;
// self.jsAttributes = null;
* @default http://yui.yahooapis.com/[YUI VERSION]/build/
* @default http://yui.yahooapis.com/combo?
* minified version of the files (e.g., event-min.js). The filter property
* <dd>Selects the debug versions of the library (e.g., event-debug.js).
* <dd>Selects the non-minified version of the library (e.g., event.js).
* 'replaceStr': "-debug.js"
if (cache) {
FILTER_DEFS: {
RAW: {
DEBUG: {
_inspectPage: function() {
this.loaded[k] = true;
if (v.details) {
var m = this.moduleInfo[k],
delete m.expanded;
m._inspected = true;
if (!m || !other) {
_config: function(o) {
if (o.hasOwnProperty(i)) {
val = o[i];
val = {
for (j in val) {
groupName = j;
if (L.isString(f)) {
f = f.toUpperCase();
if (mod) {
if (mod) {
nmod = {
return name;
* //out.js will contain Node and YQL modules
this.addModule({
self = this;
if (o.patterns) {
if (mods) {
}, self);
* @param {Array} [config.after] Array of modules the components which, if present, should be sorted above this one
* @param {Object} [config.after_map] Faster alternative to 'after' -- supply a hash instead of an array
* @param {String} [config.fullpath] If `fullpath` is specified, this is used instead of the configured `base + path`
* @param {Boolean} [config.skinnable] Flag to determine if skin assets should automatically be pulled in
* @param {String} [config.group] The group the module belongs to -- this is set automatically when it is added as part of a group configuration.
* @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"]`
* @param {Object} [config.condition] Specifies that the module should be loaded automatically if a condition is met. This is an object with up to three fields:
* @param {Function} [config.condition.test] A function that returns true when the module is to be loaded.
* @param {Function} [config.configFn] A function to exectute when configuring this module
* @param {Object} config.configFn.mod The module config, modifying this object will modify it's config. Returning false will delete the module's config.
* @return {Object} the module definition or null if the object passed in did not provide all required attributes.
if (!o || !o.name) {
if (!o.type) {
if (o.skinnable) {
if (!smod) {
if (subs) {
for (i in subs) {
s = subs[i];
if (s.supersedes) {
o.skinnable = true;
i, name);
i, name);
if (!smod) {
if (!smod) {
if (this.allowRollup) {
if (plugins) {
for (i in plugins) {
if (o.skinnable) {
if (o.condition) {
trigger = t[i];
if (o.supersedes) {
if (o.after) {
if (o.configFn) {
if (ret === false) {
this.dirty = true;
this._explodeRollups();
* Actually ask for: "dd-ddm-base,dd-ddm,dd-ddm-drop,dd-drag,dd-proxy,dd-constrain,dd-drop,dd-scroll,dd-drop-plugin"
_explodeRollups: function() {
var self = this, m,
if (m && m.use) {
if (m && m.use) {
filterRequires: function(r) {
var c = [], i, mod, o, m;
if (m && m.use) {
c.push(r[i]);
if (!mod) {
return NO_REQUIREMENTS;
d, k, m1,
r, old_mod,
hash;
hash = {};
intl = true;
if (!hash[r[i]]) {
d.push(r[i]);
hash[r[i]] = true;
m = this.getModule(r[i]);
if (!hash[r[i]]) {
d.push(r[i]);
hash[r[i]] = true;
m = this.getModule(r[i]);
if (o && this.loadOptional) {
if (!hash[o[i]]) {
d.push(o[i]);
hash[o[i]] = true;
m = info[o[i]];
if (cond) {
//Set the module to not parsed since we have conditionals and this could change the dependency tree.
if (go) {
skinpar = n;
if (intl) {
if (packName) {
ret = false,
if (!style) {
ret = true;
return ret;
return NOT_FOUND;
if (m && !m.provides) {
s = m.supersedes;
o[name] = true;
m.provides = o;
return m.provides;
this._config(o);
if (!this._init) {
this._setup();
this._explode();
if (this.allowRollup) {
this._rollup();
this._explodeRollups();
this._reduce();
this._sort();
* @param {String} packName The name of the package (e.g: lang/datatype-date-en-US)
if (!existing) {
conf = {
intl: true,
langPack: true,
supersedes: []
if (m.configFn) {
if (lang) {
_setup: function() {
if (!this.ignoreRegistered) {
if (this.ignore) {
if (l.hasOwnProperty(j)) {
if (this.force) {
if (this.force[i] in l) {
delete l[this.force[i]];
this._init = true;
_explode: function() {
self = this;
if (expound) {
if (!mname) {
if (!p.test) {
found = p;
if (found) {
if (p.action) {
m.temp = true;
_rollup: function() { },
_reduce: function(r) {
r = r || this.required;
if (r.hasOwnProperty(i)) {
m = this.getModule(i);
s = m && m.supersedes;
if (onEnd) {
this._continue();
_onSuccess: function() {
if (fn) {
_onProgress: function(e) {
var self = this;
_onFailure: function(o) {
for (i; i < len; i++) {
success: false
_onTimeout: function() {
var f = this.onTimeout;
success: false
_sort: function() {
done = {},
l = s.length;
moved = false;
doneKey = a + s[k];
moved = true;
if (moved) {
if (!moved) {
this.sorted = s;
if (source) {
if (!skipcalc) {
this.calculate(o);
if (type) {
comp++;
comp++;
var complete = function(d) {
actions++;
if (d && d.errors) {
u = d.errors[i];
errs[u] = u;
if (d && d.fn) {
delete d.fn;
this._loading = true;
complete({
onProgress: function(e) {
onTimeout: function(d) {
onSuccess: function(d) {
onFailure: function(d) {
autopurge: false,
async: true,
onProgress: function(e) {
onTimeout: function(d) {
onSuccess: function(d) {
onFailure: function(d) {
_continue: function() {
this._continue();
var f = this.filter,
hasFilter = true;
if (hasFilter) {
* Returns an Object hash of file arrays built from `loader.sorted` or from an arbitrary list of sorted modules.
if (calc) {
var addSingle = function(m) {
url = {
if (m.attributes) {
comboSources = {};
addSingle(m);
m.combine = true;
addSingle(m);
for (j in comboSources) {
url = j;
if (len) {
m = mods[i];
if (mods[i]) {
for (j in resCombos) {
base = j;
if (len) {
m = u.pop();
u.push(m);
if (u.length) {
resCombos = null;
return resolved;
path: 'mod.js'
if (!cb) {
var self = this,
this.rollups = {};
for (i in info) {
m = this.getModule(i);
if (m && m.rollup) {
this.rollups[i] = m;
rolled = false;
for (i in this.rollups) {
m = this.getModule(i);
s = m.supersedes || [];
roll = false;
if (!m.rollup) {
roll = false;
if (roll) {
if (roll) {
rolled = true;
this.getRequires(m);
if (!rolled) {
/* This file is auto-generated by src/loader/scripts/meta_join.py */
ret = false;
test: function() {
test: function() {
return ret;
svg = (DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"));
svg = (DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"));
svg = (DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"));
svg = (DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"));
return (DOCUMENT && !DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") && (!canvas || !canvas.getContext || !canvas.getContext("2d")));
return (DOCUMENT && !DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") && (!canvas || !canvas.getContext || !canvas.getContext("2d")));
return ret;
ret = true;
return ret;