windowsinboxwhatsappicloudtweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplaceoutlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacoslinux
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
230 lines
6.5 KiB
230 lines
6.5 KiB
9 years ago
|
// here, the extra check for window['Ext'] is needed for use with cmd-test
|
||
|
// code injection. we need to make that this file will sync up with page global
|
||
|
// scope to avoid duplicate Ext.Boot state. That check is after the initial Ext check
|
||
|
// to allow the sandboxing template to inject an appropriate Ext var and prevent the
|
||
|
// global detection.
|
||
|
var Ext = Ext || window['Ext'] || {};
|
||
|
|
||
|
|
||
|
//<editor-fold desc="Microloader">
|
||
|
/**
|
||
|
* @Class Ext.Microloader
|
||
|
* @singleton
|
||
|
*/
|
||
|
Ext.Microloader = Ext.Microloader || (function () {
|
||
|
var Boot = Ext.Boot,
|
||
|
_listeners = [],
|
||
|
_loaded = false,
|
||
|
|
||
|
Microloader = {
|
||
|
detectPlatformTags: function () {
|
||
|
if (Ext.beforeLoad) {
|
||
|
Ext.beforeLoad(Ext.platformTags);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
initPlatformTags: function () {
|
||
|
Microloader.detectPlatformTags();
|
||
|
},
|
||
|
|
||
|
init: function () {
|
||
|
Microloader.initPlatformTags();
|
||
|
var readyHandler = Ext._beforereadyhandler;
|
||
|
Ext._beforereadyhandler = function () {
|
||
|
if (Ext.Boot !== Boot) {
|
||
|
Ext.apply(Ext.Boot, Boot);
|
||
|
Ext.Boot = Boot;
|
||
|
}
|
||
|
if(readyHandler) {
|
||
|
readyHandler();
|
||
|
}
|
||
|
};
|
||
|
},
|
||
|
|
||
|
run: function() {
|
||
|
Microloader.init();
|
||
|
var manifest = Ext.manifest;
|
||
|
|
||
|
if (typeof manifest === "string") {
|
||
|
var extension = ".json",
|
||
|
url = manifest.indexOf(extension) === manifest.length - extension.length
|
||
|
? manifest
|
||
|
: manifest + ".json";
|
||
|
|
||
|
Boot.fetch(url, function(result){
|
||
|
manifest = Ext.manifest = JSON.parse(result.content);
|
||
|
Microloader.load(manifest);
|
||
|
});
|
||
|
} else {
|
||
|
Microloader.load(manifest);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @param manifestDef
|
||
|
*/
|
||
|
load: function (manifest) {
|
||
|
var loadOrder = manifest.loadOrder,
|
||
|
loadOrderMap = (loadOrder) ? Boot.createLoadOrderMap(loadOrder) : null,
|
||
|
urls = [],
|
||
|
js = manifest.js || [],
|
||
|
css = manifest.css || [],
|
||
|
resource, i, len, include,
|
||
|
loadedFn = function () {
|
||
|
_loaded = true;
|
||
|
Microloader.notify();
|
||
|
},
|
||
|
loadResources = function(resources, addLoadedFn){
|
||
|
for (len = resources.length, i = 0; i < len; i++) {
|
||
|
resource = resources[i];
|
||
|
include = true;
|
||
|
if (resource.platform && !Boot.filterPlatform(resource.platform)) {
|
||
|
include = false;
|
||
|
}
|
||
|
if (include) {
|
||
|
urls.push(resource.path);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if(!addLoadedFn) {
|
||
|
Boot.loadSync({
|
||
|
url: urls,
|
||
|
loadOrder: loadOrder,
|
||
|
loadOrderMap: loadOrderMap
|
||
|
});
|
||
|
} else {
|
||
|
Boot.load({
|
||
|
url: urls,
|
||
|
loadOrder: loadOrder,
|
||
|
loadOrderMap: loadOrderMap,
|
||
|
sequential: true,
|
||
|
success: loadedFn,
|
||
|
failure: loadedFn
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
if (loadOrder) {
|
||
|
manifest.loadOrderMap = loadOrderMap;
|
||
|
}
|
||
|
|
||
|
loadResources(css.concat(js), true);
|
||
|
},
|
||
|
|
||
|
onMicroloaderReady: function (listener) {
|
||
|
if (_loaded) {
|
||
|
listener();
|
||
|
} else {
|
||
|
_listeners.push(listener);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* @private
|
||
|
*/
|
||
|
notify: function () {
|
||
|
//<debug>
|
||
|
Boot.debug("notifying microloader ready listeners...");
|
||
|
//</debug>
|
||
|
var listener;
|
||
|
while((listener = _listeners.shift())) {
|
||
|
listener();
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
return Microloader;
|
||
|
}());
|
||
|
|
||
|
//</editor-fold>
|
||
|
|
||
|
/**
|
||
|
* the current application manifest
|
||
|
*
|
||
|
*
|
||
|
* {
|
||
|
* name: 'name',
|
||
|
* version: <checksum>,
|
||
|
* debug: {
|
||
|
* hooks: {
|
||
|
* "*": true
|
||
|
* }
|
||
|
* },
|
||
|
* localStorage: false,
|
||
|
* mode: production,
|
||
|
* js: [
|
||
|
* ...
|
||
|
* {
|
||
|
* path: '../boo/baz.js',
|
||
|
* version: <checksum>,
|
||
|
* update: full | delta | <falsy>,
|
||
|
* platform: ['phone', 'ios', 'android']
|
||
|
* },
|
||
|
* {
|
||
|
* path: 'http://some.domain.com/api.js',
|
||
|
* remote: true
|
||
|
* },
|
||
|
* ...
|
||
|
* ],
|
||
|
* css: [
|
||
|
* ...
|
||
|
* {
|
||
|
* path: '../boo/baz.css',
|
||
|
* version: <checksum>,
|
||
|
* update: full | delta | <falsy>,
|
||
|
* platform: ['phone', 'ios', 'android']
|
||
|
* },
|
||
|
* ...
|
||
|
* ],
|
||
|
* localStorage: false,
|
||
|
* paths: {...},
|
||
|
* loadOrder: [
|
||
|
* ...
|
||
|
* {
|
||
|
* path: '../foo/bar.js",
|
||
|
* idx: 158,
|
||
|
* requires; [1,2,3,...,145,157],
|
||
|
* uses: [182, 193]
|
||
|
* },
|
||
|
* ...
|
||
|
* ],
|
||
|
* classes: {
|
||
|
* ...
|
||
|
* 'Ext.panel.Panel': {
|
||
|
* requires: [...],
|
||
|
* uses: [...],
|
||
|
* aliases: [...],
|
||
|
* alternates: [...],
|
||
|
* mixins: [...]
|
||
|
* },
|
||
|
* 'Ext.rtl.util.Renderable': {
|
||
|
* requires: [...],
|
||
|
* uses: [...],
|
||
|
* aliases: [...],
|
||
|
* alternates: [...],
|
||
|
* mixins: [...]
|
||
|
* override: 'Ext.util.Renderable'
|
||
|
* },
|
||
|
* ...
|
||
|
* },
|
||
|
* packages: {
|
||
|
* ...
|
||
|
* "sencha-core": {
|
||
|
* version: '1.2.3.4',
|
||
|
* requires: []
|
||
|
* },
|
||
|
* "ext": {
|
||
|
* version: '5.0.0.0',
|
||
|
* requires: ["sencha-core"]
|
||
|
* }.
|
||
|
* ...
|
||
|
* }
|
||
|
* }
|
||
|
*
|
||
|
*
|
||
|
* @type {String/Object}
|
||
|
*/
|
||
|
Ext.manifest = Ext.manifest || "bootstrap";
|
||
|
|
||
|
Ext.Microloader.run();
|