Форк Rambox
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.
 
 
 

26600 lines
716 KiB

/*
This file is part of Ext JS 5.1.1.451
Copyright (c) 2011-2015 Sencha Inc
Contact: http://www.sencha.com/contact
GNU General Public License Usage
This file may be used under the terms of the GNU General Public License version 3.0 as
published by the Free Software Foundation and appearing in the file LICENSE included in the
packaging of this file.
Please review the following information to ensure the GNU General Public License version 3.0
requirements will be met: http://www.gnu.org/copyleft/gpl.html.
If you are unsure which license is appropriate for your use, please contact the sales department
at http://www.sencha.com/contact.
Version: 5.1.1.451 Build date: 2015-05-06 21:53:32 (130b7b8a6334f33aee5c2952cefb768cadb3bf78)
*/
var Ext = Ext || {};
Ext.Boot = Ext.Boot || (function (emptyFn) {
var doc = document,
apply = function (dest, src, defaults) {
if (defaults) {
apply(dest, defaults);
}
if (dest && src && typeof src == 'object') {
for (var key in src) {
dest[key] = src[key];
}
}
return dest;
},
_config = {
disableCaching: (/[?&](?:cache|disableCacheBuster)\b/i.test(location.search) ||
!(/http[s]?\:/i.test(location.href)) ||
/(^|[ ;])ext-cache=1/.test(doc.cookie)) ? false :
true,
disableCachingParam: '_dc',
loadDelay: false,
preserveScripts: true,
charset: undefined
},
cssRe = /\.css(?:\?|$)/i,
resolverEl = doc.createElement('a'),
isBrowser = typeof window !== 'undefined',
_environment = {
browser: isBrowser,
node: !isBrowser && (typeof require === 'function'),
phantom: (typeof phantom !== 'undefined' && phantom.fs)
},
_tags = (Ext.platformTags = {}),
_debug = function (message) {
},
_apply = function (object, config, defaults) {
if (defaults) {
_apply(object, defaults);
}
if (object && config && typeof config === 'object') {
for (var i in config) {
object[i] = config[i];
}
}
return object;
},
Boot = {
loading: 0,
loaded: 0,
env: _environment,
config: _config,
scripts: {
},
currentFile: null,
suspendedQueue: [],
currentRequest: null,
syncMode: false,
debug: _debug,
useElements: true,
listeners: [],
Request: Request,
Entry: Entry,
detectPlatformTags: function () {
var ua = navigator.userAgent,
isMobile = _tags.isMobile = /Mobile(\/|\s)/.test(ua),
isPhone, isDesktop, isTablet, touchSupported, isIE10, isBlackberry,
element = document.createElement('div'),
uaTagChecks = [
'iPhone',
'iPod',
'Android',
'Silk',
'Android 2',
'BlackBerry',
'BB',
'iPad',
'RIM Tablet OS',
'MSIE 10',
'Trident',
'Chrome',
'Tizen',
'Firefox',
'Safari',
'Windows Phone'
],
isEventSupported = function(name, tag) {
if (tag === undefined) {
tag = window;
}
var eventName = 'on' + name.toLowerCase(),
isSupported = (eventName in element);
if (!isSupported) {
if (element.setAttribute && element.removeAttribute) {
element.setAttribute(eventName, '');
isSupported = typeof element[eventName] === 'function';
if (typeof element[eventName] !== 'undefined') {
element[eventName] = undefined;
}
element.removeAttribute(eventName);
}
}
return isSupported;
},
uaTags = {},
len = uaTagChecks.length, check, c;
for (c = 0; c < len; c++) {
check = uaTagChecks[c];
uaTags[check] = new RegExp(check).test(ua);
}
isPhone =
(uaTags.iPhone || uaTags.iPod) ||
(!uaTags.Silk && (uaTags.Android && (uaTags['Android 2'] || isMobile))) ||
((uaTags.BlackBerry || uaTags.BB) && uaTags.isMobile) ||
(uaTags['Windows Phone']);
isTablet =
(!_tags.isPhone) && (
uaTags.iPad ||
uaTags.Android ||
uaTags.Silk ||
uaTags['RIM Tablet OS'] ||
(uaTags['MSIE 10'] && /; Touch/.test(ua))
);
touchSupported =
isEventSupported('touchend') ||
navigator.maxTouchPoints ||
navigator.msMaxTouchPoints;
isDesktop = !isPhone && !isTablet;
isIE10 = uaTags['MSIE 10'];
isBlackberry = uaTags.Blackberry || uaTags.BB;
apply(_tags, Boot.loadPlatformsParam(), {
phone: isPhone,
tablet: isTablet,
desktop: isDesktop,
touch: touchSupported,
ios: (uaTags.iPad || uaTags.iPhone || uaTags.iPod),
android: uaTags.Android || uaTags.Silk,
blackberry: isBlackberry,
safari: uaTags.Safari && !isBlackberry,
chrome: uaTags.Chrome,
ie10: isIE10,
windows: isIE10 || uaTags.Trident,
tizen: uaTags.Tizen,
firefox: uaTags.Firefox
});
},
loadPlatformsParam: function () {
var paramsString = window.location.search.substr(1),
paramsArray = paramsString.split("&"),
params = {}, i,
platforms = {},
tmpArray, tmplen, platform, name, enabled;
for (i = 0; i < paramsArray.length; i++) {
tmpArray = paramsArray[i].split("=");
params[tmpArray[0]] = tmpArray[1];
}
if (params.platformTags) {
tmpArray = params.platform.split(/\W/);
for (tmplen = tmpArray.length, i = 0; i < tmplen; i++) {
platform = tmpArray[i].split(":");
name = platform[0];
if (platform.length > 1) {
enabled = platform[1];
if (enabled === 'false' || enabled === '0') {
enabled = false;
} else {
enabled = true;
}
}
platforms[name] = enabled;
}
}
return platform;
},
filterPlatform: function (platform) {
platform = [].concat(platform);
var len, p, tag;
for (len = platform.length, p = 0; p < len; p++) {
tag = platform[p];
if (_tags.hasOwnProperty(tag)) {
return !!_tags[tag];
}
}
return false;
},
init: function () {
var scriptEls = doc.getElementsByTagName('script'),
len = scriptEls.length,
re = /\/ext(\-[a-z\-]+)?\.js$/,
entry, script, src, state, baseUrl, key, n, origin;
for (n = 0; n < len; n++) {
src = (script = scriptEls[n]).src;
if (!src) {
continue;
}
state = script.readyState || null;
if (!baseUrl) {
if (re.test(src)) {
Boot.hasReadyState = ("readyState" in script);
Boot.hasAsync = ("async" in script) || !Boot.hasReadyState;
baseUrl = src;
}
}
if (!Boot.scripts[key = Boot.canonicalUrl(src)]) {
_debug("creating entry " + key + " in Boot.init");
entry = new Entry({
key: key,
url: src,
done: state === null ||
state === 'loaded' || state === 'complete',
el: script,
prop: 'src'
});
}
}
if (!baseUrl) {
script = scriptEls[scriptEls.length - 1];
baseUrl = script.src;
Boot.hasReadyState = ('readyState' in script);
Boot.hasAsync = ("async" in script) || !Boot.hasReadyState;
}
Boot.baseUrl = baseUrl.substring(0, baseUrl.lastIndexOf('/') + 1);
origin = window.location.origin ||
window.location.protocol +
"//" +
window.location.hostname +
(window.location.port ? ':' + window.location.port: '');
Boot.origin = origin;
Boot.detectPlatformTags();
Ext.filterPlatform = Boot.filterPlatform;
},
canonicalUrl: function (url) {
resolverEl.href = url;
var ret = resolverEl.href,
dc = _config.disableCachingParam,
pos = dc ? ret.indexOf(dc + '=') : -1,
c, end;
if (pos > 0 && ((c = ret.charAt(pos - 1)) === '?' || c === '&')) {
end = ret.indexOf('&', pos);
end = (end < 0) ? '' : ret.substring(end);
if (end && c === '?') {
++pos;
end = end.substring(1);
}
ret = ret.substring(0, pos - 1) + end;
}
return ret;
},
getConfig: function (name) {
return name ? Boot.config[name] : Boot.config;
},
setConfig: function (name, value) {
if (typeof name === 'string') {
Boot.config[name] = value;
} else {
for (var s in name) {
Boot.setConfig(s, name[s]);
}
}
return Boot;
},
getHead: function () {
return Boot.docHead ||
(Boot.docHead = doc.head ||
doc.getElementsByTagName('head')[0]);
},
create: function (url, key, cfg) {
var config = cfg || {};
config.url = url;
config.key = key;
return Boot.scripts[key] = new Entry(config);
},
getEntry: function (url, cfg) {
var key = Boot.canonicalUrl(url),
entry = Boot.scripts[key];
if (!entry) {
entry = Boot.create(url, key, cfg);
}
return entry;
},
processRequest: function(request, sync) {
request.loadEntries(sync);
},
load: function (request) {
_debug("Boot.load called");
var request = new Request(request);
if (request.sync || Boot.syncMode) {
return Boot.loadSync(request);
}
if (Boot.currentRequest) {
_debug("current active request, suspending this request");
request.getEntries();
Boot.suspendedQueue.push(request);
} else {
Boot.currentRequest = request;
Boot.processRequest(request, false);
}
return Boot;
},
loadSync: function (request) {
_debug("Boot.loadSync called");
var request = new Request(request);
Boot.syncMode++;
Boot.processRequest(request, true);
Boot.syncMode--;
return Boot;
},
loadBasePrefix: function(request) {
request = new Request(request);
request.prependBaseUrl = true;
return Boot.load(request);
},
loadSyncBasePrefix: function(request) {
request = new Request(request);
request.prependBaseUrl = true;
return Boot.loadSync(request);
},
requestComplete: function(request) {
var next;
if (Boot.currentRequest === request) {
Boot.currentRequest = null;
while(Boot.suspendedQueue.length > 0) {
next = Boot.suspendedQueue.shift();
if(!next.done) {
_debug("resuming suspended request");
Boot.load(next);
break;
}
}
}
if (!Boot.currentRequest && Boot.suspendedQueue.length == 0) {
Boot.fireListeners();
}
},
isLoading: function () {
return !Boot.currentRequest && Boot.suspendedQueue.length == 0;
},
fireListeners: function () {
var listener;
while (Boot.isLoading() && (listener = Boot.listeners.shift())) {
listener();
}
},
onBootReady: function (listener) {
if (!Boot.isLoading()) {
listener();
} else {
Boot.listeners.push(listener);
}
},
getPathsFromIndexes: function (indexMap, loadOrder) {
return Request.prototype.getPathsFromIndexes(indexMap, loadOrder);
},
createLoadOrderMap: function(loadOrder) {
return Request.prototype.createLoadOrderMap(loadOrder);
},
fetch: function(url, complete, scope, async) {
async = (async === undefined) ? !!complete : async;
var xhr = new XMLHttpRequest(),
result, status, content, exception = false,
readyStateChange = function () {
if (xhr && xhr.readyState == 4) {
status = (xhr.status === 1223) ? 204 :
(xhr.status === 0 && ((self.location || {}).protocol === 'file:' ||
(self.location || {}).protocol === 'ionp:')) ? 200 : xhr.status;
content = xhr.responseText;
result = {
content: content,
status: status,
exception: exception
};
if (complete) {
complete.call(scope, result);
}
xhr = null;
}
};
if (async) {
xhr.onreadystatechange = readyStateChange;
}
try {
_debug("fetching " + url + " " + (async ? "async" : "sync"));
xhr.open('GET', url, async);
xhr.send(null);
} catch (err) {
exception = err;
readyStateChange();
return result;
}
if (!async) {
readyStateChange();
}
return result;
},
notifyAll: function(entry) {
entry.notifyRequests();
}
};
function Request(cfg) {
if(cfg.$isRequest) {
return cfg;
}
var cfg = cfg.url ? cfg : {url: cfg},
url = cfg.url,
urls = url.charAt ? [ url ] : url,
charset = cfg.charset || Boot.config.charset;
_apply(cfg, {
urls: urls,
charset: charset
});
_apply(this, cfg);
};
Request.prototype = {
$isRequest: true,
createLoadOrderMap: function (loadOrder) {
var len = loadOrder.length,
loadOrderMap = {},
i, element;
for (i = 0; i < len; i++) {
element = loadOrder[i];
loadOrderMap[element.path] = element;
}
return loadOrderMap;
},
getLoadIndexes: function (index, indexMap, loadOrder, includeUses, skipLoaded) {
var item = loadOrder[index],
len, i, reqs, entry, stop, added, idx, ridx, url;
if (indexMap[index]) {
return indexMap;
}
indexMap[index] = true;
stop = false;
while (!stop) {
added = false;
for (idx in indexMap) {
if (indexMap.hasOwnProperty(idx)) {
item = loadOrder[idx];
if (!item) {
continue;
}
url = this.prepareUrl(item.path);
entry = Boot.getEntry(url);
if (!skipLoaded || !entry || !entry.done) {
reqs = item.requires;
if (includeUses && item.uses) {
reqs = reqs.concat(item.uses);
}
for (len = reqs.length, i = 0; i < len; i++) {
ridx = reqs[i];
if (!indexMap[ridx]) {
indexMap[ridx] = true;
added = true;
}
}
}
}
}
if (!added) {
stop = true;
}
}
return indexMap;
},
getPathsFromIndexes: function (indexMap, loadOrder) {
var indexes = [],
paths = [],
index, len, i;
for (index in indexMap) {
if (indexMap.hasOwnProperty(index) && indexMap[index]) {
indexes.push(index);
}
}
indexes.sort(function (a, b) {
return a - b;
});
for (len = indexes.length, i = 0; i < len; i++) {
paths.push(loadOrder[indexes[i]].path);
}
return paths;
},
expandUrl: function (url, indexMap, includeUses, skipLoaded) {
if (typeof url == 'string') {
url = [url];
}
var me = this,
loadOrder = me.loadOrder,
loadOrderMap = me.loadOrderMap;
if (loadOrder) {
loadOrderMap = loadOrderMap || me.createLoadOrderMap(loadOrder);
me.loadOrderMap = loadOrderMap;
indexMap = indexMap || {};
var len = url.length,
unmapped = [],
i, item;
for (i = 0; i < len; i++) {
item = loadOrderMap[url[i]];
if (item) {
me.getLoadIndexes(item.idx, indexMap, loadOrder, includeUses, skipLoaded);
} else {
unmapped.push(url[i]);
}
}
return me.getPathsFromIndexes(indexMap, loadOrder).concat(unmapped);
}
return url;
},
expandUrls: function (urls, includeUses) {
if (typeof urls == "string") {
urls = [urls];
}
var expanded = [],
expandMap = {},
tmpExpanded,
len = urls.length,
i, t, tlen, tUrl;
for (i = 0; i < len; i++) {
tmpExpanded = this.expandUrl(urls[i], {}, includeUses, true);
for (t = 0, tlen = tmpExpanded.length; t < tlen; t++) {
tUrl = tmpExpanded[t];
if (!expandMap[tUrl]) {
expandMap[tUrl] = true;
expanded.push(tUrl);
}
}
}
if (expanded.length == 0) {
expanded = urls;
}
return expanded;
},
expandLoadOrder: function () {
var me = this,
urls = me.urls,
expanded;
if (!me.expanded) {
expanded = this.expandUrls(urls, true);
me.expanded = true;
} else {
expanded = urls;
}
me.urls = expanded;
if (urls.length != expanded.length) {
me.sequential = true;
}
return me;
},
getUrls: function () {
this.expandLoadOrder();
return this.urls;
},
prepareUrl: function(url) {
if(this.prependBaseUrl) {
return Boot.baseUrl + url;
}
return url;
},
getEntries: function () {
var me = this,
entries = me.entries,
i, entry, urls, url;
if (!entries) {
entries = [];
urls = me.getUrls();
for (i = 0; i < urls.length; i++) {
url = me.prepareUrl(urls[i]);
entry = Boot.getEntry(url, {
buster: me.buster,
charset: me.charset
});
entry.requests.push(me);
entries.push(entry);
}
me.entries = entries;
}
return entries;
},
loadEntries: function(sync) {
var me = this,
entries = me.getEntries(),
len = entries.length,
start = me.loadStart || 0,
continueLoad, entry, i;
if(sync !== undefined) {
me.sync = sync;
}
me.loaded = me.loaded || 0;
me.loading = me.loading || len;
for(i = start; i < len; i++) {
entry = entries[i];
if(!entry.loaded) {
continueLoad = entries[i].load(me.sync);
} else {
continueLoad = true;
}
if(!continueLoad) {
me.loadStart = i;
entry.onDone(function(){
me.loadEntries(sync);
});
break;
}
}
me.processLoadedEntries();
},
processLoadedEntries: function () {
var me = this,
entries = me.getEntries(),
len = entries.length,
start = me.startIndex || 0,
i, entry;
if (!me.done) {
for (i = start; i < len; i++) {
entry = entries[i];
if (!entry.loaded) {
me.startIndex = i;
return;
}
if (!entry.evaluated) {
entry.evaluate();
}
if (entry.error) {
me.error = true;
}
}
me.notify();
}
},
notify: function () {
var me = this;
if (!me.done) {
var error = me.error,
fn = me[error ? 'failure' : 'success'],
delay = ('delay' in me)
? me.delay
: (error ? 1 : Boot.config.chainDelay),
scope = me.scope || me;
me.done = true;
if (fn) {
if (delay === 0 || delay > 0) {
setTimeout(function () {
fn.call(scope, me);
}, delay);
} else {
fn.call(scope, me);
}
}
me.fireListeners();
Boot.requestComplete(me);
}
},
onDone: function(listener) {
var me = this,
listeners = me.listeners || (me.listeners = []);
if(me.done) {
listener(me);
} else {
listeners.push(listener);
}
},
fireListeners: function() {
var listeners = this.listeners,
listener;
if(listeners) {
_debug("firing request listeners");
while((listener = listeners.shift())) {
listener(this);
}
}
}
};
function Entry(cfg) {
if(cfg.$isEntry) {
return cfg;
}
_debug("creating entry for " + cfg.url);
var charset = cfg.charset || Boot.config.charset,
manifest = Ext.manifest,
loader = manifest && manifest.loader,
cache = (cfg.cache !== undefined) ? cfg.cache : (loader && loader.cache),
buster, busterParam;
if(cache === undefined) {
cache = !Boot.config.disableCaching;
}
if(cache === false) {
buster = +new Date();
} else if(cache !== true) {
buster = cache;
}
if(buster) {
busterParam = (loader && loader.cacheParam) || Boot.config.disableCachingParam;
buster = busterParam + "=" + buster;
};
_apply(cfg, {
charset: charset,
buster: buster,
requests: []
});
_apply(this, cfg);
};
Entry.prototype = {
$isEntry: true,
done: false,
evaluated: false,
loaded: false,
isCrossDomain: function() {
var me = this;
if(me.crossDomain === undefined) {
_debug("checking " + me.getLoadUrl() + " for prefix " + Boot.origin);
me.crossDomain = (me.getLoadUrl().indexOf(Boot.origin) !== 0);
}
return me.crossDomain;
},
isCss: function () {
var me = this;
if (me.css === undefined) {
me.css = me.url && cssRe.test(me.url);
}
return this.css;
},
getElement: function (tag) {
var me = this,
el = me.el;
if (!el) {
_debug("creating element for " + me.url);
if (me.isCss()) {
tag = tag || "link";
el = doc.createElement(tag);
if(tag == "link") {
el.rel = 'stylesheet';
me.prop = 'href';
} else {
me.prop="textContent";
}
el.type = "text/css";
} else {
tag = tag || "script";
el = doc.createElement(tag);
el.type = 'text/javascript';
me.prop = 'src';
if (Boot.hasAsync) {
el.async = false;
}
}
me.el = el;
}
return el;
},
getLoadUrl: function () {
var me = this,
url = Boot.canonicalUrl(me.url);
if (!me.loadUrl) {
me.loadUrl = !!me.buster
? (url + (url.indexOf('?') === -1 ? '?' : '&') + me.buster)
: url;
}
return me.loadUrl;
},
fetch: function (req) {
var url = this.getLoadUrl(),
async = !!req.async,
complete = req.complete;
Boot.fetch(url, complete, this, async);
},
onContentLoaded: function (response) {
var me = this,
status = response.status,
content = response.content,
exception = response.exception,
url = this.getLoadUrl();
me.loaded = true;
if ((exception || status === 0) && !_environment.phantom) {
me.error =
("Failed loading synchronously via XHR: '" + url +
"'. It's likely that the file is either being loaded from a " +
"different domain or from the local file system where cross " +
"origin requests are not allowed for security reasons. Try " +
"asynchronous loading instead.") ||
true;
me.evaluated = true;
}
else if ((status >= 200 && status < 300) || status === 304
|| _environment.phantom
|| (status === 0 && content.length > 0)
) {
me.content = content;
}
else {
me.error =
("Failed loading synchronously via XHR: '" + url +
"'. Please verify that the file exists. XHR status code: " +
status) ||
true;
me.evaluated = true;
}
},
createLoadElement: function(callback) {
var me = this,
el = me.getElement(),
readyStateChange = function(){
if (this.readyState === 'loaded' || this.readyState === 'complete') {
if(callback) {
callback();
}
}
},
errorFn = function() {
me.error = true;
if(callback) {
callback();
}
};
me.preserve = true;
el.onerror = errorFn;
if(Boot.hasReadyState) {
el.onreadystatechange = readyStateChange;
} else {
el.onload = callback;
}
el[me.prop] = me.getLoadUrl();
},
onLoadElementReady: function() {
Boot.getHead().appendChild(this.getElement());
this.evaluated = true;
},
inject: function (content, asset) {
_debug("injecting content for " + this.url);
var me = this,
head = Boot.getHead(),
url = me.url,
key = me.key,
base, el, ieMode, basePath;
if (me.isCss()) {
me.preserve = true;
basePath = key.substring(0, key.lastIndexOf("/") + 1);
base = doc.createElement('base');
base.href = basePath;
if(head.firstChild) {
head.insertBefore(base, head.firstChild);
} else {
head.appendChild(base);
}
base.href = base.href;
if (url) {
content += "\n/*# sourceURL=" + key + " */";
}
el = me.getElement("style");
ieMode = ('styleSheet' in el);
head.appendChild(base);
if(ieMode) {
head.appendChild(el);
el.styleSheet.cssText = content;
} else {
el.textContent = content;
head.appendChild(el);
}
head.removeChild(base);
} else {
if (url) {
content += "\n//# sourceURL=" + key;
}
Ext.globalEval(content);
}
return me;
},
loadCrossDomain: function() {
var me = this,
complete = function(){
me.loaded = me.evaluated = me.done = true;
me.notifyRequests();
};
if(me.isCss()) {
me.createLoadElement();
me.evaluateLoadElement();
complete();
} else {
me.createLoadElement(function(){
complete();
});
me.evaluateLoadElement();
return false;
}
return true;
},
loadElement: function() {
var me = this,
complete = function(){
me.loaded = me.evaluated = me.done = true;
me.notifyRequests();
};
if(me.isCss()) {
return me.loadCrossDomain();
} else {
me.createLoadElement(function(){
complete();
});
me.evaluateLoadElement();
}
return true;
},
loadSync: function() {
var me = this;
me.fetch({
async: false,
complete: function (response) {
me.onContentLoaded(response);
}
});
me.evaluate();
me.notifyRequests();
},
load: function (sync) {
var me = this;
if (!me.loaded) {
if(me.loading) {
return false;
}
me.loading = true;
if (!sync) {
if(me.isCrossDomain()) {
return me.loadCrossDomain();
}
else if(!me.isCss() && Boot.hasReadyState) {
me.createLoadElement(function () {
me.loaded = true;
me.notifyRequests();
});
}
else if(Boot.useElements) {
return me.loadElement();
}
else {
me.fetch({
async: !sync,
complete: function (response) {
me.onContentLoaded(response);
me.notifyRequests();
}
});
}
}
else {
me.loadSync();
}
}
return true;
},
evaluateContent: function () {
this.inject(this.content);
this.content = null;
},
evaluateLoadElement: function() {
Boot.getHead().appendChild(this.getElement());
},
evaluate: function () {
var me = this;
if(!me.evaluated) {
if(me.evaluating) {
return;
}
me.evaluating = true;
if(me.content !== undefined) {
me.evaluateContent();
} else if(!me.error) {
me.evaluateLoadElement();
}
me.evaluated = me.done = true;
me.cleanup();
}
},
cleanup: function () {
var me = this,
el = me.el,
prop;
if (!el) {
return;
}
if (!me.preserve) {
me.el = null;
el.parentNode.removeChild(el);
for (prop in el) {
try {
if (prop !== me.prop) {
el[prop] = null;
}
delete el[prop];
} catch (cleanEx) {
}
}
}
el.onload = el.onerror = el.onreadystatechange = emptyFn;
},
notifyRequests: function () {
var requests = this.requests,
len = requests.length,
i, request;
for (i = 0; i < len; i++) {
request = requests[i];
request.processLoadedEntries();
}
if(this.done) {
this.fireListeners();
}
},
onDone: function(listener) {
var me = this,
listeners = me.listeners || (me.listeners = []);
if(me.done) {
listener(me);
} else {
listeners.push(listener);
}
},
fireListeners: function() {
var listeners = this.listeners,
listener;
if(listeners && listeners.length > 0) {
_debug("firing event listeners for url " + this.url);
while((listener = listeners.shift())) {
listener(this);
}
}
}
};
Ext.disableCacheBuster = function (disable, path) {
var date = new Date();
date.setTime(date.getTime() + (disable ? 10 * 365 : -1) * 24 * 60 * 60 * 1000);
date = date.toGMTString();
doc.cookie = 'ext-cache=1; expires=' + date + '; path=' + (path || '/');
};
if (_environment.node) {
Boot.prototype.load = Boot.prototype.loadSync = function (request) {
require(filePath);
onLoad.call(scope);
};
Boot.prototype.init = emptyFn;
}
Boot.init();
return Boot;
}(function () {
}));
Ext.globalEval = Ext.globalEval || (this.execScript
? function (code) { execScript(code); }
: function ($$code) { eval.call(window, $$code); });
if (!Function.prototype.bind) {
(function () {
var slice = Array.prototype.slice,
bind = function (me) {
var args = slice.call(arguments, 1),
method = this;
if (args.length) {
return function () {
var t = arguments;
return method.apply(me, t.length ? args.concat(slice.call(t)) : args);
};
}
args = null;
return function () {
return method.apply(me, arguments);
};
};
Function.prototype.bind = bind;
bind.$extjs = true;
}());
}
var Ext = Ext || {};
(function(manifest){
if(!Ext.manifest) {
Ext.manifest = manifest;
} else {
for(var name in manifest) {
Ext.manifest[name] = manifest[name];
}
}
})({
"paths": {
"Ext": "../src",
"Ext.AbstractManager": "../packages/sencha-core/src/AbstractManager.js",
"Ext.Ajax": "../packages/sencha-core/src/Ajax.js",
"Ext.AnimationQueue": "../packages/sencha-core/src/AnimationQueue.js",
"Ext.ComponentManager": "../packages/sencha-core/src/ComponentManager.js",
"Ext.ComponentQuery": "../packages/sencha-core/src/ComponentQuery.js",
"Ext.Evented": "../packages/sencha-core/src/Evented.js",
"Ext.Factory": "../packages/sencha-core/src/mixin/Factoryable.js",
"Ext.GlobalEvents": "../packages/sencha-core/src/GlobalEvents.js",
"Ext.JSON": "../packages/sencha-core/src/JSON.js",
"Ext.Mixin": "../packages/sencha-core/src/class/Mixin.js",
"Ext.Msg": "../src/window/MessageBox.js",
"Ext.String.format": "../packages/sencha-core/src/Template.js",
"Ext.TaskQueue": "../packages/sencha-core/src/TaskQueue.js",
"Ext.Template": "../packages/sencha-core/src/Template.js",
"Ext.Widget": "../packages/sencha-core/src/Widget.js",
"Ext.XTemplate": "../packages/sencha-core/src/XTemplate.js",
"Ext.app": "../packages/sencha-core/src/app",
"Ext.app.bindinspector": "../src/app/bindinspector",
"Ext.data": "../packages/sencha-core/src/data",
"Ext.direct": "../packages/sencha-core/src/direct",
"Ext.dom": "../packages/sencha-core/src/dom",
"Ext.dom.ButtonElement": "../src/dom/ButtonElement.js",
"Ext.dom.Layer": "../src/dom/Layer.js",
"Ext.event": "../packages/sencha-core/src/event",
"Ext.event.publisher.MouseEnterLeave": "../src/event/publisher/MouseEnterLeave.js",
"Ext.fx.Animation": "../packages/sencha-core/src/fx/Animation.js",
"Ext.fx.Runner": "../packages/sencha-core/src/fx/Runner.js",
"Ext.fx.State": "../packages/sencha-core/src/fx/State.js",
"Ext.fx.animation": "../packages/sencha-core/src/fx/animation",
"Ext.fx.easing": "../packages/sencha-core/src/fx/easing",
"Ext.fx.layout": "../packages/sencha-core/src/fx/layout",
"Ext.fx.runner": "../packages/sencha-core/src/fx/runner",
"Ext.mixin": "../packages/sencha-core/src/mixin",
"Ext.perf": "../packages/sencha-core/src/perf",
"Ext.plugin.Abstract": "../packages/sencha-core/src/plugin/Abstract.js",
"Ext.plugin.LazyItems": "../packages/sencha-core/src/plugin/LazyItems.js",
"Ext.scroll": "../packages/sencha-core/src/scroll",
"Ext.util": "../packages/sencha-core/src/util",
"Ext.util.Animate": "../src/util/Animate.js",
"Ext.util.CSS": "../src/util/CSS.js",
"Ext.util.ClickRepeater": "../src/util/ClickRepeater.js",
"Ext.util.ComponentDragger": "../src/util/ComponentDragger.js",
"Ext.util.Cookies": "../src/util/Cookies.js",
"Ext.util.ElementContainer": "../src/util/ElementContainer.js",
"Ext.util.Floating": "../src/util/Floating.js",
"Ext.util.Focusable": "../src/util/Focusable.js",
"Ext.util.FocusableContainer": "../src/util/FocusableContainer.js",
"Ext.util.Format.format": "../packages/sencha-core/src/Template.js",
"Ext.util.KeyMap": "../src/util/KeyMap.js",
"Ext.util.KeyNav": "../src/util/KeyNav.js",
"Ext.util.Memento": "../src/util/Memento.js",
"Ext.util.ProtoElement": "../src/util/ProtoElement.js",
"Ext.util.Queue": "../src/util/Queue.js",
"Ext.util.Renderable": "../src/util/Renderable.js",
"Ext.util.StoreHolder": "../src/util/StoreHolder.js"
},
"loadOrder": [
{
"path": "../packages/sencha-core/src/class/Mixin.js",
"requires": [],
"uses": [],
"idx": 0
},
{
"path": "../packages/sencha-core/src/util/DelayedTask.js",
"requires": [],
"uses": [
70
],
"idx": 1
},
{
"path": "../packages/sencha-core/src/util/Event.js",
"requires": [
1
],
"uses": [],
"idx": 2
},
{
"path": "../packages/sencha-core/src/mixin/Identifiable.js",
"requires": [],
"uses": [],
"idx": 3
},
{
"path": "../packages/sencha-core/src/mixin/Observable.js",
"requires": [
0,
2,
3
],
"uses": [
45
],
"idx": 4
},
{
"path": "../packages/sencha-core/src/util/HashMap.js",
"requires": [
4
],
"uses": [],
"idx": 5
},
{
"path": "../packages/sencha-core/src/AbstractManager.js",
"requires": [
5
],
"uses": [],
"idx": 6
},
{
"path": "../packages/sencha-core/src/data/flash/BinaryXhr.js",
"requires": [],
"uses": [
70
],
"idx": 7
},
{
"path": "../packages/sencha-core/src/data/Connection.js",
"requires": [
4,
7
],
"uses": [
43,
70
],
"idx": 8
},
{
"path": "../packages/sencha-core/src/Ajax.js",
"requires": [
8
],
"uses": [],
"idx": 9
},
{
"path": "../packages/sencha-core/src/AnimationQueue.js",
"requires": [],
"uses": [],
"idx": 10
},
{
"path": "../packages/sencha-core/src/ComponentManager.js",
"requires": [],
"uses": [
26,
43
],
"idx": 11
},
{
"path": "../packages/sencha-core/src/util/Operators.js",
"requires": [],
"uses": [],
"idx": 12
},
{
"path": "../packages/sencha-core/src/util/LruCache.js",
"requires": [
5
],
"uses": [],
"idx": 13
},
{
"path": "../packages/sencha-core/src/ComponentQuery.js",
"requires": [
11,
12,
13
],
"uses": [
73
],
"idx": 14
},
{
"path": "../packages/sencha-core/src/Evented.js",
"requires": [
4
],
"uses": [],
"idx": 15
},
{
"path": "../packages/sencha-core/src/util/Positionable.js",
"requires": [],
"uses": [
24,
43
],
"idx": 16
},
{
"path": "../packages/sencha-core/src/dom/UnderlayPool.js",
"requires": [],
"uses": [
43
],
"idx": 17
},
{
"path": "../packages/sencha-core/src/dom/Underlay.js",
"requires": [
17
],
"uses": [],
"idx": 18
},
{
"path": "../packages/sencha-core/src/dom/Shadow.js",
"requires": [
18
],
"uses": [],
"idx": 19
},
{
"path": "../packages/sencha-core/src/dom/Shim.js",
"requires": [
18
],
"uses": [],
"idx": 20
},
{
"path": "../packages/sencha-core/src/dom/ElementEvent.js",
"requires": [
2
],
"uses": [
27
],
"idx": 21
},
{
"path": "../packages/sencha-core/src/event/publisher/Publisher.js",
"requires": [],
"uses": [],
"idx": 22
},
{
"path": "../packages/sencha-core/src/util/Offset.js",
"requires": [],
"uses": [],
"idx": 23
},
{
"path": "../packages/sencha-core/src/util/Region.js",
"requires": [
23
],
"uses": [],
"idx": 24
},
{
"path": "../packages/sencha-core/src/util/Point.js",
"requires": [
24
],
"uses": [],
"idx": 25
},
{
"path": "../packages/sencha-core/src/event/Event.js",
"requires": [
25
],
"uses": [],
"idx": 26
},
{
"path": "../packages/sencha-core/src/event/publisher/Dom.js",
"requires": [
22,
26
],
"uses": [
70
],
"idx": 27
},
{
"path": "../packages/sencha-core/src/event/publisher/Gesture.js",
"requires": [
10,
25,
27
],
"uses": [
26,
43,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259
],
"idx": 28
},
{
"path": "../packages/sencha-core/src/event/publisher/Focus.js",
"requires": [
27
],
"uses": [
26,
43,
70
],
"idx": 29
},
{
"path": "../packages/sencha-core/src/mixin/Templatable.js",
"requires": [
0
],
"uses": [
43
],
"idx": 30
},
{
"path": "../packages/sencha-core/src/TaskQueue.js",
"requires": [
10
],
"uses": [],
"idx": 31
},
{
"path": "../packages/sencha-core/src/util/sizemonitor/Abstract.js",
"requires": [
30,
31
],
"uses": [],
"idx": 32
},
{
"path": "../packages/sencha-core/src/util/sizemonitor/Default.js",
"requires": [
32
],
"uses": [],
"idx": 33
},
{
"path": "../packages/sencha-core/src/util/sizemonitor/Scroll.js",
"requires": [
32
],
"uses": [
31
],
"idx": 34
},
{
"path": "../packages/sencha-core/src/util/sizemonitor/OverflowChange.js",
"requires": [
32
],
"uses": [
31
],
"idx": 35
},
{
"path": "../packages/sencha-core/src/util/SizeMonitor.js",
"requires": [
33,
34,
35
],
"uses": [],
"idx": 36
},
{
"path": "../packages/sencha-core/src/event/publisher/ElementSize.js",
"requires": [
22,
36
],
"uses": [
31
],
"idx": 37
},
{
"path": "../packages/sencha-core/src/util/paintmonitor/Abstract.js",
"requires": [],
"uses": [
43
],
"idx": 38
},
{
"path": "../packages/sencha-core/src/util/paintmonitor/CssAnimation.js",
"requires": [
38
],
"uses": [],
"idx": 39
},
{
"path": "../packages/sencha-core/src/util/paintmonitor/OverflowChange.js",
"requires": [
38
],
"uses": [],
"idx": 40
},
{
"path": "../packages/sencha-core/src/util/PaintMonitor.js",
"requires": [
39,
40
],
"uses": [],
"idx": 41
},
{
"path": "../packages/sencha-core/src/event/publisher/ElementPaint.js",
"requires": [
22,
31,
41
],
"uses": [],
"idx": 42
},
{
"path": "../packages/sencha-core/src/dom/Element.js",
"requires": [
4,
16,
19,
20,
21,
27,
28,
29,
37,
42
],
"uses": [
22,
24,
68,
69,
70,
73,
83,
220,
269,
271
],
"idx": 43
},
{
"path": "../packages/sencha-core/src/util/Filter.js",
"requires": [],
"uses": [],
"idx": 44
},
{
"path": "../packages/sencha-core/src/util/Observable.js",
"requires": [
4
],
"uses": [],
"idx": 45
},
{
"path": "../packages/sencha-core/src/util/AbstractMixedCollection.js",
"requires": [
44,
45
],
"uses": [],
"idx": 46
},
{
"path": "../packages/sencha-core/src/util/Sorter.js",
"requires": [],
"uses": [],
"idx": 47
},
{
"path": "../packages/sencha-core/src/util/Sortable.js",
"requires": [
47
],
"uses": [
49
],
"idx": 48
},
{
"path": "../packages/sencha-core/src/util/MixedCollection.js",
"requires": [
46,
48
],
"uses": [],
"idx": 49
},
{
"path": "../packages/sencha-core/src/util/TaskRunner.js",
"requires": [],
"uses": [
70
],
"idx": 50
},
{
"path": "../src/fx/target/Target.js",
"requires": [],
"uses": [],
"idx": 51
},
{
"path": "../src/fx/target/Element.js",
"requires": [
51
],
"uses": [],
"idx": 52
},
{
"path": "../src/fx/target/ElementCSS.js",
"requires": [
52
],
"uses": [],
"idx": 53
},
{
"path": "../src/fx/target/CompositeElement.js",
"requires": [
52
],
"uses": [],
"idx": 54
},
{
"path": "../src/fx/target/CompositeElementCSS.js",
"requires": [
53,
54
],
"uses": [],
"idx": 55
},
{
"path": "../src/fx/target/Sprite.js",
"requires": [
51
],
"uses": [],
"idx": 56
},
{
"path": "../src/fx/target/CompositeSprite.js",
"requires": [
56
],
"uses": [],
"idx": 57
},
{
"path": "../src/fx/target/Component.js",
"requires": [
51
],
"uses": [
70
],
"idx": 58
},
{
"path": "../src/fx/Queue.js",
"requires": [
5
],
"uses": [],
"idx": 59
},
{
"path": "../src/fx/Manager.js",
"requires": [
49,
50,
52,
53,
54,
55,
56,
57,
58,
59
],
"uses": [],
"idx": 60
},
{
"path": "../src/fx/Animator.js",
"requires": [
45,
60
],
"uses": [
66
],
"idx": 61
},
{
"path": "../src/fx/CubicBezier.js",
"requires": [],
"uses": [],
"idx": 62
},
{
"path": "../src/fx/Easing.js",
"requires": [
62
],
"uses": [],
"idx": 63
},
{
"path": "../src/fx/DrawPath.js",
"requires": [],
"uses": [],
"idx": 64
},
{
"path": "../src/fx/PropertyHandler.js",
"requires": [
64
],
"uses": [],
"idx": 65
},
{
"path": "../src/fx/Anim.js",
"requires": [
45,
60,
61,
62,
63,
65
],
"uses": [],
"idx": 66
},
{
"path": "../src/util/Animate.js",
"requires": [
60,
66
],
"uses": [],
"idx": 67
},
{
"path": "../packages/sencha-core/src/dom/Fly.js",
"requires": [
43
],
"uses": [],
"idx": 68
},
{
"path": "../packages/sencha-core/src/dom/CompositeElementLite.js",
"requires": [
68
],
"uses": [
43
],
"idx": 69
},
{
"path": "../packages/sencha-core/src/GlobalEvents.js",
"requires": [
4,
43
],
"uses": [],
"idx": 70
},
{
"path": "../packages/sencha-core/src/JSON.js",
"requires": [],
"uses": [],
"idx": 71
},
{
"path": "../packages/sencha-core/src/util/Format.js",
"requires": [],
"uses": [
73,
220
],
"idx": 72
},
{
"path": "../packages/sencha-core/src/Template.js",
"requires": [
72
],
"uses": [
220
],
"idx": 73
},
{
"path": "../packages/sencha-core/src/mixin/Inheritable.js",
"requires": [
0
],
"uses": [],
"idx": 74
},
{
"path": "../packages/sencha-core/src/mixin/Bindable.js",
"requires": [],
"uses": [
84
],
"idx": 75
},
{
"path": "../packages/sencha-core/src/Widget.js",
"requires": [
15,
43,
74,
75
],
"uses": [
11,
14
],
"idx": 76
},
{
"path": "../packages/sencha-core/src/util/XTemplateParser.js",
"requires": [],
"uses": [],
"idx": 77
},
{
"path": "../packages/sencha-core/src/util/XTemplateCompiler.js",
"requires": [
77
],
"uses": [],
"idx": 78
},
{
"path": "../packages/sencha-core/src/XTemplate.js",
"requires": [
73,
78
],
"uses": [],
"idx": 79
},
{
"path": "../packages/sencha-core/src/app/EventDomain.js",
"requires": [
2
],
"uses": [],
"idx": 80
},
{
"path": "../packages/sencha-core/src/app/domain/Component.js",
"requires": [
76,
80
],
"uses": [],
"idx": 81
},
{
"path": "../src/util/ProtoElement.js",
"requires": [],
"uses": [
43,
220
],
"idx": 82
},
{
"path": "../packages/sencha-core/src/dom/CompositeElement.js",
"requires": [
69
],
"uses": [],
"idx": 83
},
{
"path": "../packages/sencha-core/src/mixin/Factoryable.js",
"requires": [],
"uses": [],
"idx": 84
},
{
"path": "../packages/sencha-core/src/scroll/Scroller.js",
"requires": [
15,
84
],
"uses": [
70,
100,
101
],
"idx": 85
},
{
"path": "../packages/sencha-core/src/fx/easing/Abstract.js",
"requires": [],
"uses": [],
"idx": 86
},
{
"path": "../packages/sencha-core/src/fx/easing/Momentum.js",
"requires": [
86
],
"uses": [],
"idx": 87
},
{
"path": "../packages/sencha-core/src/fx/easing/Bounce.js",
"requires": [
86
],
"uses": [],
"idx": 88
},
{
"path": "../packages/sencha-core/src/fx/easing/BoundMomentum.js",
"requires": [
86,
87,
88
],
"uses": [],
"idx": 89
},
{
"path": "../packages/sencha-core/src/fx/easing/Linear.js",
"requires": [
86
],
"uses": [],
"idx": 90
},
{
"path": "../packages/sencha-core/src/fx/easing/EaseOut.js",
"requires": [
90
],
"uses": [],
"idx": 91
},
{
"path": "../packages/sencha-core/src/util/translatable/Abstract.js",
"requires": [
15,
90
],
"uses": [
10
],
"idx": 92
},
{
"path": "../packages/sencha-core/src/util/translatable/Dom.js",
"requires": [
92
],
"uses": [],
"idx": 93
},
{
"path": "../packages/sencha-core/src/util/translatable/CssTransform.js",
"requires": [
93
],
"uses": [],
"idx": 94
},
{
"path": "../packages/sencha-core/src/util/translatable/ScrollPosition.js",
"requires": [
93
],
"uses": [],
"idx": 95
},
{
"path": "../packages/sencha-core/src/util/translatable/ScrollParent.js",
"requires": [
93
],
"uses": [],
"idx": 96
},
{
"path": "../packages/sencha-core/src/util/translatable/CssPosition.js",
"requires": [
93
],
"uses": [],
"idx": 97
},
{
"path": "../packages/sencha-core/src/util/Translatable.js",
"requires": [
94,
95,
96,
97
],
"uses": [],
"idx": 98
},
{
"path": "../packages/sencha-core/src/scroll/Indicator.js",
"requires": [
76
],
"uses": [],
"idx": 99
},
{
"path": "../packages/sencha-core/src/scroll/TouchScroller.js",
"requires": [
70,
85,
89,
91,
98,
99
],
"uses": [],
"idx": 100
},
{
"path": "../packages/sencha-core/src/scroll/DomScroller.js",
"requires": [
85
],
"uses": [],
"idx": 101
},
{
"path": "../src/util/Floating.js",
"requires": [],
"uses": [
11,
70,
315
],
"idx": 102
},
{
"path": "../src/util/ElementContainer.js",
"requires": [],
"uses": [],
"idx": 103
},
{
"path": "../src/util/Renderable.js",
"requires": [
43
],
"uses": [
79,
109,
220
],
"idx": 104
},
{
"path": "../src/state/Provider.js",
"requires": [
45
],
"uses": [],
"idx": 105
},
{
"path": "../src/state/Manager.js",
"requires": [
105
],
"uses": [],
"idx": 106
},
{
"path": "../src/state/Stateful.js",
"requires": [
106
],
"uses": [
50
],
"idx": 107
},
{
"path": "../src/util/Focusable.js",
"requires": [
1
],
"uses": [
14,
43,
109
],
"idx": 108
},
{
"path": "../src/Component.js",
"requires": [
11,
14,
16,
45,
67,
70,
74,
75,
82,
83,
85,
100,
101,
102,
103,
104,
107,
108
],
"uses": [
1,
43,
60,
79,
185,
220,
310,
311,
312,
315,
323,
325,
418,
555,
566,
570
],
"idx": 109
},
{
"path": "../src/layout/container/border/Region.js",
"requires": [],
"uses": [],
"idx": 110
},
{
"path": "../packages/sencha-core/src/app/EventBus.js",
"requires": [
81
],
"uses": [
80
],
"idx": 111
},
{
"path": "../packages/sencha-core/src/app/domain/Global.js",
"requires": [
70,
80
],
"uses": [],
"idx": 112
},
{
"path": "../packages/sencha-core/src/app/BaseController.js",
"requires": [
4,
111,
112
],
"uses": [
169,
170,
199
],
"idx": 113
},
{
"path": "../packages/sencha-core/src/app/Util.js",
"requires": [],
"uses": [],
"idx": 114
},
{
"path": "../packages/sencha-core/src/util/CollectionKey.js",
"requires": [
3
],
"uses": [],
"idx": 115
},
{
"path": "../packages/sencha-core/src/util/Grouper.js",
"requires": [
47
],
"uses": [],
"idx": 116
},
{
"path": "../packages/sencha-core/src/util/Collection.js",
"requires": [
4,
44,
47,
115,
116
],
"uses": [
159,
160,
161
],
"idx": 117
},
{
"path": "../packages/sencha-core/src/util/ObjectTemplate.js",
"requires": [
79
],
"uses": [],
"idx": 118
},
{
"path": "../packages/sencha-core/src/data/schema/Role.js",
"requires": [],
"uses": [
84
],
"idx": 119
},
{
"path": "../packages/sencha-core/src/data/schema/Association.js",
"requires": [
119
],
"uses": [],
"idx": 120
},
{
"path": "../packages/sencha-core/src/data/schema/OneToOne.js",
"requires": [
120
],
"uses": [],
"idx": 121
},
{
"path": "../packages/sencha-core/src/data/schema/ManyToOne.js",
"requires": [
120
],
"uses": [],
"idx": 122
},
{
"path": "../packages/sencha-core/src/data/schema/ManyToMany.js",
"requires": [
120
],
"uses": [],
"idx": 123
},
{
"path": "../packages/sencha-core/src/util/Inflector.js",
"requires": [],
"uses": [],
"idx": 124
},
{
"path": "../packages/sencha-core/src/data/schema/Namer.js",
"requires": [
84,
124
],
"uses": [],
"idx": 125
},
{
"path": "../packages/sencha-core/src/data/schema/Schema.js",
"requires": [
84,
118,
121,
122,
123,
125
],
"uses": [],
"idx": 126
},
{
"path": "../packages/sencha-core/src/data/AbstractStore.js",
"requires": [
4,
44,
84,
117,
126
],
"uses": [
165
],
"idx": 127
},
{
"path": "../packages/sencha-core/src/data/Error.js",
"requires": [],
"uses": [],
"idx": 128
},
{
"path": "../packages/sencha-core/src/data/ErrorCollection.js",
"requires": [
49,
128
],
"uses": [
137
],
"idx": 129
},
{
"path": "../packages/sencha-core/src/data/operation/Operation.js",
"requires": [],
"uses": [],
"idx": 130
},
{
"path": "../packages/sencha-core/src/data/operation/Create.js",
"requires": [
130
],
"uses": [],
"idx": 131
},
{
"path": "../packages/sencha-core/src/data/operation/Destroy.js",
"requires": [
130
],
"uses": [],
"idx": 132
},
{
"path": "../packages/sencha-core/src/data/operation/Read.js",
"requires": [
130
],
"uses": [],
"idx": 133
},
{
"path": "../packages/sencha-core/src/data/operation/Update.js",
"requires": [
130
],
"uses": [],
"idx": 134
},
{
"path": "../packages/sencha-core/src/data/SortTypes.js",
"requires": [],
"uses": [],
"idx": 135
},
{
"path": "../packages/sencha-core/src/data/validator/Validator.js",
"requires": [
84
],
"uses": [],
"idx": 136
},
{
"path": "../packages/sencha-core/src/data/field/Field.js",
"requires": [
84,
135,
136
],
"uses": [],
"idx": 137
},
{
"path": "../packages/sencha-core/src/data/field/Boolean.js",
"requires": [
137
],
"uses": [],
"idx": 138
},
{
"path": "../packages/sencha-core/src/data/field/Date.js",
"requires": [
137
],
"uses": [],
"idx": 139
},
{
"path": "../packages/sencha-core/src/data/field/Integer.js",
"requires": [
137
],
"uses": [],
"idx": 140
},
{
"path": "../packages/sencha-core/src/data/field/Number.js",
"requires": [
140
],
"uses": [],
"idx": 141
},
{
"path": "../packages/sencha-core/src/data/field/String.js",
"requires": [
137
],
"uses": [],
"idx": 142
},
{
"path": "../packages/sencha-core/src/data/identifier/Generator.js",
"requires": [
84
],
"uses": [],
"idx": 143
},
{
"path": "../packages/sencha-core/src/data/identifier/Sequential.js",
"requires": [
143
],
"uses": [],
"idx": 144
},
{
"path": "../packages/sencha-core/src/data/Model.js",
"requires": [
126,
129,
130,
131,
132,
133,
134,
136,
137,
138,
139,
140,
141,
142,
143,
144
],
"uses": [
84,
147,
219
],
"idx": 145
},
{
"path": "../packages/sencha-core/src/data/ResultSet.js",
"requires": [],
"uses": [],
"idx": 146
},
{
"path": "../packages/sencha-core/src/data/reader/Reader.js",
"requires": [
4,
13,
79,
84,
146
],
"uses": [
126
],
"idx": 147
},
{
"path": "../packages/sencha-core/src/data/writer/Writer.js",
"requires": [
84
],
"uses": [],
"idx": 148
},
{
"path": "../packages/sencha-core/src/data/proxy/Proxy.js",
"requires": [
4,
84,
126,
147,
148
],
"uses": [
130,
131,
132,
133,
134,
145,
178
],
"idx": 149
},
{
"path": "../packages/sencha-core/src/data/proxy/Client.js",
"requires": [
149
],
"uses": [],
"idx": 150
},
{
"path": "../packages/sencha-core/src/data/proxy/Memory.js",
"requires": [
150
],
"uses": [
44,
48
],
"idx": 151
},
{
"path": "../packages/sencha-core/src/data/ProxyStore.js",
"requires": [
127,
130,
131,
132,
133,
134,
145,
149,
151
],
"uses": [
1,
126
],
"idx": 152
},
{
"path": "../packages/sencha-core/src/data/LocalStore.js",
"requires": [
0
],
"uses": [
117
],
"idx": 153
},
{
"path": "../packages/sencha-core/src/data/proxy/Server.js",
"requires": [
149
],
"uses": [
73,
214
],
"idx": 154
},
{
"path": "../packages/sencha-core/src/data/proxy/Ajax.js",
"requires": [
9,
154
],
"uses": [],
"idx": 155
},
{
"path": "../packages/sencha-core/src/data/reader/Json.js",
"requires": [
71,
147
],
"uses": [],
"idx": 156
},
{
"path": "../packages/sencha-core/src/data/writer/Json.js",
"requires": [
148
],
"uses": [],
"idx": 157
},
{
"path": "../packages/sencha-core/src/util/Group.js",
"requires": [
117
],
"uses": [],
"idx": 158
},
{
"path": "../packages/sencha-core/src/util/SorterCollection.js",
"requires": [
47,
117
],
"uses": [],
"idx": 159
},
{
"path": "../packages/sencha-core/src/util/FilterCollection.js",
"requires": [
44,
117
],
"uses": [],
"idx": 160
},
{
"path": "../packages/sencha-core/src/util/GroupCollection.js",
"requires": [
117,
158,
159,
160
],
"uses": [],
"idx": 161
},
{
"path": "../packages/sencha-core/src/data/Store.js",
"requires": [
1,
145,
152,
153,
155,
156,
157,
161
],
"uses": [
116,
165,
204
],
"idx": 162
},
{
"path": "../packages/sencha-core/src/data/reader/Array.js",
"requires": [
156
],
"uses": [],
"idx": 163
},
{
"path": "../packages/sencha-core/src/data/ArrayStore.js",
"requires": [
151,
162,
163
],
"uses": [],
"idx": 164
},
{
"path": "../packages/sencha-core/src/data/StoreManager.js",
"requires": [
49,
164
],
"uses": [
84,
151,
157,
162,
163
],
"idx": 165
},
{
"path": "../packages/sencha-core/src/app/domain/Store.js",
"requires": [
80,
127
],
"uses": [],
"idx": 166
},
{
"path": "../packages/sencha-core/src/app/route/Queue.js",
"requires": [],
"uses": [
49
],
"idx": 167
},
{
"path": "../packages/sencha-core/src/app/route/Route.js",
"requires": [],
"uses": [
73
],
"idx": 168
},
{
"path": "../packages/sencha-core/src/util/History.js",
"requires": [
45
],
"uses": [
306
],
"idx": 169
},
{
"path": "../packages/sencha-core/src/app/route/Router.js",
"requires": [
167,
168,
169
],
"uses": [],
"idx": 170
},
{
"path": "../packages/sencha-core/src/app/Controller.js",
"requires": [
11,
81,
113,
114,
165,
166,
170
],
"uses": [
14,
126
],
"idx": 171
},
{
"path": "../packages/sencha-core/src/app/Application.js",
"requires": [
49,
169,
171
],
"uses": [
170
],
"idx": 172
},
{
"path": "../packages/sencha-core/src/app/Profile.js",
"requires": [
4
],
"uses": [
171
],
"idx": 173
},
{
"path": "../packages/sencha-core/src/app/domain/View.js",
"requires": [
80
],
"uses": [],
"idx": 174
},
{
"path": "../packages/sencha-core/src/app/ViewController.js",
"requires": [
84,
113,
174
],
"uses": [],
"idx": 175
},
{
"path": "../packages/sencha-core/src/util/Bag.js",
"requires": [],
"uses": [],
"idx": 176
},
{
"path": "../packages/sencha-core/src/util/Scheduler.js",
"requires": [
4,
176
],
"uses": [
70
],
"idx": 177
},
{
"path": "../packages/sencha-core/src/data/Batch.js",
"requires": [
4
],
"uses": [],
"idx": 178
},
{
"path": "../packages/sencha-core/src/data/matrix/Slice.js",
"requires": [],
"uses": [],
"idx": 179
},
{
"path": "../packages/sencha-core/src/data/matrix/Side.js",
"requires": [
179
],
"uses": [],
"idx": 180
},
{
"path": "../packages/sencha-core/src/data/matrix/Matrix.js",
"requires": [
180
],
"uses": [],
"idx": 181
},
{
"path": "../packages/sencha-core/src/data/session/ChangesVisitor.js",
"requires": [],
"uses": [],
"idx": 182
},
{
"path": "../packages/sencha-core/src/data/session/ChildChangesVisitor.js",
"requires": [
182
],
"uses": [],
"idx": 183
},
{
"path": "../packages/sencha-core/src/data/session/BatchVisitor.js",
"requires": [],
"uses": [
178
],
"idx": 184
},
{
"path": "../packages/sencha-core/src/data/Session.js",
"requires": [
126,
178,
181,
182,
183,
184
],
"uses": [],
"idx": 185
},
{
"path": "../packages/sencha-core/src/util/Schedulable.js",
"requires": [],
"uses": [],
"idx": 186
},
{
"path": "../packages/sencha-core/src/app/bind/BaseBinding.js",
"requires": [
186
],
"uses": [],
"idx": 187
},
{
"path": "../packages/sencha-core/src/app/bind/Binding.js",
"requires": [
187
],
"uses": [],
"idx": 188
},
{
"path": "../packages/sencha-core/src/app/bind/AbstractStub.js",
"requires": [
186,
188
],
"uses": [],
"idx": 189
},
{
"path": "../packages/sencha-core/src/app/bind/Stub.js",
"requires": [
188,
189
],
"uses": [
194
],
"idx": 190
},
{
"path": "../packages/sencha-core/src/app/bind/LinkStub.js",
"requires": [
190
],
"uses": [],
"idx": 191
},
{
"path": "../packages/sencha-core/src/app/bind/RootStub.js",
"requires": [
189,
190,
191
],
"uses": [],
"idx": 192
},
{
"path": "../packages/sencha-core/src/app/bind/Multi.js",
"requires": [
187
],
"uses": [],
"idx": 193
},
{
"path": "../packages/sencha-core/src/app/bind/Formula.js",
"requires": [
13,
186
],
"uses": [],
"idx": 194
},
{
"path": "../packages/sencha-core/src/app/bind/Template.js",
"requires": [
72
],
"uses": [],
"idx": 195
},
{
"path": "../packages/sencha-core/src/app/bind/TemplateBinding.js",
"requires": [
187,
193,
195
],
"uses": [],
"idx": 196
},
{
"path": "../packages/sencha-core/src/data/ChainedStore.js",
"requires": [
127,
153
],
"uses": [
73,
165
],
"idx": 197
},
{
"path": "../packages/sencha-core/src/app/ViewModel.js",
"requires": [
3,
84,
177,
185,
191,
192,
193,
194,
196,
197
],
"uses": [
1,
126
],
"idx": 198
},
{
"path": "../packages/sencha-core/src/app/domain/Controller.js",
"requires": [
80,
171
],
"uses": [
113
],
"idx": 199
},
{
"path": "../packages/sencha-core/src/direct/Manager.js",
"requires": [
4,
49
],
"uses": [
73
],
"idx": 200
},
{
"path": "../packages/sencha-core/src/direct/Provider.js",
"requires": [
45,
200
],
"uses": [],
"idx": 201
},
{
"path": "../packages/sencha-core/src/app/domain/Direct.js",
"requires": [
80,
201
],
"uses": [],
"idx": 202
},
{
"path": "../packages/sencha-core/src/data/PageMap.js",
"requires": [
13
],
"uses": [],
"idx": 203
},
{
"path": "../packages/sencha-core/src/data/BufferedStore.js",
"requires": [
44,
47,
116,
152,
203
],
"uses": [
159,
160,
161
],
"idx": 204
},
{
"path": "../packages/sencha-core/src/data/proxy/Direct.js",
"requires": [
154,
200
],
"uses": [],
"idx": 205
},
{
"path": "../packages/sencha-core/src/data/DirectStore.js",
"requires": [
162,
205
],
"uses": [],
"idx": 206
},
{
"path": "../packages/sencha-core/src/data/JsonP.js",
"requires": [],
"uses": [
70
],
"idx": 207
},
{
"path": "../packages/sencha-core/src/data/proxy/JsonP.js",
"requires": [
154,
207
],
"uses": [],
"idx": 208
},
{
"path": "../packages/sencha-core/src/data/JsonPStore.js",
"requires": [
156,
162,
208
],
"uses": [],
"idx": 209
},
{
"path": "../packages/sencha-core/src/data/JsonStore.js",
"requires": [
155,
156,
157,
162
],
"uses": [],
"idx": 210
},
{
"path": "../packages/sencha-core/src/data/ModelManager.js",
"requires": [
126
],
"uses": [
145
],
"idx": 211
},
{
"path": "../packages/sencha-core/src/data/NodeInterface.js",
"requires": [
4,
138,
140,
142,
157
],
"uses": [
126
],
"idx": 212
},
{
"path": "../packages/sencha-core/src/data/NodeStore.js",
"requires": [
162,
212
],
"uses": [
145
],
"idx": 213
},
{
"path": "../packages/sencha-core/src/data/Request.js",
"requires": [],
"uses": [],
"idx": 214
},
{
"path": "../packages/sencha-core/src/mixin/Queryable.js",
"requires": [],
"uses": [
14
],
"idx": 215
},
{
"path": "../packages/sencha-core/src/data/TreeModel.js",
"requires": [
145,
212,
215
],
"uses": [],
"idx": 216
},
{
"path": "../packages/sencha-core/src/data/TreeStore.js",
"requires": [
47,
212,
213,
216
],
"uses": [],
"idx": 217
},
{
"path": "../packages/sencha-core/src/data/Types.js",
"requires": [
135
],
"uses": [],
"idx": 218
},
{
"path": "../packages/sencha-core/src/data/Validation.js",
"requires": [
145
],
"uses": [],
"idx": 219
},
{
"path": "../packages/sencha-core/src/dom/Helper.js",
"requires": [],
"uses": [
73
],
"idx": 220
},
{
"path": "../packages/sencha-core/src/dom/Query.js",
"requires": [
12,
220
],
"uses": [
13
],
"idx": 221
},
{
"path": "../packages/sencha-core/src/data/reader/Xml.js",
"requires": [
147,
221
],
"uses": [],
"idx": 222
},
{
"path": "../packages/sencha-core/src/data/writer/Xml.js",
"requires": [
148
],
"uses": [],
"idx": 223
},
{
"path": "../packages/sencha-core/src/data/XmlStore.js",
"requires": [
155,
162,
222,
223
],
"uses": [],
"idx": 224
},
{
"path": "../packages/sencha-core/src/data/identifier/Negative.js",
"requires": [
144
],
"uses": [],
"idx": 225
},
{
"path": "../packages/sencha-core/src/data/identifier/Uuid.js",
"requires": [
143
],
"uses": [],
"idx": 226
},
{
"path": "../packages/sencha-core/src/data/proxy/WebStorage.js",
"requires": [
144,
150
],
"uses": [
47,
73,
146
],
"idx": 227
},
{
"path": "../packages/sencha-core/src/data/proxy/LocalStorage.js",
"requires": [
227
],
"uses": [],
"idx": 228
},
{
"path": "../packages/sencha-core/src/data/proxy/Rest.js",
"requires": [
155
],
"uses": [],
"idx": 229
},
{
"path": "../packages/sencha-core/src/data/proxy/SessionStorage.js",
"requires": [
227
],
"uses": [],
"idx": 230
},
{
"path": "../packages/sencha-core/src/data/validator/Bound.js",
"requires": [
136
],
"uses": [
73
],
"idx": 231
},
{
"path": "../packages/sencha-core/src/data/validator/Format.js",
"requires": [
136
],
"uses": [],
"idx": 232
},
{
"path": "../packages/sencha-core/src/data/validator/Email.js",
"requires": [
232
],
"uses": [],
"idx": 233
},
{
"path": "../packages/sencha-core/src/data/validator/List.js",
"requires": [
136
],
"uses": [],
"idx": 234
},
{
"path": "../packages/sencha-core/src/data/validator/Exclusion.js",
"requires": [
234
],
"uses": [],
"idx": 235
},
{
"path": "../packages/sencha-core/src/data/validator/Inclusion.js",
"requires": [
234
],
"uses": [],
"idx": 236
},
{
"path": "../packages/sencha-core/src/data/validator/Length.js",
"requires": [
231
],
"uses": [],
"idx": 237
},
{
"path": "../packages/sencha-core/src/data/validator/Presence.js",
"requires": [
136
],
"uses": [],
"idx": 238
},
{
"path": "../packages/sencha-core/src/data/validator/Range.js",
"requires": [
231
],
"uses": [],
"idx": 239
},
{
"path": "../packages/sencha-core/src/direct/Event.js",
"requires": [],
"uses": [],
"idx": 240
},
{
"path": "../packages/sencha-core/src/direct/RemotingEvent.js",
"requires": [
240
],
"uses": [
200
],
"idx": 241
},
{
"path": "../packages/sencha-core/src/direct/ExceptionEvent.js",
"requires": [
241
],
"uses": [],
"idx": 242
},
{
"path": "../packages/sencha-core/src/direct/JsonProvider.js",
"requires": [
201
],
"uses": [
200,
242
],
"idx": 243
},
{
"path": "../packages/sencha-core/src/direct/PollingProvider.js",
"requires": [
9,
50,
242,
243
],
"uses": [
200,
306
],
"idx": 244
},
{
"path": "../packages/sencha-core/src/direct/RemotingMethod.js",
"requires": [],
"uses": [],
"idx": 245
},
{
"path": "../packages/sencha-core/src/direct/Transaction.js",
"requires": [],
"uses": [],
"idx": 246
},
{
"path": "../packages/sencha-core/src/direct/RemotingProvider.js",
"requires": [
1,
49,
200,
243,
245,
246
],
"uses": [
9,
71,
242
],
"idx": 247
},
{
"path": "../packages/sencha-core/src/dom/GarbageCollector.js",
"requires": [],
"uses": [
43
],
"idx": 248
},
{
"path": "../packages/sencha-core/src/event/gesture/Recognizer.js",
"requires": [
3,
28
],
"uses": [],
"idx": 249
},
{
"path": "../packages/sencha-core/src/event/gesture/SingleTouch.js",
"requires": [
249
],
"uses": [],
"idx": 250
},
{
"path": "../packages/sencha-core/src/event/gesture/DoubleTap.js",
"requires": [
250
],
"uses": [],
"idx": 251
},
{
"path": "../packages/sencha-core/src/event/gesture/Drag.js",
"requires": [
250
],
"uses": [],
"idx": 252
},
{
"path": "../packages/sencha-core/src/event/gesture/Swipe.js",
"requires": [
250
],
"uses": [],
"idx": 253
},
{
"path": "../packages/sencha-core/src/event/gesture/EdgeSwipe.js",
"requires": [
253
],
"uses": [
43
],
"idx": 254
},
{
"path": "../packages/sencha-core/src/event/gesture/LongPress.js",
"requires": [
250
],
"uses": [],
"idx": 255
},
{
"path": "../packages/sencha-core/src/event/gesture/MultiTouch.js",
"requires": [
249
],
"uses": [],
"idx": 256
},
{
"path": "../packages/sencha-core/src/event/gesture/Pinch.js",
"requires": [
256
],
"uses": [],
"idx": 257
},
{
"path": "../packages/sencha-core/src/event/gesture/Rotate.js",
"requires": [
256
],
"uses": [],
"idx": 258
},
{
"path": "../packages/sencha-core/src/event/gesture/Tap.js",
"requires": [
250
],
"uses": [],
"idx": 259
},
{
"path": "../packages/sencha-core/src/fx/State.js",
"requires": [],
"uses": [],
"idx": 260
},
{
"path": "../packages/sencha-core/src/fx/animation/Abstract.js",
"requires": [
15,
260
],
"uses": [],
"idx": 261
},
{
"path": "../packages/sencha-core/src/fx/animation/Slide.js",
"requires": [
261
],
"uses": [],
"idx": 262
},
{
"path": "../packages/sencha-core/src/fx/animation/SlideOut.js",
"requires": [
262
],
"uses": [],
"idx": 263
},
{
"path": "../packages/sencha-core/src/fx/animation/Fade.js",
"requires": [
261
],
"uses": [],
"idx": 264
},
{
"path": "../packages/sencha-core/src/fx/animation/FadeOut.js",
"requires": [
264
],
"uses": [],
"idx": 265
},
{
"path": "../packages/sencha-core/src/fx/animation/Flip.js",
"requires": [
261
],
"uses": [],
"idx": 266
},
{
"path": "../packages/sencha-core/src/fx/animation/Pop.js",
"requires": [
261
],
"uses": [],
"idx": 267
},
{
"path": "../packages/sencha-core/src/fx/animation/PopOut.js",
"requires": [
267
],
"uses": [],
"idx": 268
},
{
"path": "../packages/sencha-core/src/fx/Animation.js",
"requires": [
262,
263,
264,
265,
266,
267,
268
],
"uses": [
261
],
"idx": 269
},
{
"path": "../packages/sencha-core/src/fx/runner/Css.js",
"requires": [
15,
269
],
"uses": [],
"idx": 270
},
{
"path": "../packages/sencha-core/src/fx/runner/CssTransition.js",
"requires": [
10,
270
],
"uses": [
269
],
"idx": 271
},
{
"path": "../packages/sencha-core/src/fx/Runner.js",
"requires": [
271
],
"uses": [],
"idx": 272
},
{
"path": "../packages/sencha-core/src/fx/animation/Cube.js",
"requires": [
261
],
"uses": [],
"idx": 273
},
{
"path": "../packages/sencha-core/src/fx/animation/Wipe.js",
"requires": [
269
],
"uses": [],
"idx": 274
},
{
"path": "../packages/sencha-core/src/fx/animation/WipeOut.js",
"requires": [
274
],
"uses": [],
"idx": 275
},
{
"path": "../packages/sencha-core/src/fx/easing/EaseIn.js",
"requires": [
90
],
"uses": [],
"idx": 276
},
{
"path": "../packages/sencha-core/src/fx/easing/Easing.js",
"requires": [
90
],
"uses": [],
"idx": 277
},
{
"path": "../packages/sencha-core/src/fx/layout/card/Abstract.js",
"requires": [
15
],
"uses": [],
"idx": 278
},
{
"path": "../packages/sencha-core/src/fx/layout/card/Style.js",
"requires": [
269,
278
],
"uses": [
271
],
"idx": 279
},
{
"path": "../packages/sencha-core/src/fx/layout/card/Slide.js",
"requires": [
279
],
"uses": [],
"idx": 280
},
{
"path": "../packages/sencha-core/src/fx/layout/card/Cover.js",
"requires": [
279
],
"uses": [],
"idx": 281
},
{
"path": "../packages/sencha-core/src/fx/layout/card/Reveal.js",
"requires": [
279
],
"uses": [],
"idx": 282
},
{
"path": "../packages/sencha-core/src/fx/layout/card/Fade.js",
"requires": [
279
],
"uses": [],
"idx": 283
},
{
"path": "../packages/sencha-core/src/fx/layout/card/Flip.js",
"requires": [
279
],
"uses": [],
"idx": 284
},
{
"path": "../packages/sencha-core/src/fx/layout/card/Pop.js",
"requires": [
279
],
"uses": [],
"idx": 285
},
{
"path": "../packages/sencha-core/src/fx/layout/card/Scroll.js",
"requires": [
90,
278
],
"uses": [
10
],
"idx": 286
},
{
"path": "../packages/sencha-core/src/fx/layout/Card.js",
"requires": [
280,
281,
282,
283,
284,
285,
286
],
"uses": [
278
],
"idx": 287
},
{
"path": "../packages/sencha-core/src/fx/layout/card/Cube.js",
"requires": [
279
],
"uses": [],
"idx": 288
},
{
"path": "../packages/sencha-core/src/fx/layout/card/ScrollCover.js",
"requires": [
286
],
"uses": [],
"idx": 289
},
{
"path": "../packages/sencha-core/src/fx/layout/card/ScrollReveal.js",
"requires": [
286
],
"uses": [],
"idx": 290
},
{
"path": "../packages/sencha-core/src/fx/runner/CssAnimation.js",
"requires": [
270
],
"uses": [
269
],
"idx": 291
},
{
"path": "../packages/sencha-core/src/mixin/Hookable.js",
"requires": [
0
],
"uses": [],
"idx": 292
},
{
"path": "../packages/sencha-core/src/mixin/Mashup.js",
"requires": [
0
],
"uses": [],
"idx": 293
},
{
"path": "../packages/sencha-core/src/mixin/Responsive.js",
"requires": [
0,
70
],
"uses": [
43
],
"idx": 294
},
{
"path": "../packages/sencha-core/src/mixin/Selectable.js",
"requires": [
0
],
"uses": [
49
],
"idx": 295
},
{
"path": "../packages/sencha-core/src/mixin/Traversable.js",
"requires": [
0
],
"uses": [],
"idx": 296
},
{
"path": "../packages/sencha-core/src/perf/Accumulator.js",
"requires": [
79
],
"uses": [],
"idx": 297
},
{
"path": "../packages/sencha-core/src/perf/Monitor.js",
"requires": [
297
],
"uses": [],
"idx": 298
},
{
"path": "../packages/sencha-core/src/plugin/Abstract.js",
"requires": [],
"uses": [],
"idx": 299
},
{
"path": "../packages/sencha-core/src/plugin/LazyItems.js",
"requires": [
299
],
"uses": [],
"idx": 300
},
{
"path": "../packages/sencha-core/src/util/Base64.js",
"requires": [],
"uses": [],
"idx": 301
},
{
"path": "../packages/sencha-core/src/util/DelimitedValue.js",
"requires": [],
"uses": [],
"idx": 302
},
{
"path": "../packages/sencha-core/src/util/CSV.js",
"requires": [
302
],
"uses": [],
"idx": 303
},
{
"path": "../packages/sencha-core/src/util/LocalStorage.js",
"requires": [],
"uses": [],
"idx": 304
},
{
"path": "../packages/sencha-core/src/util/TSV.js",
"requires": [
302
],
"uses": [],
"idx": 305
},
{
"path": "../packages/sencha-core/src/util/TaskManager.js",
"requires": [
50
],
"uses": [],
"idx": 306
},
{
"path": "../packages/sencha-core/src/util/TextMetrics.js",
"requires": [
43
],
"uses": [],
"idx": 307
},
{
"path": "../src/Action.js",
"requires": [],
"uses": [],
"idx": 308
},
{
"path": "../src/ElementLoader.js",
"requires": [
45
],
"uses": [
8,
9
],
"idx": 309
},
{
"path": "../src/ComponentLoader.js",
"requires": [
309
],
"uses": [],
"idx": 310
},
{
"path": "../src/layout/SizeModel.js",
"requires": [],
"uses": [],
"idx": 311
},
{
"path": "../src/layout/Layout.js",
"requires": [
79,
84,
311
],
"uses": [
555
],
"idx": 312
},
{
"path": "../src/layout/container/Container.js",
"requires": [
79,
103,
312
],
"uses": [
220
],
"idx": 313
},
{
"path": "../src/layout/container/Auto.js",
"requires": [
313
],
"uses": [
79
],
"idx": 314
},
{
"path": "../src/ZIndexManager.js",
"requires": [
70,
159,
160
],
"uses": [
43,
117
],
"idx": 315
},
{
"path": "../src/container/Container.js",
"requires": [
49,
109,
215,
314,
315
],
"uses": [
11,
14,
46,
84
],
"idx": 316
},
{
"path": "../src/layout/container/Editor.js",
"requires": [
313
],
"uses": [],
"idx": 317
},
{
"path": "../src/Editor.js",
"requires": [
316,
317
],
"uses": [
1,
11
],
"idx": 318
},
{
"path": "../src/EventManager.js",
"requires": [],
"uses": [
70
],
"idx": 319
},
{
"path": "../src/FocusManager.js",
"requires": [],
"uses": [],
"idx": 320
},
{
"path": "../src/Img.js",
"requires": [
109
],
"uses": [],
"idx": 321
},
{
"path": "../src/util/StoreHolder.js",
"requires": [
165
],
"uses": [],
"idx": 322
},
{
"path": "../src/LoadMask.js",
"requires": [
109,
322
],
"uses": [
70,
165
],
"idx": 323
},
{
"path": "../src/layout/component/Component.js",
"requires": [
312
],
"uses": [],
"idx": 324
},
{
"path": "../src/layout/component/Auto.js",
"requires": [
324
],
"uses": [],
"idx": 325
},
{
"path": "../src/layout/component/ProgressBar.js",
"requires": [
325
],
"uses": [],
"idx": 326
},
{
"path": "../src/ProgressBar.js",
"requires": [
73,
83,
109,
306,
326
],
"uses": [
66,
79
],
"idx": 327
},
{
"path": "../src/ProgressBarWidget.js",
"requires": [
76,
327
],
"uses": [
79
],
"idx": 328
},
{
"path": "../src/panel/Bar.js",
"requires": [
316
],
"uses": [],
"idx": 329
},
{
"path": "../src/panel/Title.js",
"requires": [
109
],
"uses": [],
"idx": 330
},
{
"path": "../src/panel/Tool.js",
"requires": [
109
],
"uses": [
423
],
"idx": 331
},
{
"path": "../src/panel/Header.js",
"requires": [
185,
325,
329,
330,
331
],
"uses": [
11
],
"idx": 332
},
{
"path": "../src/layout/container/boxOverflow/None.js",
"requires": [
84
],
"uses": [],
"idx": 333
},
{
"path": "../src/util/ClickRepeater.js",
"requires": [
45
],
"uses": [],
"idx": 334
},
{
"path": "../src/layout/container/boxOverflow/Scroller.js",
"requires": [
4,
43,
333,
334
],
"uses": [],
"idx": 335
},
{
"path": "../src/dd/DragDropManager.js",
"requires": [
24
],
"uses": [
385,
423
],
"idx": 336
},
{
"path": "../src/resizer/Splitter.js",
"requires": [
79,
109
],
"uses": [
438
],
"idx": 337
},
{
"path": "../src/layout/container/Box.js",
"requires": [
72,
313,
333,
335,
336,
337
],
"uses": [
84,
185,
311,
325
],
"idx": 338
},
{
"path": "../src/layout/container/HBox.js",
"requires": [
338
],
"uses": [],
"idx": 339
},
{
"path": "../src/layout/container/VBox.js",
"requires": [
338
],
"uses": [],
"idx": 340
},
{
"path": "../src/util/KeyMap.js",
"requires": [],
"uses": [],
"idx": 341
},
{
"path": "../src/util/KeyNav.js",
"requires": [
341
],
"uses": [],
"idx": 342
},
{
"path": "../src/util/FocusableContainer.js",
"requires": [
0,
342
],
"uses": [
109
],
"idx": 343
},
{
"path": "../src/toolbar/Toolbar.js",
"requires": [
185,
316,
325,
339,
340,
343
],
"uses": [
474,
490,
595
],
"idx": 344
},
{
"path": "../src/dd/DragDrop.js",
"requires": [
336
],
"uses": [
43
],
"idx": 345
},
{
"path": "../src/dd/DD.js",
"requires": [
336,
345
],
"uses": [
43
],
"idx": 346
},
{
"path": "../src/dd/DDProxy.js",
"requires": [
346
],
"uses": [
336
],
"idx": 347
},
{
"path": "../src/dd/StatusProxy.js",
"requires": [
109
],
"uses": [],
"idx": 348
},
{
"path": "../src/dd/DragSource.js",
"requires": [
336,
347,
348
],
"uses": [
185,
325
],
"idx": 349
},
{
"path": "../src/panel/Proxy.js",
"requires": [],
"uses": [
43
],
"idx": 350
},
{
"path": "../src/panel/DD.js",
"requires": [
349,
350
],
"uses": [],
"idx": 351
},
{
"path": "../src/layout/component/Dock.js",
"requires": [
324
],
"uses": [
14,
43,
311
],
"idx": 352
},
{
"path": "../src/util/Memento.js",
"requires": [],
"uses": [],
"idx": 353
},
{
"path": "../src/container/DockingContainer.js",
"requires": [
43,
49
],
"uses": [
14,
46,
220
],
"idx": 354
},
{
"path": "../src/panel/Panel.js",
"requires": [
43,
49,
66,
79,
316,
332,
341,
344,
351,
352,
353,
354
],
"uses": [
1,
82,
83,
109,
185,
314,
325,
331,
418,
491
],
"idx": 355
},
{
"path": "../src/form/Labelable.js",
"requires": [
0,
79
],
"uses": [
43,
422
],
"idx": 356
},
{
"path": "../src/form/field/Field.js",
"requires": [],
"uses": [],
"idx": 357
},
{
"path": "../src/form/field/Base.js",
"requires": [
1,
79,
109,
356,
357
],
"uses": [
220
],
"idx": 358
},
{
"path": "../src/form/field/Display.js",
"requires": [
72,
79,
358
],
"uses": [],
"idx": 359
},
{
"path": "../src/layout/container/Fit.js",
"requires": [
313
],
"uses": [],
"idx": 360
},
{
"path": "../src/panel/Table.js",
"requires": [
355,
360
],
"uses": [
1,
165,
220,
378,
392,
396,
534,
535,
571,
572
],
"idx": 361
},
{
"path": "../src/selection/Model.js",
"requires": [
4,
84,
322
],
"uses": [
117
],
"idx": 362
},
{
"path": "../src/selection/DataViewModel.js",
"requires": [
342,
362
],
"uses": [],
"idx": 363
},
{
"path": "../src/view/NavigationModel.js",
"requires": [
45,
84
],
"uses": [
342
],
"idx": 364
},
{
"path": "../src/view/AbstractView.js",
"requires": [
69,
109,
322,
323,
363,
364
],
"uses": [
10,
73,
79,
84,
165,
220,
306
],
"idx": 365
},
{
"path": "../src/view/View.js",
"requires": [
365
],
"uses": [],
"idx": 366
},
{
"path": "../src/grid/CellContext.js",
"requires": [],
"uses": [],
"idx": 367
},
{
"path": "../src/view/TableLayout.js",
"requires": [
325
],
"uses": [],
"idx": 368
},
{
"path": "../src/grid/locking/RowSynchronizer.js",
"requires": [],
"uses": [],
"idx": 369
},
{
"path": "../src/view/NodeCache.js",
"requires": [
69
],
"uses": [
43,
68
],
"idx": 370
},
{
"path": "../src/view/Table.js",
"requires": [
1,
49,
366,
367,
368,
369,
370
],
"uses": [
68,
79,
84,
109,
145,
392
],
"idx": 371
},
{
"path": "../src/grid/Panel.js",
"requires": [
361,
371
],
"uses": [],
"idx": 372
},
{
"path": "../src/form/CheckboxManager.js",
"requires": [
49
],
"uses": [],
"idx": 373
},
{
"path": "../src/form/field/Checkbox.js",
"requires": [
79,
358,
373
],
"uses": [],
"idx": 374
},
{
"path": "../src/app/bindinspector/Util.js",
"requires": [],
"uses": [
73
],
"idx": 375
},
{
"path": "../src/app/bindinspector/ComponentDetail.js",
"requires": [
109,
185,
316,
325,
339,
340,
355,
359,
372,
374,
375
],
"uses": [
73,
344,
352,
360,
409,
415,
491,
595
],
"idx": 376
},
{
"path": "../src/tree/View.js",
"requires": [
371
],
"uses": [
43,
79
],
"idx": 377
},
{
"path": "../src/selection/RowModel.js",
"requires": [
363,
367
],
"uses": [],
"idx": 378
},
{
"path": "../src/selection/TreeModel.js",
"requires": [
378
],
"uses": [],
"idx": 379
},
{
"path": "../src/grid/ColumnLayout.js",
"requires": [
339,
361
],
"uses": [],
"idx": 380
},
{
"path": "../src/dd/DragTracker.js",
"requires": [
45
],
"uses": [
24,
342
],
"idx": 381
},
{
"path": "../src/grid/plugin/HeaderResizer.js",
"requires": [
24,
299,
381
],
"uses": [
394
],
"idx": 382
},
{
"path": "../src/dd/DragZone.js",
"requires": [
349
],
"uses": [
386,
388
],
"idx": 383
},
{
"path": "../src/grid/header/DragZone.js",
"requires": [
383
],
"uses": [],
"idx": 384
},
{
"path": "../src/dd/DDTarget.js",
"requires": [
345
],
"uses": [],
"idx": 385
},
{
"path": "../src/dd/ScrollManager.js",
"requires": [
336
],
"uses": [],
"idx": 386
},
{
"path": "../src/dd/DropTarget.js",
"requires": [
385,
386
],
"uses": [],
"idx": 387
},
{
"path": "../src/dd/Registry.js",
"requires": [],
"uses": [],
"idx": 388
},
{
"path": "../src/dd/DropZone.js",
"requires": [
387,
388
],
"uses": [
336
],
"idx": 389
},
{
"path": "../src/grid/header/DropZone.js",
"requires": [
389
],
"uses": [
336
],
"idx": 390
},
{
"path": "../src/grid/plugin/HeaderReorderer.js",
"requires": [
299,
384,
390
],
"uses": [],
"idx": 391
},
{
"path": "../src/grid/header/Container.js",
"requires": [
316,
342,
343,
380,
382,
391
],
"uses": [
1,
109,
185,
325,
335,
340,
352,
394,
498,
520,
521,
522
],
"idx": 392
},
{
"path": "../src/grid/ColumnComponentLayout.js",
"requires": [
325
],
"uses": [],
"idx": 393
},
{
"path": "../src/grid/column/Column.js",
"requires": [
195,
380,
392,
393
],
"uses": [
72,
382
],
"idx": 394
},
{
"path": "../src/tree/Column.js",
"requires": [
394
],
"uses": [],
"idx": 395
},
{
"path": "../src/grid/NavigationModel.js",
"requires": [
364
],
"uses": [
26,
68,
109,
342,
367
],
"idx": 396
},
{
"path": "../src/tree/NavigationModel.js",
"requires": [
396
],
"uses": [
26
],
"idx": 397
},
{
"path": "../src/tree/Panel.js",
"requires": [
217,
361,
377,
379,
395,
397
],
"uses": [
165,
185,
314,
393
],
"idx": 398
},
{
"path": "../src/form/field/VTypes.js",
"requires": [],
"uses": [],
"idx": 399
},
{
"path": "../src/form/trigger/Trigger.js",
"requires": [
84,
334
],
"uses": [
43,
79
],
"idx": 400
},
{
"path": "../src/form/field/Text.js",
"requires": [
307,
358,
399,
400
],
"uses": [
72,
73,
83
],
"idx": 401
},
{
"path": "../src/app/bindinspector/ComponentList.js",
"requires": [
398,
401
],
"uses": [
14,
185,
314,
325,
344,
352,
375,
393,
395,
409,
421,
491,
595
],
"idx": 402
},
{
"path": "../src/resizer/BorderSplitter.js",
"requires": [
337
],
"uses": [
567
],
"idx": 403
},
{
"path": "../src/layout/container/Border.js",
"requires": [
66,
110,
313,
403
],
"uses": [
72,
185,
325
],
"idx": 404
},
{
"path": "../src/layout/container/Card.js",
"requires": [
360
],
"uses": [
43
],
"idx": 405
},
{
"path": "../src/dom/ButtonElement.js",
"requires": [
43
],
"uses": [],
"idx": 406
},
{
"path": "../src/button/Manager.js",
"requires": [],
"uses": [],
"idx": 407
},
{
"path": "../src/menu/Manager.js",
"requires": [],
"uses": [
11,
522
],
"idx": 408
},
{
"path": "../src/button/Button.js",
"requires": [
109,
215,
307,
334,
341,
406,
407,
408
],
"uses": [
26,
423
],
"idx": 409
},
{
"path": "../src/tab/Tab.js",
"requires": [
342,
409
],
"uses": [],
"idx": 410
},
{
"path": "../src/layout/component/Body.js",
"requires": [
325
],
"uses": [],
"idx": 411
},
{
"path": "../src/tab/Bar.js",
"requires": [
25,
329,
343,
410,
411
],
"uses": [
24
],
"idx": 412
},
{
"path": "../src/tab/Panel.js",
"requires": [
355,
405,
412
],
"uses": [
185,
325,
410
],
"idx": 413
},
{
"path": "../src/app/bindinspector/Environment.js",
"requires": [
117
],
"uses": [
11,
453
],
"idx": 414
},
{
"path": "../src/app/bindinspector/ViewModelDetail.js",
"requires": [
398
],
"uses": [
73,
185,
314,
375,
393,
395
],
"idx": 415
},
{
"path": "../src/app/bindinspector/noconflict/BaseModel.js",
"requires": [
145
],
"uses": [],
"idx": 416
},
{
"path": "../src/app/bindinspector/Container.js",
"requires": [
109,
185,
316,
325,
339,
375,
376,
402,
404,
413,
414,
415,
416
],
"uses": [
126,
314,
352,
355,
360,
412
],
"idx": 417
},
{
"path": "../src/util/ComponentDragger.js",
"requires": [
381
],
"uses": [
24,
43
],
"idx": 418
},
{
"path": "../src/window/Window.js",
"requires": [
24,
355,
418
],
"uses": [],
"idx": 419
},
{
"path": "../src/tip/Tip.js",
"requires": [
355
],
"uses": [
109
],
"idx": 420
},
{
"path": "../src/tip/ToolTip.js",
"requires": [
420
],
"uses": [
43
],
"idx": 421
},
{
"path": "../src/tip/QuickTip.js",
"requires": [
421
],
"uses": [],
"idx": 422
},
{
"path": "../src/tip/QuickTipManager.js",
"requires": [
422
],
"uses": [],
"idx": 423
},
{
"path": "../src/app/bindinspector/Inspector.js",
"requires": [
360,
417,
419,
423
],
"uses": [
185,
325,
404,
414
],
"idx": 424
},
{
"path": "../src/button/Split.js",
"requires": [
409
],
"uses": [],
"idx": 425
},
{
"path": "../src/button/Cycle.js",
"requires": [
425
],
"uses": [],
"idx": 426
},
{
"path": "../src/button/Segmented.js",
"requires": [
316,
409
],
"uses": [],
"idx": 427
},
{
"path": "../src/layout/container/Table.js",
"requires": [
313
],
"uses": [],
"idx": 428
},
{
"path": "../src/container/ButtonGroup.js",
"requires": [
355,
428
],
"uses": [],
"idx": 429
},
{
"path": "../src/container/Monitor.js",
"requires": [],
"uses": [
49
],
"idx": 430
},
{
"path": "../src/plugin/Responsive.js",
"requires": [
294
],
"uses": [],
"idx": 431
},
{
"path": "../src/plugin/Viewport.js",
"requires": [
431
],
"uses": [
43,
109,
311
],
"idx": 432
},
{
"path": "../src/container/Viewport.js",
"requires": [
294,
316,
432
],
"uses": [],
"idx": 433
},
{
"path": "../src/layout/container/Anchor.js",
"requires": [
314
],
"uses": [],
"idx": 434
},
{
"path": "../src/dashboard/Panel.js",
"requires": [
355
],
"uses": [
11
],
"idx": 435
},
{
"path": "../src/dashboard/Column.js",
"requires": [
316,
434,
435
],
"uses": [],
"idx": 436
},
{
"path": "../src/layout/container/Column.js",
"requires": [
314
],
"uses": [],
"idx": 437
},
{
"path": "../src/resizer/SplitterTracker.js",
"requires": [
24,
381
],
"uses": [
43,
90
],
"idx": 438
},
{
"path": "../src/layout/container/ColumnSplitterTracker.js",
"requires": [
438
],
"uses": [],
"idx": 439
},
{
"path": "../src/layout/container/ColumnSplitter.js",
"requires": [
337,
439
],
"uses": [],
"idx": 440
},
{
"path": "../src/layout/container/Dashboard.js",
"requires": [
437,
440
],
"uses": [
185,
325
],
"idx": 441
},
{
"path": "../src/dashboard/DropZone.js",
"requires": [
387
],
"uses": [],
"idx": 442
},
{
"path": "../src/dashboard/Part.js",
"requires": [
3,
84,
118
],
"uses": [],
"idx": 443
},
{
"path": "../src/dashboard/Dashboard.js",
"requires": [
355,
436,
441,
442,
443
],
"uses": [
84,
106,
117
],
"idx": 444
},
{
"path": "../src/dom/Layer.js",
"requires": [
43
],
"uses": [
220
],
"idx": 445
},
{
"path": "../src/enums.js",
"requires": [],
"uses": [],
"idx": 446
},
{
"path": "../src/event/publisher/MouseEnterLeave.js",
"requires": [
27
],
"uses": [],
"idx": 447
},
{
"path": "../src/flash/Component.js",
"requires": [
109
],
"uses": [],
"idx": 448
},
{
"path": "../src/form/action/Action.js",
"requires": [],
"uses": [],
"idx": 449
},
{
"path": "../src/form/action/Load.js",
"requires": [
8,
449
],
"uses": [
9
],
"idx": 450
},
{
"path": "../src/form/action/Submit.js",
"requires": [
449
],
"uses": [
9,
220
],
"idx": 451
},
{
"path": "../src/form/field/TextArea.js",
"requires": [
1,
79,
401
],
"uses": [
72,
307
],
"idx": 452
},
{
"path": "../src/window/MessageBox.js",
"requires": [
327,
339,
344,
401,
409,
419,
434,
452
],
"uses": [
109,
185,
316,
325,
326,
491
],
"idx": 453
},
{
"path": "../src/form/Basic.js",
"requires": [
1,
45,
49,
129,
450,
451,
453
],
"uses": [
430
],
"idx": 454
},
{
"path": "../src/form/FieldAncestor.js",
"requires": [
0,
430
],
"uses": [],
"idx": 455
},
{
"path": "../src/layout/component/field/FieldContainer.js",
"requires": [
325
],
"uses": [],
"idx": 456
},
{
"path": "../src/form/FieldContainer.js",
"requires": [
316,
356,
455,
456
],
"uses": [],
"idx": 457
},
{
"path": "../src/layout/container/CheckboxGroup.js",
"requires": [
313
],
"uses": [
220
],
"idx": 458
},
{
"path": "../src/form/CheckboxGroup.js",
"requires": [
357,
358,
374,
457,
458
],
"uses": [],
"idx": 459
},
{
"path": "../src/form/FieldSet.js",
"requires": [
316,
455
],
"uses": [
43,
82,
109,
185,
220,
313,
325,
331,
374,
434,
557
],
"idx": 460
},
{
"path": "../src/form/Label.js",
"requires": [
72,
109
],
"uses": [],
"idx": 461
},
{
"path": "../src/form/Panel.js",
"requires": [
50,
355,
454,
455
],
"uses": [],
"idx": 462
},
{
"path": "../src/form/RadioManager.js",
"requires": [
49
],
"uses": [],
"idx": 463
},
{
"path": "../src/form/field/Radio.js",
"requires": [
374,
463
],
"uses": [],
"idx": 464
},
{
"path": "../src/form/RadioGroup.js",
"requires": [
343,
459,
464
],
"uses": [
463
],
"idx": 465
},
{
"path": "../src/form/action/DirectAction.js",
"requires": [
0
],
"uses": [
200
],
"idx": 466
},
{
"path": "../src/form/action/DirectLoad.js",
"requires": [
200,
450,
466
],
"uses": [],
"idx": 467
},
{
"path": "../src/form/action/DirectSubmit.js",
"requires": [
200,
451,
466
],
"uses": [],
"idx": 468
},
{
"path": "../src/form/action/StandardSubmit.js",
"requires": [
451
],
"uses": [],
"idx": 469
},
{
"path": "../src/form/field/Picker.js",
"requires": [
342,
401
],
"uses": [],
"idx": 470
},
{
"path": "../src/view/BoundListKeyNav.js",
"requires": [
364
],
"uses": [
26,
342
],
"idx": 471
},
{
"path": "../src/layout/component/BoundList.js",
"requires": [
325
],
"uses": [],
"idx": 472
},
{
"path": "../src/toolbar/Item.js",
"requires": [
109,
344
],
"uses": [],
"idx": 473
},
{
"path": "../src/toolbar/TextItem.js",
"requires": [
79,
344,
473
],
"uses": [],
"idx": 474
},
{
"path": "../src/form/trigger/Spinner.js",
"requires": [
400
],
"uses": [],
"idx": 475
},
{
"path": "../src/form/field/Spinner.js",
"requires": [
342,
401,
475
],
"uses": [],
"idx": 476
},
{
"path": "../src/form/field/Number.js",
"requires": [
476
],
"uses": [
72,
73
],
"idx": 477
},
{
"path": "../src/toolbar/Paging.js",
"requires": [
322,
344,
474,
477
],
"uses": [
73,
185,
325,
475
],
"idx": 478
},
{
"path": "../src/view/BoundList.js",
"requires": [
43,
215,
366,
471,
472,
478
],
"uses": [
79,
185,
325,
491
],
"idx": 479
},
{
"path": "../src/form/field/ComboBox.js",
"requires": [
1,
165,
322,
470,
479
],
"uses": [
26,
43,
44,
79,
117,
145,
160,
185,
220,
363,
471,
472
],
"idx": 480
},
{
"path": "../src/picker/Month.js",
"requires": [
79,
109,
334,
409
],
"uses": [
185,
325
],
"idx": 481
},
{
"path": "../src/picker/Date.js",
"requires": [
60,
79,
109,
334,
342,
409,
425,
481
],
"uses": [
73,
185,
220,
325
],
"idx": 482
},
{
"path": "../src/form/field/Date.js",
"requires": [
470,
482
],
"uses": [
73,
185,
325
],
"idx": 483
},
{
"path": "../src/form/field/FileButton.js",
"requires": [
409
],
"uses": [
109
],
"idx": 484
},
{
"path": "../src/form/trigger/Component.js",
"requires": [
400
],
"uses": [],
"idx": 485
},
{
"path": "../src/form/field/File.js",
"requires": [
401,
484,
485
],
"uses": [
185,
325
],
"idx": 486
},
{
"path": "../src/form/field/Hidden.js",
"requires": [
358
],
"uses": [],
"idx": 487
},
{
"path": "../src/picker/Color.js",
"requires": [
79,
109
],
"uses": [],
"idx": 488
},
{
"path": "../src/layout/component/field/HtmlEditor.js",
"requires": [
456
],
"uses": [],
"idx": 489
},
{
"path": "../src/toolbar/Separator.js",
"requires": [
344,
473
],
"uses": [],
"idx": 490
},
{
"path": "../src/layout/container/boxOverflow/Menu.js",
"requires": [
333,
409,
490
],
"uses": [
185,
325,
335,
340,
352,
522,
595
],
"idx": 491
},
{
"path": "../src/form/field/HtmlEditor.js",
"requires": [
72,
306,
340,
344,
357,
423,
457,
473,
488,
489,
491
],
"uses": [
1,
73,
109,
185,
220,
325,
335,
352,
522
],
"idx": 492
},
{
"path": "../src/form/field/Tag.js",
"requires": [
162,
197,
362,
480
],
"uses": [
44,
79
],
"idx": 493
},
{
"path": "../src/picker/Time.js",
"requires": [
162,
479
],
"uses": [
44
],
"idx": 494
},
{
"path": "../src/form/field/Time.js",
"requires": [
471,
480,
483,
494
],
"uses": [
73,
79,
185,
363,
472
],
"idx": 495
},
{
"path": "../src/form/field/Trigger.js",
"requires": [
220,
334,
401
],
"uses": [],
"idx": 496
},
{
"path": "../src/grid/CellEditor.js",
"requires": [
318
],
"uses": [],
"idx": 497
},
{
"path": "../src/grid/ColumnManager.js",
"requires": [],
"uses": [],
"idx": 498
},
{
"path": "../src/grid/RowEditorButtons.js",
"requires": [
316
],
"uses": [
185,
325,
355,
409
],
"idx": 499
},
{
"path": "../src/grid/RowEditor.js",
"requires": [
342,
421,
462,
499
],
"uses": [
43,
70,
185,
314,
316,
325,
352,
359
],
"idx": 500
},
{
"path": "../src/grid/Scroller.js",
"requires": [],
"uses": [],
"idx": 501
},
{
"path": "../src/view/DropZone.js",
"requires": [
389
],
"uses": [
109,
185,
325
],
"idx": 502
},
{
"path": "../src/grid/ViewDropZone.js",
"requires": [
502
],
"uses": [],
"idx": 503
},
{
"path": "../src/grid/column/Action.js",
"requires": [
394
],
"uses": [],
"idx": 504
},
{
"path": "../src/grid/column/Boolean.js",
"requires": [
394
],
"uses": [],
"idx": 505
},
{
"path": "../src/grid/column/Check.js",
"requires": [
394
],
"uses": [],
"idx": 506
},
{
"path": "../src/grid/column/Date.js",
"requires": [
394
],
"uses": [
72
],
"idx": 507
},
{
"path": "../src/grid/column/Number.js",
"requires": [
72,
394
],
"uses": [],
"idx": 508
},
{
"path": "../src/grid/column/RowNumberer.js",
"requires": [
394
],
"uses": [],
"idx": 509
},
{
"path": "../src/grid/column/Template.js",
"requires": [
79,
394
],
"uses": [
506
],
"idx": 510
},
{
"path": "../src/grid/column/Widget.js",
"requires": [
394
],
"uses": [],
"idx": 511
},
{
"path": "../src/grid/feature/Feature.js",
"requires": [
45
],
"uses": [],
"idx": 512
},
{
"path": "../src/grid/feature/AbstractSummary.js",
"requires": [
512
],
"uses": [],
"idx": 513
},
{
"path": "../src/grid/feature/GroupStore.js",
"requires": [
45
],
"uses": [
117
],
"idx": 514
},
{
"path": "../src/grid/feature/Grouping.js",
"requires": [
512,
513,
514
],
"uses": [
79,
145,
392
],
"idx": 515
},
{
"path": "../src/grid/feature/GroupingSummary.js",
"requires": [
515
],
"uses": [],
"idx": 516
},
{
"path": "../src/grid/feature/RowBody.js",
"requires": [
512
],
"uses": [
79
],
"idx": 517
},
{
"path": "../src/grid/feature/Summary.js",
"requires": [
513
],
"uses": [
79,
109,
145,
185,
325
],
"idx": 518
},
{
"path": "../src/menu/Item.js",
"requires": [
109,
215
],
"uses": [
408,
423
],
"idx": 519
},
{
"path": "../src/menu/CheckItem.js",
"requires": [
519
],
"uses": [
408
],
"idx": 520
},
{
"path": "../src/menu/Separator.js",
"requires": [
519
],
"uses": [],
"idx": 521
},
{
"path": "../src/menu/Menu.js",
"requires": [
340,
343,
355,
408,
519,
520,
521
],
"uses": [
11,
43,
185,
325
],
"idx": 522
},
{
"path": "../src/grid/filters/filter/Base.js",
"requires": [
84,
185,
335,
340,
352,
522
],
"uses": [
1,
44
],
"idx": 523
},
{
"path": "../src/grid/filters/filter/SingleFilter.js",
"requires": [
523
],
"uses": [],
"idx": 524
},
{
"path": "../src/grid/filters/filter/Boolean.js",
"requires": [
524
],
"uses": [],
"idx": 525
},
{
"path": "../src/grid/filters/filter/TriFilter.js",
"requires": [
523
],
"uses": [],
"idx": 526
},
{
"path": "../src/grid/filters/filter/Date.js",
"requires": [
185,
325,
520,
526
],
"uses": [
482,
522
],
"idx": 527
},
{
"path": "../src/grid/filters/filter/List.js",
"requires": [
524
],
"uses": [
162,
165
],
"idx": 528
},
{
"path": "../src/grid/filters/filter/Number.js",
"requires": [
185,
325,
475,
526
],
"uses": [
477
],
"idx": 529
},
{
"path": "../src/grid/filters/filter/String.js",
"requires": [
185,
325,
401,
524
],
"uses": [],
"idx": 530
},
{
"path": "../src/grid/filters/Filters.js",
"requires": [
299,
322,
523,
524,
525,
526,
527,
528,
529,
530
],
"uses": [
84
],
"idx": 531
},
{
"path": "../src/grid/locking/HeaderContainer.js",
"requires": [
392,
498
],
"uses": [],
"idx": 532
},
{
"path": "../src/grid/locking/View.js",
"requires": [
45,
108,
109,
322,
365,
371
],
"uses": [
11,
323,
396,
397
],
"idx": 533
},
{
"path": "../src/grid/locking/Lockable.js",
"requires": [
109,
371,
392,
532,
533
],
"uses": [
1,
165,
185,
314,
325,
337,
338
],
"idx": 534
},
{
"path": "../src/grid/plugin/BufferedRenderer.js",
"requires": [
299
],
"uses": [
1,
369
],
"idx": 535
},
{
"path": "../src/grid/plugin/Editing.js",
"requires": [
45,
299,
342,
358,
371,
394
],
"uses": [
11,
185,
325,
367
],
"idx": 536
},
{
"path": "../src/grid/plugin/CellEditing.js",
"requires": [
1,
497,
536
],
"uses": [
49,
185,
317,
325
],
"idx": 537
},
{
"path": "../src/plugin/AbstractClipboard.js",
"requires": [
299,
341
],
"uses": [
43
],
"idx": 538
},
{
"path": "../src/grid/plugin/Clipboard.js",
"requires": [
72,
305,
538
],
"uses": [
367
],
"idx": 539
},
{
"path": "../src/grid/plugin/DragDrop.js",
"requires": [
299
],
"uses": [
503,
597
],
"idx": 540
},
{
"path": "../src/grid/plugin/RowEditing.js",
"requires": [
500,
536
],
"uses": [],
"idx": 541
},
{
"path": "../src/grid/plugin/RowExpander.js",
"requires": [
299,
517
],
"uses": [
79,
394
],
"idx": 542
},
{
"path": "../src/grid/property/Grid.js",
"requires": [
372
],
"uses": [
11,
79,
145,
185,
317,
325,
358,
371,
401,
475,
477,
480,
483,
497,
537,
544,
547
],
"idx": 543
},
{
"path": "../src/grid/property/HeaderContainer.js",
"requires": [
72,
392
],
"uses": [],
"idx": 544
},
{
"path": "../src/grid/property/Property.js",
"requires": [
145
],
"uses": [],
"idx": 545
},
{
"path": "../src/grid/property/Reader.js",
"requires": [
147
],
"uses": [
146
],
"idx": 546
},
{
"path": "../src/grid/property/Store.js",
"requires": [
151,
162,
545,
546
],
"uses": [
157
],
"idx": 547
},
{
"path": "../src/grid/selection/Selection.js",
"requires": [],
"uses": [],
"idx": 548
},
{
"path": "../src/grid/selection/Cells.js",
"requires": [
548
],
"uses": [
367
],
"idx": 549
},
{
"path": "../src/grid/selection/Columns.js",
"requires": [
548
],
"uses": [
367
],
"idx": 550
},
{
"path": "../src/grid/selection/Rows.js",
"requires": [
117,
548
],
"uses": [
367
],
"idx": 551
},
{
"path": "../src/grid/selection/SpreadsheetModel.js",
"requires": [
362,
509,
548,
549,
550,
551
],
"uses": [
185,
314,
367,
386,
393
],
"idx": 552
},
{
"path": "../src/util/Queue.js",
"requires": [],
"uses": [],
"idx": 553
},
{
"path": "../src/layout/ContextItem.js",
"requires": [],
"uses": [
49,
60,
66,
311
],
"idx": 554
},
{
"path": "../src/layout/Context.js",
"requires": [
60,
66,
298,
312,
553,
554
],
"uses": [],
"idx": 555
},
{
"path": "../src/layout/SizePolicy.js",
"requires": [],
"uses": [],
"idx": 556
},
{
"path": "../src/layout/component/FieldSet.js",
"requires": [
411
],
"uses": [],
"idx": 557
},
{
"path": "../src/layout/container/Absolute.js",
"requires": [
434
],
"uses": [],
"idx": 558
},
{
"path": "../src/layout/container/Accordion.js",
"requires": [
340
],
"uses": [],
"idx": 559
},
{
"path": "../src/layout/container/Center.js",
"requires": [
360
],
"uses": [],
"idx": 560
},
{
"path": "../src/layout/container/Form.js",
"requires": [
314
],
"uses": [],
"idx": 561
},
{
"path": "../src/layout/container/SegmentedButton.js",
"requires": [
313
],
"uses": [],
"idx": 562
},
{
"path": "../src/menu/ColorPicker.js",
"requires": [
488,
522
],
"uses": [
185,
325,
408
],
"idx": 563
},
{
"path": "../src/menu/DatePicker.js",
"requires": [
482,
522
],
"uses": [
185,
325,
408
],
"idx": 564
},
{
"path": "../src/panel/Pinnable.js",
"requires": [
0
],
"uses": [
185,
325,
331
],
"idx": 565
},
{
"path": "../src/plugin/Manager.js",
"requires": [],
"uses": [],
"idx": 566
},
{
"path": "../src/resizer/BorderSplitterTracker.js",
"requires": [
24,
438
],
"uses": [],
"idx": 567
},
{
"path": "../src/resizer/Handle.js",
"requires": [
109
],
"uses": [],
"idx": 568
},
{
"path": "../src/resizer/ResizeTracker.js",
"requires": [
381
],
"uses": [],
"idx": 569
},
{
"path": "../src/resizer/Resizer.js",
"requires": [
45
],
"uses": [
43,
73,
109,
220,
569
],
"idx": 570
},
{
"path": "../src/selection/CellModel.js",
"requires": [
363,
367
],
"uses": [],
"idx": 571
},
{
"path": "../src/selection/CheckboxModel.js",
"requires": [
378
],
"uses": [
185,
314,
367,
393,
394
],
"idx": 572
},
{
"path": "../src/slider/Thumb.js",
"requires": [
72,
381
],
"uses": [
66
],
"idx": 573
},
{
"path": "../src/slider/Tip.js",
"requires": [
420
],
"uses": [],
"idx": 574
},
{
"path": "../src/slider/Multi.js",
"requires": [
72,
73,
358,
573,
574
],
"uses": [
220
],
"idx": 575
},
{
"path": "../src/slider/Single.js",
"requires": [
575
],
"uses": [],
"idx": 576
},
{
"path": "../src/slider/Widget.js",
"requires": [
76,
575
],
"uses": [
66,
72
],
"idx": 577
},
{
"path": "../src/sparkline/Shape.js",
"requires": [],
"uses": [],
"idx": 578
},
{
"path": "../src/sparkline/CanvasBase.js",
"requires": [
578
],
"uses": [],
"idx": 579
},
{
"path": "../src/sparkline/CanvasCanvas.js",
"requires": [
579
],
"uses": [],
"idx": 580
},
{
"path": "../src/sparkline/VmlCanvas.js",
"requires": [
579
],
"uses": [],
"idx": 581
},
{
"path": "../src/sparkline/Base.js",
"requires": [
76,
79,
185,
314,
352,
421,
580,
581
],
"uses": [],
"idx": 582
},
{
"path": "../src/sparkline/BarBase.js",
"requires": [
582
],
"uses": [],
"idx": 583
},
{
"path": "../src/sparkline/RangeMap.js",
"requires": [],
"uses": [],
"idx": 584
},
{
"path": "../src/sparkline/Bar.js",
"requires": [
79,
583,
584
],
"uses": [],
"idx": 585
},
{
"path": "../src/sparkline/Box.js",
"requires": [
79,
582
],
"uses": [],
"idx": 586
},
{
"path": "../src/sparkline/Bullet.js",
"requires": [
79,
582
],
"uses": [],
"idx": 587
},
{
"path": "../src/sparkline/Discrete.js",
"requires": [
79,
583
],
"uses": [],
"idx": 588
},
{
"path": "../src/sparkline/Line.js",
"requires": [
79,
582,
584
],
"uses": [],
"idx": 589
},
{
"path": "../src/sparkline/Pie.js",
"requires": [
79,
582
],
"uses": [],
"idx": 590
},
{
"path": "../src/sparkline/TriState.js",
"requires": [
79,
583,
584
],
"uses": [],
"idx": 591
},
{
"path": "../src/state/CookieProvider.js",
"requires": [
105
],
"uses": [],
"idx": 592
},
{
"path": "../src/state/LocalStorageProvider.js",
"requires": [
105,
304
],
"uses": [],
"idx": 593
},
{
"path": "../src/toolbar/Breadcrumb.js",
"requires": [
217,
316,
343,
425
],
"uses": [
165
],
"idx": 594
},
{
"path": "../src/toolbar/Fill.js",
"requires": [
109,
344
],
"uses": [],
"idx": 595
},
{
"path": "../src/toolbar/Spacer.js",
"requires": [
109,
344
],
"uses": [],
"idx": 596
},
{
"path": "../src/view/DragZone.js",
"requires": [
383
],
"uses": [
73
],
"idx": 597
},
{
"path": "../src/tree/ViewDragZone.js",
"requires": [
597
],
"uses": [
73
],
"idx": 598
},
{
"path": "../src/tree/ViewDropZone.js",
"requires": [
502
],
"uses": [],
"idx": 599
},
{
"path": "../src/tree/plugin/TreeViewDragDrop.js",
"requires": [
299
],
"uses": [
598,
599
],
"idx": 600
},
{
"path": "../src/util/CSS.js",
"requires": [],
"uses": [
43
],
"idx": 601
},
{
"path": "../src/util/Cookies.js",
"requires": [],
"uses": [],
"idx": 602
},
{
"path": "../src/view/MultiSelectorSearch.js",
"requires": [
355
],
"uses": [
44,
165,
185,
325,
352,
360,
372,
401
],
"idx": 603
},
{
"path": "../src/view/MultiSelector.js",
"requires": [
185,
352,
360,
372,
603
],
"uses": [],
"idx": 604
},
{
"path": "../src/window/Toast.js",
"requires": [
419
],
"uses": [
1
],
"idx": 605
}
],
"classes": {
"Ext.AbstractManager": {
"idx": 6,
"alias": [],
"alternates": []
},
"Ext.Action": {
"idx": 308,
"alias": [],
"alternates": []
},
"Ext.Ajax": {
"idx": 9,
"alias": [],
"alternates": []
},
"Ext.AnimationQueue": {
"idx": 10,
"alias": [],
"alternates": []
},
"Ext.Component": {
"idx": 109,
"alias": [
"widget.box",
"widget.component"
],
"alternates": [
"Ext.AbstractComponent"
]
},
"Ext.ComponentLoader": {
"idx": 310,
"alias": [],
"alternates": []
},
"Ext.ComponentManager": {
"idx": 11,
"alias": [],
"alternates": [
"Ext.ComponentMgr"
]
},
"Ext.ComponentQuery": {
"idx": 14,
"alias": [],
"alternates": []
},
"Ext.Editor": {
"idx": 318,
"alias": [
"widget.editor"
],
"alternates": []
},
"Ext.ElementLoader": {
"idx": 309,
"alias": [],
"alternates": []
},
"Ext.EventManager": {
"idx": 319,
"alias": [],
"alternates": []
},
"Ext.Evented": {
"idx": 15,
"alias": [],
"alternates": [
"Ext.EventedBase"
]
},
"Ext.FocusManager": {
"idx": 320,
"alias": [],
"alternates": [
"Ext.FocusMgr"
]
},
"Ext.GlobalEvents": {
"idx": 70,
"alias": [],
"alternates": [
"Ext.globalEvents"
]
},
"Ext.Img": {
"idx": 321,
"alias": [
"widget.image",
"widget.imagecomponent"
],
"alternates": []
},
"Ext.LoadMask": {
"idx": 323,
"alias": [
"widget.loadmask"
],
"alternates": []
},
"Ext.Mixin": {
"idx": 0,
"alias": [],
"alternates": []
},
"Ext.ProgressBar": {
"idx": 327,
"alias": [
"widget.progressbar"
],
"alternates": []
},
"Ext.ProgressBarWidget": {
"idx": 328,
"alias": [
"widget.progressbarwidget"
],
"alternates": []
},
"Ext.TaskQueue": {
"idx": 31,
"alias": [],
"alternates": []
},
"Ext.Template": {
"idx": 73,
"alias": [],
"alternates": []
},
"Ext.Widget": {
"idx": 76,
"alias": [
"widget.widget"
],
"alternates": []
},
"Ext.XTemplate": {
"idx": 79,
"alias": [],
"alternates": []
},
"Ext.ZIndexManager": {
"idx": 315,
"alias": [],
"alternates": [
"Ext.WindowGroup"
]
},
"Ext.app.Application": {
"idx": 172,
"alias": [],
"alternates": []
},
"Ext.app.BaseController": {
"idx": 113,
"alias": [],
"alternates": []
},
"Ext.app.Controller": {
"idx": 171,
"alias": [],
"alternates": []
},
"Ext.app.EventBus": {
"idx": 111,
"alias": [],
"alternates": []
},
"Ext.app.EventDomain": {
"idx": 80,
"alias": [],
"alternates": []
},
"Ext.app.Profile": {
"idx": 173,
"alias": [],
"alternates": []
},
"Ext.app.Util": {
"idx": 114,
"alias": [],
"alternates": []
},
"Ext.app.ViewController": {
"idx": 175,
"alias": [],
"alternates": []
},
"Ext.app.ViewModel": {
"idx": 198,
"alias": [
"viewmodel.default"
],
"alternates": []
},
"Ext.app.bind.AbstractStub": {
"idx": 189,
"alias": [],
"alternates": []
},
"Ext.app.bind.BaseBinding": {
"idx": 187,
"alias": [],
"alternates": []
},
"Ext.app.bind.Binding": {
"idx": 188,
"alias": [],
"alternates": []
},
"Ext.app.bind.Formula": {
"idx": 194,
"alias": [],
"alternates": []
},
"Ext.app.bind.LinkStub": {
"idx": 191,
"alias": [],
"alternates": []
},
"Ext.app.bind.Multi": {
"idx": 193,
"alias": [],
"alternates": []
},
"Ext.app.bind.RootStub": {
"idx": 192,
"alias": [],
"alternates": []
},
"Ext.app.bind.Stub": {
"idx": 190,
"alias": [],
"alternates": []
},
"Ext.app.bind.Template": {
"idx": 195,
"alias": [],
"alternates": []
},
"Ext.app.bind.TemplateBinding": {
"idx": 196,
"alias": [],
"alternates": []
},
"Ext.app.bindinspector.ComponentDetail": {
"idx": 376,
"alias": [
"widget.bindinspector-componentdetail"
],
"alternates": []
},
"Ext.app.bindinspector.ComponentList": {
"idx": 402,
"alias": [
"widget.bindinspector-componentlist"
],
"alternates": []
},
"Ext.app.bindinspector.Container": {
"idx": 417,
"alias": [
"widget.bindinspector-container"
],
"alternates": []
},
"Ext.app.bindinspector.Environment": {
"idx": 414,
"alias": [],
"alternates": []
},
"Ext.app.bindinspector.Inspector": {
"idx": 424,
"alias": [],
"alternates": []
},
"Ext.app.bindinspector.Util": {
"idx": 375,
"alias": [],
"alternates": []
},
"Ext.app.bindinspector.ViewModelDetail": {
"idx": 415,
"alias": [
"widget.bindinspector-viewmodeldetail"
],
"alternates": []
},
"Ext.app.bindinspector.noconflict.BaseModel": {
"idx": 416,
"alias": [],
"alternates": []
},
"Ext.app.domain.Component": {
"idx": 81,
"alias": [],
"alternates": []
},
"Ext.app.domain.Controller": {
"idx": 199,
"alias": [],
"alternates": []
},
"Ext.app.domain.Direct": {
"idx": 202,
"alias": [],
"alternates": []
},
"Ext.app.domain.Global": {
"idx": 112,
"alias": [],
"alternates": []
},
"Ext.app.domain.Store": {
"idx": 166,
"alias": [],
"alternates": []
},
"Ext.app.domain.View": {
"idx": 174,
"alias": [],
"alternates": []
},
"Ext.app.route.Queue": {
"idx": 167,
"alias": [],
"alternates": []
},
"Ext.app.route.Route": {
"idx": 168,
"alias": [],
"alternates": []
},
"Ext.app.route.Router": {
"idx": 170,
"alias": [],
"alternates": []
},
"Ext.button.Button": {
"idx": 409,
"alias": [
"widget.button"
],
"alternates": [
"Ext.Button"
]
},
"Ext.button.Cycle": {
"idx": 426,
"alias": [
"widget.cycle"
],
"alternates": [
"Ext.CycleButton"
]
},
"Ext.button.Manager": {
"idx": 407,
"alias": [],
"alternates": [
"Ext.ButtonToggleManager"
]
},
"Ext.button.Segmented": {
"idx": 427,
"alias": [
"widget.segmentedbutton"
],
"alternates": []
},
"Ext.button.Split": {
"idx": 425,
"alias": [
"widget.splitbutton"
],
"alternates": [
"Ext.SplitButton"
]
},
"Ext.container.ButtonGroup": {
"idx": 429,
"alias": [
"widget.buttongroup"
],
"alternates": [
"Ext.ButtonGroup"
]
},
"Ext.container.Container": {
"idx": 316,
"alias": [
"widget.container"
],
"alternates": [
"Ext.Container",
"Ext.AbstractContainer"
]
},
"Ext.container.DockingContainer": {
"idx": 354,
"alias": [],
"alternates": []
},
"Ext.container.Monitor": {
"idx": 430,
"alias": [],
"alternates": []
},
"Ext.container.Viewport": {
"idx": 433,
"alias": [
"widget.viewport"
],
"alternates": [
"Ext.Viewport"
]
},
"Ext.dashboard.Column": {
"idx": 436,
"alias": [
"widget.dashboard-column"
],
"alternates": []
},
"Ext.dashboard.Dashboard": {
"idx": 444,
"alias": [
"widget.dashboard"
],
"alternates": []
},
"Ext.dashboard.DropZone": {
"idx": 442,
"alias": [],
"alternates": []
},
"Ext.dashboard.Panel": {
"idx": 435,
"alias": [
"widget.dashboard-panel"
],
"alternates": []
},
"Ext.dashboard.Part": {
"idx": 443,
"alias": [
"part.part"
],
"alternates": []
},
"Ext.data.AbstractStore": {
"idx": 127,
"alias": [],
"alternates": []
},
"Ext.data.ArrayStore": {
"idx": 164,
"alias": [
"store.array"
],
"alternates": [
"Ext.data.SimpleStore"
]
},
"Ext.data.Batch": {
"idx": 178,
"alias": [],
"alternates": []
},
"Ext.data.BufferedStore": {
"idx": 204,
"alias": [
"store.buffered"
],
"alternates": []
},
"Ext.data.ChainedStore": {
"idx": 197,
"alias": [
"store.chained"
],
"alternates": []
},
"Ext.data.Connection": {
"idx": 8,
"alias": [],
"alternates": []
},
"Ext.data.DirectStore": {
"idx": 206,
"alias": [
"store.direct"
],
"alternates": []
},
"Ext.data.Error": {
"idx": 128,
"alias": [],
"alternates": []
},
"Ext.data.ErrorCollection": {
"idx": 129,
"alias": [],
"alternates": [
"Ext.data.Errors"
]
},
"Ext.data.JsonP": {
"idx": 207,
"alias": [],
"alternates": []
},
"Ext.data.JsonPStore": {
"idx": 209,
"alias": [
"store.jsonp"
],
"alternates": []
},
"Ext.data.JsonStore": {
"idx": 210,
"alias": [
"store.json"
],
"alternates": []
},
"Ext.data.LocalStore": {
"idx": 153,
"alias": [],
"alternates": []
},
"Ext.data.Model": {
"idx": 145,
"alias": [],
"alternates": [
"Ext.data.Record"
]
},
"Ext.data.ModelManager": {
"idx": 211,
"alias": [],
"alternates": [
"Ext.ModelMgr"
]
},
"Ext.data.NodeInterface": {
"idx": 212,
"alias": [],
"alternates": []
},
"Ext.data.NodeStore": {
"idx": 213,
"alias": [
"store.node"
],
"alternates": []
},
"Ext.data.PageMap": {
"idx": 203,
"alias": [],
"alternates": []
},
"Ext.data.ProxyStore": {
"idx": 152,
"alias": [],
"alternates": []
},
"Ext.data.Request": {
"idx": 214,
"alias": [],
"alternates": []
},
"Ext.data.ResultSet": {
"idx": 146,
"alias": [],
"alternates": []
},
"Ext.data.Session": {
"idx": 185,
"alias": [],
"alternates": []
},
"Ext.data.SortTypes": {
"idx": 135,
"alias": [],
"alternates": []
},
"Ext.data.Store": {
"idx": 162,
"alias": [
"store.store"
],
"alternates": []
},
"Ext.data.StoreManager": {
"idx": 165,
"alias": [],
"alternates": [
"Ext.StoreMgr",
"Ext.data.StoreMgr",
"Ext.StoreManager"
]
},
"Ext.data.TreeModel": {
"idx": 216,
"alias": [],
"alternates": []
},
"Ext.data.TreeStore": {
"idx": 217,
"alias": [
"store.tree"
],
"alternates": []
},
"Ext.data.Types": {
"idx": 218,
"alias": [],
"alternates": []
},
"Ext.data.Validation": {
"idx": 219,
"alias": [],
"alternates": []
},
"Ext.data.XmlStore": {
"idx": 224,
"alias": [
"store.xml"
],
"alternates": []
},
"Ext.data.field.Boolean": {
"idx": 138,
"alias": [
"data.field.bool",
"data.field.boolean"
],
"alternates": []
},
"Ext.data.field.Date": {
"idx": 139,
"alias": [
"data.field.date"
],
"alternates": []
},
"Ext.data.field.Field": {
"idx": 137,
"alias": [
"data.field.auto"
],
"alternates": [
"Ext.data.Field"
]
},
"Ext.data.field.Integer": {
"idx": 140,
"alias": [
"data.field.int",
"data.field.integer"
],
"alternates": []
},
"Ext.data.field.Number": {
"idx": 141,
"alias": [
"data.field.float",
"data.field.number"
],
"alternates": []
},
"Ext.data.field.String": {
"idx": 142,
"alias": [
"data.field.string"
],
"alternates": []
},
"Ext.data.flash.BinaryXhr": {
"idx": 7,
"alias": [],
"alternates": []
},
"Ext.data.identifier.Generator": {
"idx": 143,
"alias": [
"data.identifier.default"
],
"alternates": []
},
"Ext.data.identifier.Negative": {
"idx": 225,
"alias": [
"data.identifier.negative"
],
"alternates": []
},
"Ext.data.identifier.Sequential": {
"idx": 144,
"alias": [
"data.identifier.sequential"
],
"alternates": []
},
"Ext.data.identifier.Uuid": {
"idx": 226,
"alias": [
"data.identifier.uuid"
],
"alternates": []
},
"Ext.data.matrix.Matrix": {
"idx": 181,
"alias": [],
"alternates": []
},
"Ext.data.matrix.Side": {
"idx": 180,
"alias": [],
"alternates": []
},
"Ext.data.matrix.Slice": {
"idx": 179,
"alias": [],
"alternates": []
},
"Ext.data.operation.Create": {
"idx": 131,
"alias": [
"data.operation.create"
],
"alternates": []
},
"Ext.data.operation.Destroy": {
"idx": 132,
"alias": [
"data.operation.destroy"
],
"alternates": []
},
"Ext.data.operation.Operation": {
"idx": 130,
"alias": [],
"alternates": [
"Ext.data.Operation"
]
},
"Ext.data.operation.Read": {
"idx": 133,
"alias": [
"data.operation.read"
],
"alternates": []
},
"Ext.data.operation.Update": {
"idx": 134,
"alias": [
"data.operation.update"
],
"alternates": []
},
"Ext.data.proxy.Ajax": {
"idx": 155,
"alias": [
"proxy.ajax"
],
"alternates": [
"Ext.data.HttpProxy",
"Ext.data.AjaxProxy"
]
},
"Ext.data.proxy.Client": {
"idx": 150,
"alias": [],
"alternates": [
"Ext.data.ClientProxy"
]
},
"Ext.data.proxy.Direct": {
"idx": 205,
"alias": [
"proxy.direct"
],
"alternates": [
"Ext.data.DirectProxy"
]
},
"Ext.data.proxy.JsonP": {
"idx": 208,
"alias": [
"proxy.jsonp",
"proxy.scripttag"
],
"alternates": [
"Ext.data.ScriptTagProxy"
]
},
"Ext.data.proxy.LocalStorage": {
"idx": 228,
"alias": [
"proxy.localstorage"
],
"alternates": [
"Ext.data.LocalStorageProxy"
]
},
"Ext.data.proxy.Memory": {
"idx": 151,
"alias": [
"proxy.memory"
],
"alternates": [
"Ext.data.MemoryProxy"
]
},
"Ext.data.proxy.Proxy": {
"idx": 149,
"alias": [
"proxy.proxy"
],
"alternates": [
"Ext.data.DataProxy",
"Ext.data.Proxy"
]
},
"Ext.data.proxy.Rest": {
"idx": 229,
"alias": [
"proxy.rest"
],
"alternates": [
"Ext.data.RestProxy"
]
},
"Ext.data.proxy.Server": {
"idx": 154,
"alias": [
"proxy.server"
],
"alternates": [
"Ext.data.ServerProxy"
]
},
"Ext.data.proxy.SessionStorage": {
"idx": 230,
"alias": [
"proxy.sessionstorage"
],
"alternates": [
"Ext.data.SessionStorageProxy"
]
},
"Ext.data.proxy.WebStorage": {
"idx": 227,
"alias": [],
"alternates": [
"Ext.data.WebStorageProxy"
]
},
"Ext.data.reader.Array": {
"idx": 163,
"alias": [
"reader.array"
],
"alternates": [
"Ext.data.ArrayReader"
]
},
"Ext.data.reader.Json": {
"idx": 156,
"alias": [
"reader.json"
],
"alternates": [
"Ext.data.JsonReader"
]
},
"Ext.data.reader.Reader": {
"idx": 147,
"alias": [
"reader.base"
],
"alternates": [
"Ext.data.Reader",
"Ext.data.DataReader"
]
},
"Ext.data.reader.Xml": {
"idx": 222,
"alias": [
"reader.xml"
],
"alternates": [
"Ext.data.XmlReader"
]
},
"Ext.data.schema.Association": {
"idx": 120,
"alias": [],
"alternates": []
},
"Ext.data.schema.ManyToMany": {
"idx": 123,
"alias": [],
"alternates": []
},
"Ext.data.schema.ManyToOne": {
"idx": 122,
"alias": [],
"alternates": []
},
"Ext.data.schema.Namer": {
"idx": 125,
"alias": [
"namer.default"
],
"alternates": []
},
"Ext.data.schema.OneToOne": {
"idx": 121,
"alias": [],
"alternates": []
},
"Ext.data.schema.Role": {
"idx": 119,
"alias": [],
"alternates": []
},
"Ext.data.schema.Schema": {
"idx": 126,
"alias": [
"schema.default"
],
"alternates": []
},
"Ext.data.session.BatchVisitor": {
"idx": 184,
"alias": [],
"alternates": []
},
"Ext.data.session.ChangesVisitor": {
"idx": 182,
"alias": [],
"alternates": []
},
"Ext.data.session.ChildChangesVisitor": {
"idx": 183,
"alias": [],
"alternates": []
},
"Ext.data.validator.Bound": {
"idx": 231,
"alias": [
"data.validator.bound"
],
"alternates": []
},
"Ext.data.validator.Email": {
"idx": 233,
"alias": [
"data.validator.email"
],
"alternates": []
},
"Ext.data.validator.Exclusion": {
"idx": 235,
"alias": [
"data.validator.exclusion"
],
"alternates": []
},
"Ext.data.validator.Format": {
"idx": 232,
"alias": [
"data.validator.format"
],
"alternates": []
},
"Ext.data.validator.Inclusion": {
"idx": 236,
"alias": [
"data.validator.inclusion"
],
"alternates": []
},
"Ext.data.validator.Length": {
"idx": 237,
"alias": [
"data.validator.length"
],
"alternates": []
},
"Ext.data.validator.List": {
"idx": 234,
"alias": [
"data.validator.list"
],
"alternates": []
},
"Ext.data.validator.Presence": {
"idx": 238,
"alias": [
"data.validator.presence"
],
"alternates": []
},
"Ext.data.validator.Range": {
"idx": 239,
"alias": [
"data.validator.range"
],
"alternates": []
},
"Ext.data.validator.Validator": {
"idx": 136,
"alias": [
"data.validator.base"
],
"alternates": []
},
"Ext.data.writer.Json": {
"idx": 157,
"alias": [
"writer.json"
],
"alternates": [
"Ext.data.JsonWriter"
]
},
"Ext.data.writer.Writer": {
"idx": 148,
"alias": [
"writer.base"
],
"alternates": [
"Ext.data.DataWriter",
"Ext.data.Writer"
]
},
"Ext.data.writer.Xml": {
"idx": 223,
"alias": [
"writer.xml"
],
"alternates": [
"Ext.data.XmlWriter"
]
},
"Ext.dd.DD": {
"idx": 346,
"alias": [],
"alternates": []
},
"Ext.dd.DDProxy": {
"idx": 347,
"alias": [],
"alternates": []
},
"Ext.dd.DDTarget": {
"idx": 385,
"alias": [],
"alternates": []
},
"Ext.dd.DragDrop": {
"idx": 345,
"alias": [],
"alternates": []
},
"Ext.dd.DragDropManager": {
"idx": 336,
"alias": [],
"alternates": [
"Ext.dd.DragDropMgr",
"Ext.dd.DDM"
]
},
"Ext.dd.DragSource": {
"idx": 349,
"alias": [],
"alternates": []
},
"Ext.dd.DragTracker": {
"idx": 381,
"alias": [],
"alternates": []
},
"Ext.dd.DragZone": {
"idx": 383,
"alias": [],
"alternates": []
},
"Ext.dd.DropTarget": {
"idx": 387,
"alias": [],
"alternates": []
},
"Ext.dd.DropZone": {
"idx": 389,
"alias": [],
"alternates": []
},
"Ext.dd.Registry": {
"idx": 388,
"alias": [],
"alternates": []
},
"Ext.dd.ScrollManager": {
"idx": 386,
"alias": [],
"alternates": []
},
"Ext.dd.StatusProxy": {
"idx": 348,
"alias": [],
"alternates": []
},
"Ext.direct.Event": {
"idx": 240,
"alias": [
"direct.event"
],
"alternates": []
},
"Ext.direct.ExceptionEvent": {
"idx": 242,
"alias": [
"direct.exception"
],
"alternates": []
},
"Ext.direct.JsonProvider": {
"idx": 243,
"alias": [
"direct.jsonprovider"
],
"alternates": []
},
"Ext.direct.Manager": {
"idx": 200,
"alias": [],
"alternates": []
},
"Ext.direct.PollingProvider": {
"idx": 244,
"alias": [
"direct.pollingprovider"
],
"alternates": []
},
"Ext.direct.Provider": {
"idx": 201,
"alias": [
"direct.provider"
],
"alternates": []
},
"Ext.direct.RemotingEvent": {
"idx": 241,
"alias": [
"direct.rpc"
],
"alternates": []
},
"Ext.direct.RemotingMethod": {
"idx": 245,
"alias": [],
"alternates": []
},
"Ext.direct.RemotingProvider": {
"idx": 247,
"alias": [
"direct.remotingprovider"
],
"alternates": []
},
"Ext.direct.Transaction": {
"idx": 246,
"alias": [
"direct.transaction"
],
"alternates": [
"Ext.Direct.Transaction"
]
},
"Ext.dom.ButtonElement": {
"idx": 406,
"alias": [],
"alternates": []
},
"Ext.dom.CompositeElement": {
"idx": 83,
"alias": [],
"alternates": [
"Ext.CompositeElement"
]
},
"Ext.dom.CompositeElementLite": {
"idx": 69,
"alias": [],
"alternates": [
"Ext.CompositeElementLite"
]
},
"Ext.dom.Element": {
"idx": 43,
"alias": [],
"alternates": [
"Ext.Element"
]
},
"Ext.dom.ElementEvent": {
"idx": 21,
"alias": [],
"alternates": []
},
"Ext.dom.Fly": {
"idx": 68,
"alias": [],
"alternates": [
"Ext.dom.Element.Fly"
]
},
"Ext.dom.GarbageCollector": {
"idx": 248,
"alias": [],
"alternates": []
},
"Ext.dom.Helper": {
"idx": 220,
"alias": [],
"alternates": [
"Ext.DomHelper",
"Ext.core.DomHelper"
]
},
"Ext.dom.Layer": {
"idx": 445,
"alias": [],
"alternates": [
"Ext.Layer"
]
},
"Ext.dom.Query": {
"idx": 221,
"alias": [],
"alternates": [
"Ext.core.DomQuery",
"Ext.DomQuery"
]
},
"Ext.dom.Shadow": {
"idx": 19,
"alias": [],
"alternates": [
"Ext.Shadow"
]
},
"Ext.dom.Shim": {
"idx": 20,
"alias": [],
"alternates": []
},
"Ext.dom.Underlay": {
"idx": 18,
"alias": [],
"alternates": []
},
"Ext.dom.UnderlayPool": {
"idx": 17,
"alias": [],
"alternates": []
},
"Ext.event.Event": {
"idx": 26,
"alias": [],
"alternates": [
"Ext.EventObjectImpl"
]
},
"Ext.event.gesture.DoubleTap": {
"idx": 251,
"alias": [],
"alternates": []
},
"Ext.event.gesture.Drag": {
"idx": 252,
"alias": [],
"alternates": []
},
"Ext.event.gesture.EdgeSwipe": {
"idx": 254,
"alias": [],
"alternates": []
},
"Ext.event.gesture.LongPress": {
"idx": 255,
"alias": [],
"alternates": []
},
"Ext.event.gesture.MultiTouch": {
"idx": 256,
"alias": [],
"alternates": []
},
"Ext.event.gesture.Pinch": {
"idx": 257,
"alias": [],
"alternates": []
},
"Ext.event.gesture.Recognizer": {
"idx": 249,
"alias": [],
"alternates": []
},
"Ext.event.gesture.Rotate": {
"idx": 258,
"alias": [],
"alternates": []
},
"Ext.event.gesture.SingleTouch": {
"idx": 250,
"alias": [],
"alternates": []
},
"Ext.event.gesture.Swipe": {
"idx": 253,
"alias": [],
"alternates": []
},
"Ext.event.gesture.Tap": {
"idx": 259,
"alias": [],
"alternates": []
},
"Ext.event.publisher.Dom": {
"idx": 27,
"alias": [],
"alternates": []
},
"Ext.event.publisher.ElementPaint": {
"idx": 42,
"alias": [],
"alternates": []
},
"Ext.event.publisher.ElementSize": {
"idx": 37,
"alias": [],
"alternates": []
},
"Ext.event.publisher.Focus": {
"idx": 29,
"alias": [],
"alternates": []
},
"Ext.event.publisher.Gesture": {
"idx": 28,
"alias": [],
"alternates": []
},
"Ext.event.publisher.MouseEnterLeave": {
"idx": 447,
"alias": [],
"alternates": []
},
"Ext.event.publisher.Publisher": {
"idx": 22,
"alias": [],
"alternates": []
},
"Ext.flash.Component": {
"idx": 448,
"alias": [
"widget.flash"
],
"alternates": [
"Ext.FlashComponent"
]
},
"Ext.form.Basic": {
"idx": 454,
"alias": [],
"alternates": [
"Ext.form.BasicForm"
]
},
"Ext.form.CheckboxGroup": {
"idx": 459,
"alias": [
"widget.checkboxgroup"
],
"alternates": []
},
"Ext.form.CheckboxManager": {
"idx": 373,
"alias": [],
"alternates": []
},
"Ext.form.FieldAncestor": {
"idx": 455,
"alias": [],
"alternates": []
},
"Ext.form.FieldContainer": {
"idx": 457,
"alias": [
"widget.fieldcontainer"
],
"alternates": []
},
"Ext.form.FieldSet": {
"idx": 460,
"alias": [
"widget.fieldset"
],
"alternates": []
},
"Ext.form.Label": {
"idx": 461,
"alias": [
"widget.label"
],
"alternates": []
},
"Ext.form.Labelable": {
"idx": 356,
"alias": [],
"alternates": []
},
"Ext.form.Panel": {
"idx": 462,
"alias": [
"widget.form"
],
"alternates": [
"Ext.FormPanel",
"Ext.form.FormPanel"
]
},
"Ext.form.RadioGroup": {
"idx": 465,
"alias": [
"widget.radiogroup"
],
"alternates": []
},
"Ext.form.RadioManager": {
"idx": 463,
"alias": [],
"alternates": []
},
"Ext.form.action.Action": {
"idx": 449,
"alias": [],
"alternates": [
"Ext.form.Action"
]
},
"Ext.form.action.DirectAction": {
"idx": 466,
"alias": [],
"alternates": []
},
"Ext.form.action.DirectLoad": {
"idx": 467,
"alias": [
"formaction.directload"
],
"alternates": [
"Ext.form.Action.DirectLoad"
]
},
"Ext.form.action.DirectSubmit": {
"idx": 468,
"alias": [
"formaction.directsubmit"
],
"alternates": [
"Ext.form.Action.DirectSubmit"
]
},
"Ext.form.action.Load": {
"idx": 450,
"alias": [
"formaction.load"
],
"alternates": [
"Ext.form.Action.Load"
]
},
"Ext.form.action.StandardSubmit": {
"idx": 469,
"alias": [
"formaction.standardsubmit"
],
"alternates": []
},
"Ext.form.action.Submit": {
"idx": 451,
"alias": [
"formaction.submit"
],
"alternates": [
"Ext.form.Action.Submit"
]
},
"Ext.form.field.Base": {
"idx": 358,
"alias": [
"widget.field"
],
"alternates": [
"Ext.form.Field",
"Ext.form.BaseField"
]
},
"Ext.form.field.Checkbox": {
"idx": 374,
"alias": [
"widget.checkbox",
"widget.checkboxfield"
],
"alternates": [
"Ext.form.Checkbox"
]
},
"Ext.form.field.ComboBox": {
"idx": 480,
"alias": [
"widget.combo",
"widget.combobox"
],
"alternates": [
"Ext.form.ComboBox"
]
},
"Ext.form.field.Date": {
"idx": 483,
"alias": [
"widget.datefield"
],
"alternates": [
"Ext.form.DateField",
"Ext.form.Date"
]
},
"Ext.form.field.Display": {
"idx": 359,
"alias": [
"widget.displayfield"
],
"alternates": [
"Ext.form.DisplayField",
"Ext.form.Display"
]
},
"Ext.form.field.Field": {
"idx": 357,
"alias": [],
"alternates": []
},
"Ext.form.field.File": {
"idx": 486,
"alias": [
"widget.filefield",
"widget.fileuploadfield"
],
"alternates": [
"Ext.form.FileUploadField",
"Ext.ux.form.FileUploadField",
"Ext.form.File"
]
},
"Ext.form.field.FileButton": {
"idx": 484,
"alias": [
"widget.filebutton"
],
"alternates": []
},
"Ext.form.field.Hidden": {
"idx": 487,
"alias": [
"widget.hidden",
"widget.hiddenfield"
],
"alternates": [
"Ext.form.Hidden"
]
},
"Ext.form.field.HtmlEditor": {
"idx": 492,
"alias": [
"widget.htmleditor"
],
"alternates": [
"Ext.form.HtmlEditor"
]
},
"Ext.form.field.Number": {
"idx": 477,
"alias": [
"widget.numberfield"
],
"alternates": [
"Ext.form.NumberField",
"Ext.form.Number"
]
},
"Ext.form.field.Picker": {
"idx": 470,
"alias": [
"widget.pickerfield"
],
"alternates": [
"Ext.form.Picker"
]
},
"Ext.form.field.Radio": {
"idx": 464,
"alias": [
"widget.radio",
"widget.radiofield"
],
"alternates": [
"Ext.form.Radio"
]
},
"Ext.form.field.Spinner": {
"idx": 476,
"alias": [
"widget.spinnerfield"
],
"alternates": [
"Ext.form.Spinner"
]
},
"Ext.form.field.Tag": {
"idx": 493,
"alias": [
"widget.tagfield"
],
"alternates": []
},
"Ext.form.field.Text": {
"idx": 401,
"alias": [
"widget.textfield"
],
"alternates": [
"Ext.form.TextField",
"Ext.form.Text"
]
},
"Ext.form.field.TextArea": {
"idx": 452,
"alias": [
"widget.textarea",
"widget.textareafield"
],
"alternates": [
"Ext.form.TextArea"
]
},
"Ext.form.field.Time": {
"idx": 495,
"alias": [
"widget.timefield"
],
"alternates": [
"Ext.form.TimeField",
"Ext.form.Time"
]
},
"Ext.form.field.Trigger": {
"idx": 496,
"alias": [
"widget.trigger",
"widget.triggerfield"
],
"alternates": [
"Ext.form.TriggerField",
"Ext.form.TwinTriggerField",
"Ext.form.Trigger"
]
},
"Ext.form.field.VTypes": {
"idx": 399,
"alias": [],
"alternates": [
"Ext.form.VTypes"
]
},
"Ext.form.trigger.Component": {
"idx": 485,
"alias": [
"trigger.component"
],
"alternates": []
},
"Ext.form.trigger.Spinner": {
"idx": 475,
"alias": [
"trigger.spinner"
],
"alternates": []
},
"Ext.form.trigger.Trigger": {
"idx": 400,
"alias": [
"trigger.trigger"
],
"alternates": []
},
"Ext.fx.Anim": {
"idx": 66,
"alias": [],
"alternates": []
},
"Ext.fx.Animation": {
"idx": 269,
"alias": [],
"alternates": []
},
"Ext.fx.Animator": {
"idx": 61,
"alias": [],
"alternates": []
},
"Ext.fx.CubicBezier": {
"idx": 62,
"alias": [],
"alternates": []
},
"Ext.fx.DrawPath": {
"idx": 64,
"alias": [],
"alternates": []
},
"Ext.fx.Easing": {
"idx": 63,
"alias": [],
"alternates": []
},
"Ext.fx.Manager": {
"idx": 60,
"alias": [],
"alternates": []
},
"Ext.fx.PropertyHandler": {
"idx": 65,
"alias": [],
"alternates": []
},
"Ext.fx.Queue": {
"idx": 59,
"alias": [],
"alternates": []
},
"Ext.fx.Runner": {
"idx": 272,
"alias": [],
"alternates": []
},
"Ext.fx.State": {
"idx": 260,
"alias": [],
"alternates": []
},
"Ext.fx.animation.Abstract": {
"idx": 261,
"alias": [],
"alternates": []
},
"Ext.fx.animation.Cube": {
"idx": 273,
"alias": [
"animation.cube"
],
"alternates": []
},
"Ext.fx.animation.Fade": {
"idx": 264,
"alias": [
"animation.fade",
"animation.fadeIn"
],
"alternates": [
"Ext.fx.animation.FadeIn"
]
},
"Ext.fx.animation.FadeOut": {
"idx": 265,
"alias": [
"animation.fadeOut"
],
"alternates": []
},
"Ext.fx.animation.Flip": {
"idx": 266,
"alias": [
"animation.flip"
],
"alternates": []
},
"Ext.fx.animation.Pop": {
"idx": 267,
"alias": [
"animation.pop",
"animation.popIn"
],
"alternates": [
"Ext.fx.animation.PopIn"
]
},
"Ext.fx.animation.PopOut": {
"idx": 268,
"alias": [
"animation.popOut"
],
"alternates": []
},
"Ext.fx.animation.Slide": {
"idx": 262,
"alias": [
"animation.slide",
"animation.slideIn"
],
"alternates": [
"Ext.fx.animation.SlideIn"
]
},
"Ext.fx.animation.SlideOut": {
"idx": 263,
"alias": [
"animation.slideOut"
],
"alternates": []
},
"Ext.fx.animation.Wipe": {
"idx": 274,
"alias": [],
"alternates": [
"Ext.fx.animation.WipeIn"
]
},
"Ext.fx.animation.WipeOut": {
"idx": 275,
"alias": [],
"alternates": []
},
"Ext.fx.easing.Abstract": {
"idx": 86,
"alias": [],
"alternates": []
},
"Ext.fx.easing.Bounce": {
"idx": 88,
"alias": [],
"alternates": []
},
"Ext.fx.easing.BoundMomentum": {
"idx": 89,
"alias": [],
"alternates": []
},
"Ext.fx.easing.EaseIn": {
"idx": 276,
"alias": [
"easing.ease-in"
],
"alternates": []
},
"Ext.fx.easing.EaseOut": {
"idx": 91,
"alias": [
"easing.ease-out"
],
"alternates": []
},
"Ext.fx.easing.Easing": {
"idx": 277,
"alias": [],
"alternates": []
},
"Ext.fx.easing.Linear": {
"idx": 90,
"alias": [
"easing.linear"
],
"alternates": []
},
"Ext.fx.easing.Momentum": {
"idx": 87,
"alias": [],
"alternates": []
},
"Ext.fx.layout.Card": {
"idx": 287,
"alias": [],
"alternates": []
},
"Ext.fx.layout.card.Abstract": {
"idx": 278,
"alias": [],
"alternates": []
},
"Ext.fx.layout.card.Cover": {
"idx": 281,
"alias": [
"fx.layout.card.cover"
],
"alternates": []
},
"Ext.fx.layout.card.Cube": {
"idx": 288,
"alias": [
"fx.layout.card.cube"
],
"alternates": []
},
"Ext.fx.layout.card.Fade": {
"idx": 283,
"alias": [
"fx.layout.card.fade"
],
"alternates": []
},
"Ext.fx.layout.card.Flip": {
"idx": 284,
"alias": [
"fx.layout.card.flip"
],
"alternates": []
},
"Ext.fx.layout.card.Pop": {
"idx": 285,
"alias": [
"fx.layout.card.pop"
],
"alternates": []
},
"Ext.fx.layout.card.Reveal": {
"idx": 282,
"alias": [
"fx.layout.card.reveal"
],
"alternates": []
},
"Ext.fx.layout.card.Scroll": {
"idx": 286,
"alias": [
"fx.layout.card.scroll"
],
"alternates": []
},
"Ext.fx.layout.card.ScrollCover": {
"idx": 289,
"alias": [
"fx.layout.card.scrollcover"
],
"alternates": []
},
"Ext.fx.layout.card.ScrollReveal": {
"idx": 290,
"alias": [
"fx.layout.card.scrollreveal"
],
"alternates": []
},
"Ext.fx.layout.card.Slide": {
"idx": 280,
"alias": [
"fx.layout.card.slide"
],
"alternates": []
},
"Ext.fx.layout.card.Style": {
"idx": 279,
"alias": [],
"alternates": []
},
"Ext.fx.runner.Css": {
"idx": 270,
"alias": [],
"alternates": []
},
"Ext.fx.runner.CssAnimation": {
"idx": 291,
"alias": [],
"alternates": []
},
"Ext.fx.runner.CssTransition": {
"idx": 271,
"alias": [],
"alternates": [
"Ext.Animator"
]
},
"Ext.fx.target.Component": {
"idx": 58,
"alias": [],
"alternates": []
},
"Ext.fx.target.CompositeElement": {
"idx": 54,
"alias": [],
"alternates": []
},
"Ext.fx.target.CompositeElementCSS": {
"idx": 55,
"alias": [],
"alternates": []
},
"Ext.fx.target.CompositeSprite": {
"idx": 57,
"alias": [],
"alternates": []
},
"Ext.fx.target.Element": {
"idx": 52,
"alias": [],
"alternates": []
},
"Ext.fx.target.ElementCSS": {
"idx": 53,
"alias": [],
"alternates": []
},
"Ext.fx.target.Sprite": {
"idx": 56,
"alias": [],
"alternates": []
},
"Ext.fx.target.Target": {
"idx": 51,
"alias": [],
"alternates": []
},
"Ext.grid.CellContext": {
"idx": 367,
"alias": [],
"alternates": []
},
"Ext.grid.CellEditor": {
"idx": 497,
"alias": [],
"alternates": []
},
"Ext.grid.ColumnComponentLayout": {
"idx": 393,
"alias": [
"layout.columncomponent"
],
"alternates": []
},
"Ext.grid.ColumnLayout": {
"idx": 380,
"alias": [
"layout.gridcolumn"
],
"alternates": []
},
"Ext.grid.ColumnManager": {
"idx": 498,
"alias": [],
"alternates": [
"Ext.grid.ColumnModel"
]
},
"Ext.grid.NavigationModel": {
"idx": 396,
"alias": [
"view.navigation.grid"
],
"alternates": []
},
"Ext.grid.Panel": {
"idx": 372,
"alias": [
"widget.grid",
"widget.gridpanel"
],
"alternates": [
"Ext.list.ListView",
"Ext.ListView",
"Ext.grid.GridPanel"
]
},
"Ext.grid.RowEditor": {
"idx": 500,
"alias": [
"widget.roweditor"
],
"alternates": []
},
"Ext.grid.RowEditorButtons": {
"idx": 499,
"alias": [
"widget.roweditorbuttons"
],
"alternates": []
},
"Ext.grid.Scroller": {
"idx": 501,
"alias": [],
"alternates": []
},
"Ext.grid.ViewDropZone": {
"idx": 503,
"alias": [],
"alternates": []
},
"Ext.grid.column.Action": {
"idx": 504,
"alias": [
"widget.actioncolumn"
],
"alternates": [
"Ext.grid.ActionColumn"
]
},
"Ext.grid.column.Boolean": {
"idx": 505,
"alias": [
"widget.booleancolumn"
],
"alternates": [
"Ext.grid.BooleanColumn"
]
},
"Ext.grid.column.Check": {
"idx": 506,
"alias": [
"widget.checkcolumn"
],
"alternates": [
"Ext.ux.CheckColumn",
"Ext.grid.column.CheckColumn"
]
},
"Ext.grid.column.Column": {
"idx": 394,
"alias": [
"widget.gridcolumn"
],
"alternates": [
"Ext.grid.Column"
]
},
"Ext.grid.column.Date": {
"idx": 507,
"alias": [
"widget.datecolumn"
],
"alternates": [
"Ext.grid.DateColumn"
]
},
"Ext.grid.column.Number": {
"idx": 508,
"alias": [
"widget.numbercolumn"
],
"alternates": [
"Ext.grid.NumberColumn"
]
},
"Ext.grid.column.RowNumberer": {
"idx": 509,
"alias": [
"widget.rownumberer"
],
"alternates": [
"Ext.grid.RowNumberer"
]
},
"Ext.grid.column.Template": {
"idx": 510,
"alias": [
"widget.templatecolumn"
],
"alternates": [
"Ext.grid.TemplateColumn"
]
},
"Ext.grid.column.Widget": {
"idx": 511,
"alias": [
"widget.widgetcolumn"
],
"alternates": []
},
"Ext.grid.feature.AbstractSummary": {
"idx": 513,
"alias": [
"feature.abstractsummary"
],
"alternates": []
},
"Ext.grid.feature.Feature": {
"idx": 512,
"alias": [
"feature.feature"
],
"alternates": []
},
"Ext.grid.feature.GroupStore": {
"idx": 514,
"alias": [],
"alternates": []
},
"Ext.grid.feature.Grouping": {
"idx": 515,
"alias": [
"feature.grouping"
],
"alternates": []
},
"Ext.grid.feature.GroupingSummary": {
"idx": 516,
"alias": [
"feature.groupingsummary"
],
"alternates": []
},
"Ext.grid.feature.RowBody": {
"idx": 517,
"alias": [
"feature.rowbody"
],
"alternates": []
},
"Ext.grid.feature.Summary": {
"idx": 518,
"alias": [
"feature.summary"
],
"alternates": []
},
"Ext.grid.filters.Filters": {
"idx": 531,
"alias": [
"plugin.gridfilters"
],
"alternates": []
},
"Ext.grid.filters.filter.Base": {
"idx": 523,
"alias": [],
"alternates": []
},
"Ext.grid.filters.filter.Boolean": {
"idx": 525,
"alias": [
"grid.filter.boolean"
],
"alternates": []
},
"Ext.grid.filters.filter.Date": {
"idx": 527,
"alias": [
"grid.filter.date"
],
"alternates": []
},
"Ext.grid.filters.filter.List": {
"idx": 528,
"alias": [
"grid.filter.list"
],
"alternates": []
},
"Ext.grid.filters.filter.Number": {
"idx": 529,
"alias": [
"grid.filter.number",
"grid.filter.numeric"
],
"alternates": []
},
"Ext.grid.filters.filter.SingleFilter": {
"idx": 524,
"alias": [],
"alternates": []
},
"Ext.grid.filters.filter.String": {
"idx": 530,
"alias": [
"grid.filter.string"
],
"alternates": []
},
"Ext.grid.filters.filter.TriFilter": {
"idx": 526,
"alias": [],
"alternates": []
},
"Ext.grid.header.Container": {
"idx": 392,
"alias": [
"widget.headercontainer"
],
"alternates": []
},
"Ext.grid.header.DragZone": {
"idx": 384,
"alias": [],
"alternates": []
},
"Ext.grid.header.DropZone": {
"idx": 390,
"alias": [],
"alternates": []
},
"Ext.grid.locking.HeaderContainer": {
"idx": 532,
"alias": [],
"alternates": []
},
"Ext.grid.locking.Lockable": {
"idx": 534,
"alias": [],
"alternates": [
"Ext.grid.Lockable"
]
},
"Ext.grid.locking.RowSynchronizer": {
"idx": 369,
"alias": [],
"alternates": []
},
"Ext.grid.locking.View": {
"idx": 533,
"alias": [],
"alternates": [
"Ext.grid.LockingView"
]
},
"Ext.grid.plugin.BufferedRenderer": {
"idx": 535,
"alias": [
"plugin.bufferedrenderer"
],
"alternates": []
},
"Ext.grid.plugin.CellEditing": {
"idx": 537,
"alias": [
"plugin.cellediting"
],
"alternates": []
},
"Ext.grid.plugin.Clipboard": {
"idx": 539,
"alias": [
"plugin.clipboard"
],
"alternates": []
},
"Ext.grid.plugin.DragDrop": {
"idx": 540,
"alias": [
"plugin.gridviewdragdrop"
],
"alternates": []
},
"Ext.grid.plugin.Editing": {
"idx": 536,
"alias": [
"editing.editing"
],
"alternates": []
},
"Ext.grid.plugin.HeaderReorderer": {
"idx": 391,
"alias": [
"plugin.gridheaderreorderer"
],
"alternates": []
},
"Ext.grid.plugin.HeaderResizer": {
"idx": 382,
"alias": [
"plugin.gridheaderresizer"
],
"alternates": []
},
"Ext.grid.plugin.RowEditing": {
"idx": 541,
"alias": [
"plugin.rowediting"
],
"alternates": []
},
"Ext.grid.plugin.RowExpander": {
"idx": 542,
"alias": [
"plugin.rowexpander"
],
"alternates": []
},
"Ext.grid.property.Grid": {
"idx": 543,
"alias": [
"widget.propertygrid"
],
"alternates": [
"Ext.grid.PropertyGrid"
]
},
"Ext.grid.property.HeaderContainer": {
"idx": 544,
"alias": [],
"alternates": [
"Ext.grid.PropertyColumnModel"
]
},
"Ext.grid.property.Property": {
"idx": 545,
"alias": [],
"alternates": [
"Ext.PropGridProperty"
]
},
"Ext.grid.property.Reader": {
"idx": 546,
"alias": [],
"alternates": []
},
"Ext.grid.property.Store": {
"idx": 547,
"alias": [],
"alternates": [
"Ext.grid.PropertyStore"
]
},
"Ext.grid.selection.Cells": {
"idx": 549,
"alias": [],
"alternates": []
},
"Ext.grid.selection.Columns": {
"idx": 550,
"alias": [],
"alternates": []
},
"Ext.grid.selection.Rows": {
"idx": 551,
"alias": [],
"alternates": []
},
"Ext.grid.selection.Selection": {
"idx": 548,
"alias": [],
"alternates": []
},
"Ext.grid.selection.SpreadsheetModel": {
"idx": 552,
"alias": [
"selection.spreadsheet"
],
"alternates": []
},
"Ext.layout.Context": {
"idx": 555,
"alias": [],
"alternates": []
},
"Ext.layout.ContextItem": {
"idx": 554,
"alias": [],
"alternates": []
},
"Ext.layout.Layout": {
"idx": 312,
"alias": [],
"alternates": []
},
"Ext.layout.SizeModel": {
"idx": 311,
"alias": [],
"alternates": []
},
"Ext.layout.component.Auto": {
"idx": 325,
"alias": [
"layout.autocomponent"
],
"alternates": []
},
"Ext.layout.component.Body": {
"idx": 411,
"alias": [
"layout.body"
],
"alternates": []
},
"Ext.layout.component.BoundList": {
"idx": 472,
"alias": [
"layout.boundlist"
],
"alternates": []
},
"Ext.layout.component.Component": {
"idx": 324,
"alias": [],
"alternates": []
},
"Ext.layout.component.Dock": {
"idx": 352,
"alias": [
"layout.dock"
],
"alternates": [
"Ext.layout.component.AbstractDock"
]
},
"Ext.layout.component.FieldSet": {
"idx": 557,
"alias": [
"layout.fieldset"
],
"alternates": []
},
"Ext.layout.component.ProgressBar": {
"idx": 326,
"alias": [
"layout.progressbar"
],
"alternates": []
},
"Ext.layout.component.field.FieldContainer": {
"idx": 456,
"alias": [
"layout.fieldcontainer"
],
"alternates": []
},
"Ext.layout.component.field.HtmlEditor": {
"idx": 489,
"alias": [
"layout.htmleditor"
],
"alternates": []
},
"Ext.layout.container.Absolute": {
"idx": 558,
"alias": [
"layout.absolute"
],
"alternates": [
"Ext.layout.AbsoluteLayout"
]
},
"Ext.layout.container.Accordion": {
"idx": 559,
"alias": [
"layout.accordion"
],
"alternates": [
"Ext.layout.AccordionLayout"
]
},
"Ext.layout.container.Anchor": {
"idx": 434,
"alias": [
"layout.anchor"
],
"alternates": [
"Ext.layout.AnchorLayout"
]
},
"Ext.layout.container.Auto": {
"idx": 314,
"alias": [
"layout.auto",
"layout.autocontainer"
],
"alternates": []
},
"Ext.layout.container.Border": {
"idx": 404,
"alias": [
"layout.border"
],
"alternates": [
"Ext.layout.BorderLayout"
]
},
"Ext.layout.container.Box": {
"idx": 338,
"alias": [
"layout.box"
],
"alternates": [
"Ext.layout.BoxLayout"
]
},
"Ext.layout.container.Card": {
"idx": 405,
"alias": [
"layout.card"
],
"alternates": [
"Ext.layout.CardLayout"
]
},
"Ext.layout.container.Center": {
"idx": 560,
"alias": [
"layout.center",
"layout.ux.center"
],
"alternates": [
"Ext.ux.layout.Center"
]
},
"Ext.layout.container.CheckboxGroup": {
"idx": 458,
"alias": [
"layout.checkboxgroup"
],
"alternates": []
},
"Ext.layout.container.Column": {
"idx": 437,
"alias": [
"layout.column"
],
"alternates": [
"Ext.layout.ColumnLayout"
]
},
"Ext.layout.container.ColumnSplitter": {
"idx": 440,
"alias": [
"widget.columnsplitter"
],
"alternates": []
},
"Ext.layout.container.ColumnSplitterTracker": {
"idx": 439,
"alias": [],
"alternates": []
},
"Ext.layout.container.Container": {
"idx": 313,
"alias": [
"layout.container"
],
"alternates": [
"Ext.layout.ContainerLayout"
]
},
"Ext.layout.container.Dashboard": {
"idx": 441,
"alias": [
"layout.dashboard"
],
"alternates": []
},
"Ext.layout.container.Editor": {
"idx": 317,
"alias": [
"layout.editor"
],
"alternates": []
},
"Ext.layout.container.Fit": {
"idx": 360,
"alias": [
"layout.fit"
],
"alternates": [
"Ext.layout.FitLayout"
]
},
"Ext.layout.container.Form": {
"idx": 561,
"alias": [
"layout.form"
],
"alternates": [
"Ext.layout.FormLayout"
]
},
"Ext.layout.container.HBox": {
"idx": 339,
"alias": [
"layout.hbox"
],
"alternates": [
"Ext.layout.HBoxLayout"
]
},
"Ext.layout.container.SegmentedButton": {
"idx": 562,
"alias": [
"layout.segmentedbutton"
],
"alternates": []
},
"Ext.layout.container.Table": {
"idx": 428,
"alias": [
"layout.table"
],
"alternates": [
"Ext.layout.TableLayout"
]
},
"Ext.layout.container.VBox": {
"idx": 340,
"alias": [
"layout.vbox"
],
"alternates": [
"Ext.layout.VBoxLayout"
]
},
"Ext.layout.container.border.Region": {
"idx": 110,
"alias": [],
"alternates": []
},
"Ext.layout.container.boxOverflow.Menu": {
"idx": 491,
"alias": [
"box.overflow.Menu",
"box.overflow.menu"
],
"alternates": [
"Ext.layout.boxOverflow.Menu"
]
},
"Ext.layout.container.boxOverflow.None": {
"idx": 333,
"alias": [
"box.overflow.None",
"box.overflow.none"
],
"alternates": [
"Ext.layout.boxOverflow.None"
]
},
"Ext.layout.container.boxOverflow.Scroller": {
"idx": 335,
"alias": [
"box.overflow.Scroller",
"box.overflow.scroller"
],
"alternates": [
"Ext.layout.boxOverflow.Scroller"
]
},
"Ext.menu.CheckItem": {
"idx": 520,
"alias": [
"widget.menucheckitem"
],
"alternates": []
},
"Ext.menu.ColorPicker": {
"idx": 563,
"alias": [
"widget.colormenu"
],
"alternates": []
},
"Ext.menu.DatePicker": {
"idx": 564,
"alias": [
"widget.datemenu"
],
"alternates": []
},
"Ext.menu.Item": {
"idx": 519,
"alias": [
"widget.menuitem"
],
"alternates": [
"Ext.menu.TextItem"
]
},
"Ext.menu.Manager": {
"idx": 408,
"alias": [],
"alternates": [
"Ext.menu.MenuMgr"
]
},
"Ext.menu.Menu": {
"idx": 522,
"alias": [
"widget.menu"
],
"alternates": []
},
"Ext.menu.Separator": {
"idx": 521,
"alias": [
"widget.menuseparator"
],
"alternates": []
},
"Ext.mixin.Bindable": {
"idx": 75,
"alias": [],
"alternates": []
},
"Ext.mixin.Factoryable": {
"idx": 84,
"alias": [],
"alternates": []
},
"Ext.mixin.Hookable": {
"idx": 292,
"alias": [],
"alternates": []
},
"Ext.mixin.Identifiable": {
"idx": 3,
"alias": [],
"alternates": []
},
"Ext.mixin.Inheritable": {
"idx": 74,
"alias": [],
"alternates": []
},
"Ext.mixin.Mashup": {
"idx": 293,
"alias": [],
"alternates": []
},
"Ext.mixin.Observable": {
"idx": 4,
"alias": [],
"alternates": []
},
"Ext.mixin.Queryable": {
"idx": 215,
"alias": [],
"alternates": []
},
"Ext.mixin.Responsive": {
"idx": 294,
"alias": [],
"alternates": []
},
"Ext.mixin.Selectable": {
"idx": 295,
"alias": [],
"alternates": []
},
"Ext.mixin.Templatable": {
"idx": 30,
"alias": [],
"alternates": []
},
"Ext.mixin.Traversable": {
"idx": 296,
"alias": [],
"alternates": []
},
"Ext.panel.Bar": {
"idx": 329,
"alias": [],
"alternates": []
},
"Ext.panel.DD": {
"idx": 351,
"alias": [],
"alternates": []
},
"Ext.panel.Header": {
"idx": 332,
"alias": [
"widget.header"
],
"alternates": []
},
"Ext.panel.Panel": {
"idx": 355,
"alias": [
"widget.panel"
],
"alternates": [
"Ext.Panel"
]
},
"Ext.panel.Pinnable": {
"idx": 565,
"alias": [],
"alternates": []
},
"Ext.panel.Proxy": {
"idx": 350,
"alias": [],
"alternates": [
"Ext.dd.PanelProxy"
]
},
"Ext.panel.Table": {
"idx": 361,
"alias": [
"widget.tablepanel"
],
"alternates": []
},
"Ext.panel.Title": {
"idx": 330,
"alias": [
"widget.title"
],
"alternates": []
},
"Ext.panel.Tool": {
"idx": 331,
"alias": [
"widget.tool"
],
"alternates": []
},
"Ext.perf.Accumulator": {
"idx": 297,
"alias": [],
"alternates": []
},
"Ext.perf.Monitor": {
"idx": 298,
"alias": [],
"alternates": [
"Ext.Perf"
]
},
"Ext.picker.Color": {
"idx": 488,
"alias": [
"widget.colorpicker"
],
"alternates": [
"Ext.ColorPalette"
]
},
"Ext.picker.Date": {
"idx": 482,
"alias": [
"widget.datepicker"
],
"alternates": [
"Ext.DatePicker"
]
},
"Ext.picker.Month": {
"idx": 481,
"alias": [
"widget.monthpicker"
],
"alternates": [
"Ext.MonthPicker"
]
},
"Ext.picker.Time": {
"idx": 494,
"alias": [
"widget.timepicker"
],
"alternates": []
},
"Ext.plugin.Abstract": {
"idx": 299,
"alias": [],
"alternates": [
"Ext.AbstractPlugin"
]
},
"Ext.plugin.AbstractClipboard": {
"idx": 538,
"alias": [],
"alternates": []
},
"Ext.plugin.LazyItems": {
"idx": 300,
"alias": [
"plugin.lazyitems"
],
"alternates": []
},
"Ext.plugin.Manager": {
"idx": 566,
"alias": [],
"alternates": [
"Ext.PluginManager",
"Ext.PluginMgr"
]
},
"Ext.plugin.Responsive": {
"idx": 431,
"alias": [
"plugin.responsive"
],
"alternates": []
},
"Ext.plugin.Viewport": {
"idx": 432,
"alias": [
"plugin.viewport"
],
"alternates": []
},
"Ext.resizer.BorderSplitter": {
"idx": 403,
"alias": [
"widget.bordersplitter"
],
"alternates": []
},
"Ext.resizer.BorderSplitterTracker": {
"idx": 567,
"alias": [],
"alternates": []
},
"Ext.resizer.Handle": {
"idx": 568,
"alias": [],
"alternates": []
},
"Ext.resizer.ResizeTracker": {
"idx": 569,
"alias": [],
"alternates": []
},
"Ext.resizer.Resizer": {
"idx": 570,
"alias": [],
"alternates": [
"Ext.Resizable"
]
},
"Ext.resizer.Splitter": {
"idx": 337,
"alias": [
"widget.splitter"
],
"alternates": []
},
"Ext.resizer.SplitterTracker": {
"idx": 438,
"alias": [],
"alternates": []
},
"Ext.scroll.DomScroller": {
"idx": 101,
"alias": [
"scroller.dom"
],
"alternates": []
},
"Ext.scroll.Indicator": {
"idx": 99,
"alias": [
"widget.scrollindicator"
],
"alternates": []
},
"Ext.scroll.Scroller": {
"idx": 85,
"alias": [
"scroller.scroller"
],
"alternates": []
},
"Ext.scroll.TouchScroller": {
"idx": 100,
"alias": [
"scroller.touch"
],
"alternates": []
},
"Ext.selection.CellModel": {
"idx": 571,
"alias": [
"selection.cellmodel"
],
"alternates": []
},
"Ext.selection.CheckboxModel": {
"idx": 572,
"alias": [
"selection.checkboxmodel"
],
"alternates": []
},
"Ext.selection.DataViewModel": {
"idx": 363,
"alias": [
"selection.dataviewmodel"
],
"alternates": []
},
"Ext.selection.Model": {
"idx": 362,
"alias": [
"selection.abstract"
],
"alternates": [
"Ext.AbstractSelectionModel"
]
},
"Ext.selection.RowModel": {
"idx": 378,
"alias": [
"selection.rowmodel"
],
"alternates": []
},
"Ext.selection.TreeModel": {
"idx": 379,
"alias": [
"selection.treemodel"
],
"alternates": []
},
"Ext.slider.Multi": {
"idx": 575,
"alias": [
"widget.multislider"
],
"alternates": [
"Ext.slider.MultiSlider"
]
},
"Ext.slider.Single": {
"idx": 576,
"alias": [
"widget.slider",
"widget.sliderfield"
],
"alternates": [
"Ext.Slider",
"Ext.form.SliderField",
"Ext.slider.SingleSlider",
"Ext.slider.Slider"
]
},
"Ext.slider.Thumb": {
"idx": 573,
"alias": [],
"alternates": []
},
"Ext.slider.Tip": {
"idx": 574,
"alias": [
"widget.slidertip"
],
"alternates": []
},
"Ext.slider.Widget": {
"idx": 577,
"alias": [
"widget.sliderwidget"
],
"alternates": []
},
"Ext.sparkline.Bar": {
"idx": 585,
"alias": [
"widget.sparklinebar"
],
"alternates": []
},
"Ext.sparkline.BarBase": {
"idx": 583,
"alias": [],
"alternates": []
},
"Ext.sparkline.Base": {
"idx": 582,
"alias": [],
"alternates": []
},
"Ext.sparkline.Box": {
"idx": 586,
"alias": [
"widget.sparklinebox"
],
"alternates": []
},
"Ext.sparkline.Bullet": {
"idx": 587,
"alias": [
"widget.sparklinebullet"
],
"alternates": []
},
"Ext.sparkline.CanvasBase": {
"idx": 579,
"alias": [],
"alternates": []
},
"Ext.sparkline.CanvasCanvas": {
"idx": 580,
"alias": [],
"alternates": []
},
"Ext.sparkline.Discrete": {
"idx": 588,
"alias": [
"widget.sparklinediscrete"
],
"alternates": []
},
"Ext.sparkline.Line": {
"idx": 589,
"alias": [
"widget.sparklineline"
],
"alternates": []
},
"Ext.sparkline.Pie": {
"idx": 590,
"alias": [
"widget.sparklinepie"
],
"alternates": []
},
"Ext.sparkline.RangeMap": {
"idx": 584,
"alias": [],
"alternates": []
},
"Ext.sparkline.Shape": {
"idx": 578,
"alias": [],
"alternates": []
},
"Ext.sparkline.TriState": {
"idx": 591,
"alias": [
"widget.sparklinetristate"
],
"alternates": []
},
"Ext.sparkline.VmlCanvas": {
"idx": 581,
"alias": [],
"alternates": []
},
"Ext.state.CookieProvider": {
"idx": 592,
"alias": [],
"alternates": []
},
"Ext.state.LocalStorageProvider": {
"idx": 593,
"alias": [
"state.localstorage"
],
"alternates": []
},
"Ext.state.Manager": {
"idx": 106,
"alias": [],
"alternates": []
},
"Ext.state.Provider": {
"idx": 105,
"alias": [],
"alternates": []
},
"Ext.state.Stateful": {
"idx": 107,
"alias": [],
"alternates": []
},
"Ext.tab.Bar": {
"idx": 412,
"alias": [
"widget.tabbar"
],
"alternates": []
},
"Ext.tab.Panel": {
"idx": 413,
"alias": [
"widget.tabpanel"
],
"alternates": [
"Ext.TabPanel"
]
},
"Ext.tab.Tab": {
"idx": 410,
"alias": [
"widget.tab"
],
"alternates": []
},
"Ext.tip.QuickTip": {
"idx": 422,
"alias": [
"widget.quicktip"
],
"alternates": [
"Ext.QuickTip"
]
},
"Ext.tip.QuickTipManager": {
"idx": 423,
"alias": [],
"alternates": [
"Ext.QuickTips"
]
},
"Ext.tip.Tip": {
"idx": 420,
"alias": [
"widget.tip"
],
"alternates": [
"Ext.Tip"
]
},
"Ext.tip.ToolTip": {
"idx": 421,
"alias": [
"widget.tooltip"
],
"alternates": [
"Ext.ToolTip"
]
},
"Ext.toolbar.Breadcrumb": {
"idx": 594,
"alias": [
"widget.breadcrumb"
],
"alternates": []
},
"Ext.toolbar.Fill": {
"idx": 595,
"alias": [
"widget.tbfill"
],
"alternates": [
"Ext.Toolbar.Fill"
]
},
"Ext.toolbar.Item": {
"idx": 473,
"alias": [
"widget.tbitem"
],
"alternates": [
"Ext.Toolbar.Item"
]
},
"Ext.toolbar.Paging": {
"idx": 478,
"alias": [
"widget.pagingtoolbar"
],
"alternates": [
"Ext.PagingToolbar"
]
},
"Ext.toolbar.Separator": {
"idx": 490,
"alias": [
"widget.tbseparator"
],
"alternates": [
"Ext.Toolbar.Separator"
]
},
"Ext.toolbar.Spacer": {
"idx": 596,
"alias": [
"widget.tbspacer"
],
"alternates": [
"Ext.Toolbar.Spacer"
]
},
"Ext.toolbar.TextItem": {
"idx": 474,
"alias": [
"widget.tbtext"
],
"alternates": [
"Ext.Toolbar.TextItem"
]
},
"Ext.toolbar.Toolbar": {
"idx": 344,
"alias": [
"widget.toolbar"
],
"alternates": [
"Ext.Toolbar"
]
},
"Ext.tree.Column": {
"idx": 395,
"alias": [
"widget.treecolumn"
],
"alternates": []
},
"Ext.tree.NavigationModel": {
"idx": 397,
"alias": [
"view.navigation.tree"
],
"alternates": []
},
"Ext.tree.Panel": {
"idx": 398,
"alias": [
"widget.treepanel"
],
"alternates": [
"Ext.tree.TreePanel",
"Ext.TreePanel"
]
},
"Ext.tree.View": {
"idx": 377,
"alias": [
"widget.treeview"
],
"alternates": []
},
"Ext.tree.ViewDragZone": {
"idx": 598,
"alias": [],
"alternates": []
},
"Ext.tree.ViewDropZone": {
"idx": 599,
"alias": [],
"alternates": []
},
"Ext.tree.plugin.TreeViewDragDrop": {
"idx": 600,
"alias": [
"plugin.treeviewdragdrop"
],
"alternates": []
},
"Ext.util.AbstractMixedCollection": {
"idx": 46,
"alias": [],
"alternates": []
},
"Ext.util.Animate": {
"idx": 67,
"alias": [],
"alternates": []
},
"Ext.util.Bag": {
"idx": 176,
"alias": [],
"alternates": []
},
"Ext.util.Base64": {
"idx": 301,
"alias": [],
"alternates": []
},
"Ext.util.CSS": {
"idx": 601,
"alias": [],
"alternates": []
},
"Ext.util.CSV": {
"idx": 303,
"alias": [],
"alternates": []
},
"Ext.util.ClickRepeater": {
"idx": 334,
"alias": [],
"alternates": []
},
"Ext.util.Collection": {
"idx": 117,
"alias": [],
"alternates": []
},
"Ext.util.CollectionKey": {
"idx": 115,
"alias": [],
"alternates": []
},
"Ext.util.ComponentDragger": {
"idx": 418,
"alias": [],
"alternates": []
},
"Ext.util.Cookies": {
"idx": 602,
"alias": [],
"alternates": []
},
"Ext.util.DelimitedValue": {
"idx": 302,
"alias": [],
"alternates": []
},
"Ext.util.ElementContainer": {
"idx": 103,
"alias": [],
"alternates": []
},
"Ext.util.Event": {
"idx": 2,
"alias": [],
"alternates": []
},
"Ext.util.Filter": {
"idx": 44,
"alias": [],
"alternates": []
},
"Ext.util.FilterCollection": {
"idx": 160,
"alias": [],
"alternates": []
},
"Ext.util.Floating": {
"idx": 102,
"alias": [],
"alternates": []
},
"Ext.util.Focusable": {
"idx": 108,
"alias": [],
"alternates": []
},
"Ext.util.FocusableContainer": {
"idx": 343,
"alias": [],
"alternates": []
},
"Ext.util.Format": {
"idx": 72,
"alias": [],
"alternates": []
},
"Ext.util.Group": {
"idx": 158,
"alias": [],
"alternates": []
},
"Ext.util.GroupCollection": {
"idx": 161,
"alias": [],
"alternates": []
},
"Ext.util.Grouper": {
"idx": 116,
"alias": [],
"alternates": []
},
"Ext.util.HashMap": {
"idx": 5,
"alias": [],
"alternates": []
},
"Ext.util.History": {
"idx": 169,
"alias": [],
"alternates": [
"Ext.History"
]
},
"Ext.util.Inflector": {
"idx": 124,
"alias": [],
"alternates": []
},
"Ext.util.KeyMap": {
"idx": 341,
"alias": [],
"alternates": [
"Ext.KeyMap"
]
},
"Ext.util.KeyNav": {
"idx": 342,
"alias": [],
"alternates": [
"Ext.KeyNav"
]
},
"Ext.util.LocalStorage": {
"idx": 304,
"alias": [],
"alternates": []
},
"Ext.util.LruCache": {
"idx": 13,
"alias": [],
"alternates": []
},
"Ext.util.Memento": {
"idx": 353,
"alias": [],
"alternates": []
},
"Ext.util.MixedCollection": {
"idx": 49,
"alias": [],
"alternates": []
},
"Ext.util.ObjectTemplate": {
"idx": 118,
"alias": [],
"alternates": []
},
"Ext.util.Observable": {
"idx": 45,
"alias": [],
"alternates": []
},
"Ext.util.Offset": {
"idx": 23,
"alias": [],
"alternates": []
},
"Ext.util.PaintMonitor": {
"idx": 41,
"alias": [],
"alternates": []
},
"Ext.util.Point": {
"idx": 25,
"alias": [],
"alternates": []
},
"Ext.util.Positionable": {
"idx": 16,
"alias": [],
"alternates": []
},
"Ext.util.ProtoElement": {
"idx": 82,
"alias": [],
"alternates": []
},
"Ext.util.Queue": {
"idx": 553,
"alias": [],
"alternates": []
},
"Ext.util.Region": {
"idx": 24,
"alias": [],
"alternates": []
},
"Ext.util.Renderable": {
"idx": 104,
"alias": [],
"alternates": []
},
"Ext.util.Schedulable": {
"idx": 186,
"alias": [],
"alternates": []
},
"Ext.util.Scheduler": {
"idx": 177,
"alias": [],
"alternates": []
},
"Ext.util.SizeMonitor": {
"idx": 36,
"alias": [],
"alternates": []
},
"Ext.util.Sortable": {
"idx": 48,
"alias": [],
"alternates": []
},
"Ext.util.Sorter": {
"idx": 47,
"alias": [],
"alternates": []
},
"Ext.util.SorterCollection": {
"idx": 159,
"alias": [],
"alternates": []
},
"Ext.util.StoreHolder": {
"idx": 322,
"alias": [],
"alternates": []
},
"Ext.util.TSV": {
"idx": 305,
"alias": [],
"alternates": []
},
"Ext.util.TaskManager": {
"idx": 306,
"alias": [],
"alternates": [
"Ext.TaskManager"
]
},
"Ext.util.TaskRunner": {
"idx": 50,
"alias": [],
"alternates": []
},
"Ext.util.TextMetrics": {
"idx": 307,
"alias": [],
"alternates": []
},
"Ext.util.Translatable": {
"idx": 98,
"alias": [],
"alternates": []
},
"Ext.util.XTemplateCompiler": {
"idx": 78,
"alias": [],
"alternates": []
},
"Ext.util.XTemplateParser": {
"idx": 77,
"alias": [],
"alternates": []
},
"Ext.util.paintmonitor.Abstract": {
"idx": 38,
"alias": [],
"alternates": []
},
"Ext.util.paintmonitor.CssAnimation": {
"idx": 39,
"alias": [],
"alternates": []
},
"Ext.util.paintmonitor.OverflowChange": {
"idx": 40,
"alias": [],
"alternates": []
},
"Ext.util.sizemonitor.Abstract": {
"idx": 32,
"alias": [],
"alternates": []
},
"Ext.util.sizemonitor.Default": {
"idx": 33,
"alias": [],
"alternates": []
},
"Ext.util.sizemonitor.OverflowChange": {
"idx": 35,
"alias": [],
"alternates": []
},
"Ext.util.sizemonitor.Scroll": {
"idx": 34,
"alias": [],
"alternates": []
},
"Ext.util.translatable.Abstract": {
"idx": 92,
"alias": [],
"alternates": []
},
"Ext.util.translatable.CssPosition": {
"idx": 97,
"alias": [],
"alternates": []
},
"Ext.util.translatable.CssTransform": {
"idx": 94,
"alias": [],
"alternates": []
},
"Ext.util.translatable.Dom": {
"idx": 93,
"alias": [],
"alternates": []
},
"Ext.util.translatable.ScrollParent": {
"idx": 96,
"alias": [],
"alternates": []
},
"Ext.util.translatable.ScrollPosition": {
"idx": 95,
"alias": [],
"alternates": []
},
"Ext.view.AbstractView": {
"idx": 365,
"alias": [],
"alternates": []
},
"Ext.view.BoundList": {
"idx": 479,
"alias": [
"widget.boundlist"
],
"alternates": [
"Ext.BoundList"
]
},
"Ext.view.BoundListKeyNav": {
"idx": 471,
"alias": [
"view.navigation.boundlist"
],
"alternates": []
},
"Ext.view.DragZone": {
"idx": 597,
"alias": [],
"alternates": []
},
"Ext.view.DropZone": {
"idx": 502,
"alias": [],
"alternates": []
},
"Ext.view.MultiSelector": {
"idx": 604,
"alias": [
"widget.multiselector"
],
"alternates": []
},
"Ext.view.MultiSelectorSearch": {
"idx": 603,
"alias": [
"widget.multiselector-search"
],
"alternates": []
},
"Ext.view.NavigationModel": {
"idx": 364,
"alias": [
"view.navigation.default"
],
"alternates": []
},
"Ext.view.NodeCache": {
"idx": 370,
"alias": [],
"alternates": []
},
"Ext.view.Table": {
"idx": 371,
"alias": [
"widget.gridview",
"widget.tableview"
],
"alternates": [
"Ext.grid.View"
]
},
"Ext.view.TableLayout": {
"idx": 368,
"alias": [
"layout.tableview"
],
"alternates": []
},
"Ext.view.View": {
"idx": 366,
"alias": [
"widget.dataview"
],
"alternates": [
"Ext.DataView"
]
},
"Ext.window.MessageBox": {
"idx": 453,
"alias": [
"widget.messagebox"
],
"alternates": []
},
"Ext.window.Toast": {
"idx": 605,
"alias": [
"widget.toast"
],
"alternates": []
},
"Ext.window.Window": {
"idx": 419,
"alias": [
"widget.window"
],
"alternates": [
"Ext.Window"
]
}
},
"packages": {
"ext": {
"creator": "Sencha",
"output": "${package.dir}/build",
"requires": [
"sencha-core",
"ext",
"ext",
"ext",
"ext",
"ext",
"ext"
],
"type": "framework",
"version": "5.1.1.451"
},
"sencha-core": {
"creator": "Sencha",
"output": "${package.dir}/build",
"requires": [],
"slicer": {
"js": []
},
"type": "code",
"version": "5.0.0"
}
},
"bootRelative": true
});
var Ext = Ext || {};
Ext.Boot = Ext.Boot || (function(emptyFn) {
var doc = document,
apply = function(dest, src, defaults) {
if (defaults) {
apply(dest, defaults);
}
if (dest && src && typeof src == 'object') {
for (var key in src) {
dest[key] = src[key];
}
}
return dest;
},
_config = {
disableCaching: (/[?&](?:cache|disableCacheBuster)\b/i.test(location.search) || !(/http[s]?\:/i.test(location.href)) || /(^|[ ;])ext-cache=1/.test(doc.cookie)) ? false : true,
disableCachingParam: '_dc',
loadDelay: false,
preserveScripts: true,
charset: undefined
},
cssRe = /\.css(?:\?|$)/i,
resolverEl = doc.createElement('a'),
isBrowser = typeof window !== 'undefined',
_environment = {
browser: isBrowser,
node: !isBrowser && (typeof require === 'function'),
phantom: (typeof phantom !== 'undefined' && phantom.fs)
},
_tags = (Ext.platformTags = {}),
_debug = function(message) {},
_apply = function(object, config, defaults) {
if (defaults) {
_apply(object, defaults);
}
if (object && config && typeof config === 'object') {
for (var i in config) {
object[i] = config[i];
}
}
return object;
},
Boot = {
loading: 0,
loaded: 0,
env: _environment,
config: _config,
scripts: {},
currentFile: null,
suspendedQueue: [],
currentRequest: null,
syncMode: false,
debug: _debug,
useElements: true,
listeners: [],
Request: Request,
Entry: Entry,
detectPlatformTags: function() {
var ua = navigator.userAgent,
isMobile = _tags.isMobile = /Mobile(\/|\s)/.test(ua),
isPhone, isDesktop, isTablet, touchSupported, isIE10, isBlackberry,
element = document.createElement('div'),
uaTagChecks = [
'iPhone',
'iPod',
'Android',
'Silk',
'Android 2',
'BlackBerry',
'BB',
'iPad',
'RIM Tablet OS',
'MSIE 10',
'Trident',
'Chrome',
'Tizen',
'Firefox',
'Safari',
'Windows Phone'
],
isEventSupported = function(name, tag) {
if (tag === undefined) {
tag = window;
}
var eventName = 'on' + name.toLowerCase(),
isSupported = (eventName in element);
if (!isSupported) {
if (element.setAttribute && element.removeAttribute) {
element.setAttribute(eventName, '');
isSupported = typeof element[eventName] === 'function';
if (typeof element[eventName] !== 'undefined') {
element[eventName] = undefined;
}
element.removeAttribute(eventName);
}
}
return isSupported;
},
uaTags = {},
len = uaTagChecks.length,
check, c;
for (c = 0; c < len; c++) {
check = uaTagChecks[c];
uaTags[check] = new RegExp(check).test(ua);
}
isPhone = (uaTags.iPhone || uaTags.iPod) || (!uaTags.Silk && (uaTags.Android && (uaTags['Android 2'] || isMobile))) || ((uaTags.BlackBerry || uaTags.BB) && uaTags.isMobile) || (uaTags['Windows Phone']);
isTablet = (!_tags.isPhone) && (uaTags.iPad || uaTags.Android || uaTags.Silk || uaTags['RIM Tablet OS'] || (uaTags['MSIE 10'] && /; Touch/.test(ua)));
touchSupported =
isEventSupported('touchend') ||
navigator.maxTouchPoints ||
navigator.msMaxTouchPoints;
isDesktop = !isPhone && !isTablet;
isIE10 = uaTags['MSIE 10'];
isBlackberry = uaTags.Blackberry || uaTags.BB;
apply(_tags, Boot.loadPlatformsParam(), {
phone: isPhone,
tablet: isTablet,
desktop: isDesktop,
touch: touchSupported,
ios: (uaTags.iPad || uaTags.iPhone || uaTags.iPod),
android: uaTags.Android || uaTags.Silk,
blackberry: isBlackberry,
safari: uaTags.Safari && !isBlackberry,
chrome: uaTags.Chrome,
ie10: isIE10,
windows: isIE10 || uaTags.Trident,
tizen: uaTags.Tizen,
firefox: uaTags.Firefox
});
},
loadPlatformsParam: function() {
var paramsString = window.location.search.substr(1),
paramsArray = paramsString.split("&"),
params = {},
i,
platforms = {},
tmpArray, tmplen, platform, name, enabled;
for (i = 0; i < paramsArray.length; i++) {
tmpArray = paramsArray[i].split("=");
params[tmpArray[0]] = tmpArray[1];
}
if (params.platformTags) {
tmpArray = params.platform.split(/\W/);
for (tmplen = tmpArray.length , i = 0; i < tmplen; i++) {
platform = tmpArray[i].split(":");
name = platform[0];
if (platform.length > 1) {
enabled = platform[1];
if (enabled === 'false' || enabled === '0') {
enabled = false;
} else {
enabled = true;
}
}
platforms[name] = enabled;
}
}
return platform;
},
filterPlatform: function(platform) {
platform = [].concat(platform);
var len, p, tag;
for (len = platform.length , p = 0; p < len; p++) {
tag = platform[p];
if (_tags.hasOwnProperty(tag)) {
return !!_tags[tag];
}
}
return false;
},
init: function() {
var scriptEls = doc.getElementsByTagName('script'),
len = scriptEls.length,
re = /\/ext(\-[a-z\-]+)?\.js$/,
entry, script, src, state, baseUrl, key, n, origin;
for (n = 0; n < len; n++) {
src = (script = scriptEls[n]).src;
if (!src) {
continue;
}
state = script.readyState || null;
if (!baseUrl) {
if (re.test(src)) {
Boot.hasReadyState = ("readyState" in script);
Boot.hasAsync = ("async" in script) || !Boot.hasReadyState;
baseUrl = src;
}
}
if (!Boot.scripts[key = Boot.canonicalUrl(src)]) {
_debug("creating entry " + key + " in Boot.init");
entry = new Entry({
key: key,
url: src,
done: state === null ||
state === 'loaded' || state === 'complete',
el: script,
prop: 'src'
});
}
}
if (!baseUrl) {
script = scriptEls[scriptEls.length - 1];
baseUrl = script.src;
Boot.hasReadyState = ('readyState' in script);
Boot.hasAsync = ("async" in script) || !Boot.hasReadyState;
}
Boot.baseUrl = baseUrl.substring(0, baseUrl.lastIndexOf('/') + 1);
origin = window.location.origin || window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port : '');
Boot.origin = origin;
Boot.detectPlatformTags();
Ext.filterPlatform = Boot.filterPlatform;
},
canonicalUrl: function(url) {
resolverEl.href = url;
var ret = resolverEl.href,
dc = _config.disableCachingParam,
pos = dc ? ret.indexOf(dc + '=') : -1,
c, end;
if (pos > 0 && ((c = ret.charAt(pos - 1)) === '?' || c === '&')) {
end = ret.indexOf('&', pos);
end = (end < 0) ? '' : ret.substring(end);
if (end && c === '?') {
++pos;
end = end.substring(1);
}
ret = ret.substring(0, pos - 1) + end;
}
return ret;
},
getConfig: function(name) {
return name ? Boot.config[name] : Boot.config;
},
setConfig: function(name, value) {
if (typeof name === 'string') {
Boot.config[name] = value;
} else {
for (var s in name) {
Boot.setConfig(s, name[s]);
}
}
return Boot;
},
getHead: function() {
return Boot.docHead || (Boot.docHead = doc.head || doc.getElementsByTagName('head')[0]);
},
create: function(url, key, cfg) {
var config = cfg || {};
config.url = url;
config.key = key;
return Boot.scripts[key] = new Entry(config);
},
getEntry: function(url, cfg) {
var key = Boot.canonicalUrl(url),
entry = Boot.scripts[key];
if (!entry) {
entry = Boot.create(url, key, cfg);
}
return entry;
},
processRequest: function(request, sync) {
request.loadEntries(sync);
},
load: function(request) {
_debug("Boot.load called");
var request = new Request(request);
if (request.sync || Boot.syncMode) {
return Boot.loadSync(request);
}
if (Boot.currentRequest) {
_debug("current active request, suspending this request");
request.getEntries();
Boot.suspendedQueue.push(request);
} else {
Boot.currentRequest = request;
Boot.processRequest(request, false);
}
return Boot;
},
loadSync: function(request) {
_debug("Boot.loadSync called");
var request = new Request(request);
Boot.syncMode++;
Boot.processRequest(request, true);
Boot.syncMode--;
return Boot;
},
loadBasePrefix: function(request) {
request = new Request(request);
request.prependBaseUrl = true;
return Boot.load(request);
},
loadSyncBasePrefix: function(request) {
request = new Request(request);
request.prependBaseUrl = true;
return Boot.loadSync(request);
},
requestComplete: function(request) {
var next;
if (Boot.currentRequest === request) {
Boot.currentRequest = null;
while (Boot.suspendedQueue.length > 0) {
next = Boot.suspendedQueue.shift();
if (!next.done) {
_debug("resuming suspended request");
Boot.load(next);
break;
}
}
}
if (!Boot.currentRequest && Boot.suspendedQueue.length == 0) {
Boot.fireListeners();
}
},
isLoading: function() {
return !Boot.currentRequest && Boot.suspendedQueue.length == 0;
},
fireListeners: function() {
var listener;
while (Boot.isLoading() && (listener = Boot.listeners.shift())) {
listener();
}
},
onBootReady: function(listener) {
if (!Boot.isLoading()) {
listener();
} else {
Boot.listeners.push(listener);
}
},
getPathsFromIndexes: function(indexMap, loadOrder) {
return Request.prototype.getPathsFromIndexes(indexMap, loadOrder);
},
createLoadOrderMap: function(loadOrder) {
return Request.prototype.createLoadOrderMap(loadOrder);
},
fetch: function(url, complete, scope, async) {
async = (async === undefined) ? !!complete : async;
var xhr = new XMLHttpRequest(),
result, status, content,
exception = false,
readyStateChange = function() {
if (xhr && xhr.readyState == 4) {
status = (xhr.status === 1223) ? 204 : (xhr.status === 0 && ((self.location || {}).protocol === 'file:' || (self.location || {}).protocol === 'ionp:')) ? 200 : xhr.status;
content = xhr.responseText;
result = {
content: content,
status: status,
exception: exception
};
if (complete) {
complete.call(scope, result);
}
xhr = null;
}
};
if (async) {
xhr.onreadystatechange = readyStateChange;
}
try {
_debug("fetching " + url + " " + (async ? "async" : "sync"));
xhr.open('GET', url, async);
xhr.send(null);
} catch (err) {
exception = err;
readyStateChange();
return result;
}
if (!async) {
readyStateChange();
}
return result;
},
notifyAll: function(entry) {
entry.notifyRequests();
}
};
function Request(cfg) {
if (cfg.$isRequest) {
return cfg;
}
var cfg = cfg.url ? cfg : {
url: cfg
},
url = cfg.url,
urls = url.charAt ? [
url
] : url,
charset = cfg.charset || Boot.config.charset;
_apply(cfg, {
urls: urls,
charset: charset
});
_apply(this, cfg);
}
Request.prototype = {
$isRequest: true,
createLoadOrderMap: function(loadOrder) {
var len = loadOrder.length,
loadOrderMap = {},
i, element;
for (i = 0; i < len; i++) {
element = loadOrder[i];
loadOrderMap[element.path] = element;
}
return loadOrderMap;
},
getLoadIndexes: function(index, indexMap, loadOrder, includeUses, skipLoaded) {
var item = loadOrder[index],
len, i, reqs, entry, stop, added, idx, ridx, url;
if (indexMap[index]) {
return indexMap;
}
indexMap[index] = true;
stop = false;
while (!stop) {
added = false;
for (idx in indexMap) {
if (indexMap.hasOwnProperty(idx)) {
item = loadOrder[idx];
if (!item) {
continue;
}
url = this.prepareUrl(item.path);
entry = Boot.getEntry(url);
if (!skipLoaded || !entry || !entry.done) {
reqs = item.requires;
if (includeUses && item.uses) {
reqs = reqs.concat(item.uses);
}
for (len = reqs.length , i = 0; i < len; i++) {
ridx = reqs[i];
if (!indexMap[ridx]) {
indexMap[ridx] = true;
added = true;
}
}
}
}
}
if (!added) {
stop = true;
}
}
return indexMap;
},
getPathsFromIndexes: function(indexMap, loadOrder) {
var indexes = [],
paths = [],
index, len, i;
for (index in indexMap) {
if (indexMap.hasOwnProperty(index) && indexMap[index]) {
indexes.push(index);
}
}
indexes.sort(function(a, b) {
return a - b;
});
for (len = indexes.length , i = 0; i < len; i++) {
paths.push(loadOrder[indexes[i]].path);
}
return paths;
},
expandUrl: function(url, indexMap, includeUses, skipLoaded) {
if (typeof url == 'string') {
url = [
url
];
}
var me = this,
loadOrder = me.loadOrder,
loadOrderMap = me.loadOrderMap;
if (loadOrder) {
loadOrderMap = loadOrderMap || me.createLoadOrderMap(loadOrder);
me.loadOrderMap = loadOrderMap;
indexMap = indexMap || {};
var len = url.length,
unmapped = [],
i, item;
for (i = 0; i < len; i++) {
item = loadOrderMap[url[i]];
if (item) {
me.getLoadIndexes(item.idx, indexMap, loadOrder, includeUses, skipLoaded);
} else {
unmapped.push(url[i]);
}
}
return me.getPathsFromIndexes(indexMap, loadOrder).concat(unmapped);
}
return url;
},
expandUrls: function(urls, includeUses) {
if (typeof urls == "string") {
urls = [
urls
];
}
var expanded = [],
expandMap = {},
tmpExpanded,
len = urls.length,
i, t, tlen, tUrl;
for (i = 0; i < len; i++) {
tmpExpanded = this.expandUrl(urls[i], {}, includeUses, true);
for (t = 0 , tlen = tmpExpanded.length; t < tlen; t++) {
tUrl = tmpExpanded[t];
if (!expandMap[tUrl]) {
expandMap[tUrl] = true;
expanded.push(tUrl);
}
}
}
if (expanded.length == 0) {
expanded = urls;
}
return expanded;
},
expandLoadOrder: function() {
var me = this,
urls = me.urls,
expanded;
if (!me.expanded) {
expanded = this.expandUrls(urls, true);
me.expanded = true;
} else {
expanded = urls;
}
me.urls = expanded;
if (urls.length != expanded.length) {
me.sequential = true;
}
return me;
},
getUrls: function() {
this.expandLoadOrder();
return this.urls;
},
prepareUrl: function(url) {
if (this.prependBaseUrl) {
return Boot.baseUrl + url;
}
return url;
},
getEntries: function() {
var me = this,
entries = me.entries,
i, entry, urls, url;
if (!entries) {
entries = [];
urls = me.getUrls();
for (i = 0; i < urls.length; i++) {
url = me.prepareUrl(urls[i]);
entry = Boot.getEntry(url, {
buster: me.buster,
charset: me.charset
});
entry.requests.push(me);
entries.push(entry);
}
me.entries = entries;
}
return entries;
},
loadEntries: function(sync) {
var me = this,
entries = me.getEntries(),
len = entries.length,
start = me.loadStart || 0,
continueLoad, entry, i;
if (sync !== undefined) {
me.sync = sync;
}
me.loaded = me.loaded || 0;
me.loading = me.loading || len;
for (i = start; i < len; i++) {
entry = entries[i];
if (!entry.loaded) {
continueLoad = entries[i].load(me.sync);
} else {
continueLoad = true;
}
if (!continueLoad) {
me.loadStart = i;
entry.onDone(function() {
me.loadEntries(sync);
});
break;
}
}
me.processLoadedEntries();
},
processLoadedEntries: function() {
var me = this,
entries = me.getEntries(),
len = entries.length,
start = me.startIndex || 0,
i, entry;
if (!me.done) {
for (i = start; i < len; i++) {
entry = entries[i];
if (!entry.loaded) {
me.startIndex = i;
return;
}
if (!entry.evaluated) {
entry.evaluate();
}
if (entry.error) {
me.error = true;
}
}
me.notify();
}
},
notify: function() {
var me = this;
if (!me.done) {
var error = me.error,
fn = me[error ? 'failure' : 'success'],
delay = ('delay' in me) ? me.delay : (error ? 1 : Boot.config.chainDelay),
scope = me.scope || me;
me.done = true;
if (fn) {
if (delay === 0 || delay > 0) {
setTimeout(function() {
fn.call(scope, me);
}, delay);
} else {
fn.call(scope, me);
}
}
me.fireListeners();
Boot.requestComplete(me);
}
},
onDone: function(listener) {
var me = this,
listeners = me.listeners || (me.listeners = []);
if (me.done) {
listener(me);
} else {
listeners.push(listener);
}
},
fireListeners: function() {
var listeners = this.listeners,
listener;
if (listeners) {
_debug("firing request listeners");
while ((listener = listeners.shift())) {
listener(this);
}
}
}
};
function Entry(cfg) {
if (cfg.$isEntry) {
return cfg;
}
_debug("creating entry for " + cfg.url);
var charset = cfg.charset || Boot.config.charset,
manifest = Ext.manifest,
loader = manifest && manifest.loader,
cache = (cfg.cache !== undefined) ? cfg.cache : (loader && loader.cache),
buster, busterParam;
if (cache === undefined) {
cache = !Boot.config.disableCaching;
}
if (cache === false) {
buster = +new Date();
} else if (cache !== true) {
buster = cache;
}
if (buster) {
busterParam = (loader && loader.cacheParam) || Boot.config.disableCachingParam;
buster = busterParam + "=" + buster;
}
_apply(cfg, {
charset: charset,
buster: buster,
requests: []
});
_apply(this, cfg);
}
Entry.prototype = {
$isEntry: true,
done: false,
evaluated: false,
loaded: false,
isCrossDomain: function() {
var me = this;
if (me.crossDomain === undefined) {
_debug("checking " + me.getLoadUrl() + " for prefix " + Boot.origin);
me.crossDomain = (me.getLoadUrl().indexOf(Boot.origin) !== 0);
}
return me.crossDomain;
},
isCss: function() {
var me = this;
if (me.css === undefined) {
me.css = me.url && cssRe.test(me.url);
}
return this.css;
},
getElement: function(tag) {
var me = this,
el = me.el;
if (!el) {
_debug("creating element for " + me.url);
if (me.isCss()) {
tag = tag || "link";
el = doc.createElement(tag);
if (tag == "link") {
el.rel = 'stylesheet';
me.prop = 'href';
} else {
me.prop = "textContent";
}
el.type = "text/css";
} else {
tag = tag || "script";
el = doc.createElement(tag);
el.type = 'text/javascript';
me.prop = 'src';
if (Boot.hasAsync) {
el.async = false;
}
}
me.el = el;
}
return el;
},
getLoadUrl: function() {
var me = this,
url = Boot.canonicalUrl(me.url);
if (!me.loadUrl) {
me.loadUrl = !!me.buster ? (url + (url.indexOf('?') === -1 ? '?' : '&') + me.buster) : url;
}
return me.loadUrl;
},
fetch: function(req) {
var url = this.getLoadUrl(),
async = !!req.async,
complete = req.complete;
Boot.fetch(url, complete, this, async);
},
onContentLoaded: function(response) {
var me = this,
status = response.status,
content = response.content,
exception = response.exception,
url = this.getLoadUrl();
me.loaded = true;
if ((exception || status === 0) && !_environment.phantom) {
me.error = ("Failed loading synchronously via XHR: '" + url + "'. It's likely that the file is either being loaded from a " + "different domain or from the local file system where cross " + "origin requests are not allowed for security reasons. Try " + "asynchronous loading instead.") || true;
me.evaluated = true;
} else if ((status >= 200 && status < 300) || status === 304 || _environment.phantom || (status === 0 && content.length > 0)) {
me.content = content;
} else {
me.error = ("Failed loading synchronously via XHR: '" + url + "'. Please verify that the file exists. XHR status code: " + status) || true;
me.evaluated = true;
}
},
createLoadElement: function(callback) {
var me = this,
el = me.getElement(),
readyStateChange = function() {
if (this.readyState === 'loaded' || this.readyState === 'complete') {
if (callback) {
callback();
}
}
},
errorFn = function() {
me.error = true;
if (callback) {
callback();
}
};
me.preserve = true;
el.onerror = errorFn;
if (Boot.hasReadyState) {
el.onreadystatechange = readyStateChange;
} else {
el.onload = callback;
}
el[me.prop] = me.getLoadUrl();
},
onLoadElementReady: function() {
Boot.getHead().appendChild(this.getElement());
this.evaluated = true;
},
inject: function(content, asset) {
_debug("injecting content for " + this.url);
var me = this,
head = Boot.getHead(),
url = me.url,
key = me.key,
base, el, ieMode, basePath;
if (me.isCss()) {
me.preserve = true;
basePath = key.substring(0, key.lastIndexOf("/") + 1);
base = doc.createElement('base');
base.href = basePath;
if (head.firstChild) {
head.insertBefore(base, head.firstChild);
} else {
head.appendChild(base);
}
base.href = base.href;
if (url) {
content += "\n/*# sourceURL=" + key + " */";
}
el = me.getElement("style");
ieMode = ('styleSheet' in el);
head.appendChild(base);
if (ieMode) {
head.appendChild(el);
el.styleSheet.cssText = content;
} else {
el.textContent = content;
head.appendChild(el);
}
head.removeChild(base);
} else {
if (url) {
content += "\n//# sourceURL=" + key;
}
Ext.globalEval(content);
}
return me;
},
loadCrossDomain: function() {
var me = this,
complete = function() {
me.loaded = me.evaluated = me.done = true;
me.notifyRequests();
};
if (me.isCss()) {
me.createLoadElement();
me.evaluateLoadElement();
complete();
} else {
me.createLoadElement(function() {
complete();
});
me.evaluateLoadElement();
return false;
}
return true;
},
loadElement: function() {
var me = this,
complete = function() {
me.loaded = me.evaluated = me.done = true;
me.notifyRequests();
};
if (me.isCss()) {
return me.loadCrossDomain();
} else {
me.createLoadElement(function() {
complete();
});
me.evaluateLoadElement();
}
return true;
},
loadSync: function() {
var me = this;
me.fetch({
async: false,
complete: function(response) {
me.onContentLoaded(response);
}
});
me.evaluate();
me.notifyRequests();
},
load: function(sync) {
var me = this;
if (!me.loaded) {
if (me.loading) {
return false;
}
me.loading = true;
if (!sync) {
if (me.isCrossDomain()) {
return me.loadCrossDomain();
}
else if (!me.isCss() && Boot.hasReadyState) {
me.createLoadElement(function() {
me.loaded = true;
me.notifyRequests();
});
} else if (Boot.useElements) {
return me.loadElement();
} else
{
me.fetch({
async: !sync,
complete: function(response) {
me.onContentLoaded(response);
me.notifyRequests();
}
});
}
} else
{
me.loadSync();
}
}
return true;
},
evaluateContent: function() {
this.inject(this.content);
this.content = null;
},
evaluateLoadElement: function() {
Boot.getHead().appendChild(this.getElement());
},
evaluate: function() {
var me = this;
if (!me.evaluated) {
if (me.evaluating) {
return;
}
me.evaluating = true;
if (me.content !== undefined) {
me.evaluateContent();
} else if (!me.error) {
me.evaluateLoadElement();
}
me.evaluated = me.done = true;
me.cleanup();
}
},
cleanup: function() {
var me = this,
el = me.el,
prop;
if (!el) {
return;
}
if (!me.preserve) {
me.el = null;
el.parentNode.removeChild(el);
for (prop in el) {
try {
if (prop !== me.prop) {
el[prop] = null;
}
delete el[prop];
}
catch (cleanEx) {}
}
}
el.onload = el.onerror = el.onreadystatechange = emptyFn;
},
notifyRequests: function() {
var requests = this.requests,
len = requests.length,
i, request;
for (i = 0; i < len; i++) {
request = requests[i];
request.processLoadedEntries();
}
if (this.done) {
this.fireListeners();
}
},
onDone: function(listener) {
var me = this,
listeners = me.listeners || (me.listeners = []);
if (me.done) {
listener(me);
} else {
listeners.push(listener);
}
},
fireListeners: function() {
var listeners = this.listeners,
listener;
if (listeners && listeners.length > 0) {
_debug("firing event listeners for url " + this.url);
while ((listener = listeners.shift())) {
listener(this);
}
}
}
};
Ext.disableCacheBuster = function(disable, path) {
var date = new Date();
date.setTime(date.getTime() + (disable ? 10 * 365 : -1) * 24 * 60 * 60 * 1000);
date = date.toGMTString();
doc.cookie = 'ext-cache=1; expires=' + date + '; path=' + (path || '/');
};
Boot.init();
return Boot;
}(
function() {}));
Ext.globalEval = Ext.globalEval || (this.execScript ? function(code) {
execScript(code);
} : function($$code) {
eval.call(window, $$code);
});
if (!Function.prototype.bind) {
(function() {
var slice = Array.prototype.slice,
bind = function(me) {
var args = slice.call(arguments, 1),
method = this;
if (args.length) {
return function() {
var t = arguments;
return method.apply(me, t.length ? args.concat(slice.call(t)) : args);
};
}
args = null;
return function() {
return method.apply(me, arguments);
};
};
Function.prototype.bind = bind;
bind.$extjs = true;
}());
}
var Ext = Ext || {};
Ext._startTime = Date.now ? Date.now() : (+new Date());
(function() {
var global = this,
objectPrototype = Object.prototype,
toString = objectPrototype.toString,
enumerables = [
'valueOf',
'toLocaleString',
'toString',
'constructor'
],
emptyFn = function() {},
privateFn = function() {},
identityFn = function(o) {
return o;
},
callOverrideParent = function() {
var method = callOverrideParent.caller.caller;
return method.$owner.prototype[method.$name].apply(this, arguments);
},
manifest = Ext.manifest || {},
i,
iterableRe = /\[object\s*(?:Array|Arguments|\w*Collection|\w*List|HTML\s+document\.all\s+class)\]/,
MSDateRe = /^\\?\/Date\(([-+])?(\d+)(?:[+-]\d{4})?\)\\?\/$/;
Ext.global = global;
emptyFn.$nullFn = identityFn.$nullFn = emptyFn.$emptyFn = identityFn.$identityFn = privateFn.$nullFn = true;
privateFn.$privacy = 'framework';
Ext['suspendLayouts'] = Ext['resumeLayouts'] = emptyFn;
for (i in {
toString: 1
}) {
enumerables = null;
}
Ext.enumerables = enumerables;
Ext.apply = function(object, config, defaults) {
if (defaults) {
Ext.apply(object, defaults);
}
if (object && config && typeof config === 'object') {
var i, j, k;
for (i in config) {
object[i] = config[i];
}
if (enumerables) {
for (j = enumerables.length; j--; ) {
k = enumerables[j];
if (config.hasOwnProperty(k)) {
object[k] = config[k];
}
}
}
}
return object;
};
Ext.buildSettings = Ext.apply({
baseCSSPrefix: 'x-'
}, Ext.buildSettings || {});
Ext.apply(Ext, {
idSeed: 0,
idPrefix: 'ext-',
isSecure: /^https/i.test(window.location.protocol),
enableGarbageCollector: false,
enableListenerCollection: true,
name: Ext.sandboxName || 'Ext',
privateFn: privateFn,
emptyFn: emptyFn,
identityFn: identityFn,
frameStartTime: +new Date(),
manifest: manifest,
debugConfig: Ext.debugConfig || manifest.debug || {
hooks: {
'*': true
}
},
validIdRe: /^[a-z_][a-z0-9\-_]*$/i,
BLANK_IMAGE_URL: 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==',
makeIdSelector: function(id) {
if (!Ext.validIdRe.test(id)) {
Ext.Error.raise('Invalid id selector: "' + id + '"');
}
return '#' + id;
},
id: function(o, prefix) {
if (o && o.id) {
return o.id;
}
var id = (prefix || Ext.idPrefix) + (++Ext.idSeed);
if (o) {
o.id = id;
}
return id;
},
returnId: function(o) {
return o.getId();
},
returnTrue: function() {
return true;
},
emptyString: new String(),
baseCSSPrefix: Ext.buildSettings.baseCSSPrefix,
$eventNameMap: {},
$vendorEventRe: /^(Moz.+|MS.+|webkit.+)/,
canonicalEventName: function(name) {
return Ext.$eventNameMap[name] || (Ext.$eventNameMap[name] = (Ext.$vendorEventRe.test(name) ? name : name.toLowerCase()));
},
applyIf: function(object, config) {
var property;
if (object) {
for (property in config) {
if (object[property] === undefined) {
object[property] = config[property];
}
}
}
return object;
},
now: (global.performance && global.performance.now) ? function() {
return performance.now();
} :
(Date.now || (Date.now = function() {
return +new Date();
})),
destroy: function() {
var ln = arguments.length,
i, arg;
for (i = 0; i < ln; i++) {
arg = arguments[i];
if (arg) {
if (Ext.isArray(arg)) {
this.destroy.apply(this, arg);
} else if (Ext.isFunction(arg.destroy)) {
arg.destroy();
}
}
}
return null;
},
destroyMembers: function(object) {
for (var ref, name,
i = 1,
a = arguments,
len = a.length; i < len; i++) {
ref = object[name = a[i]];
if (ref != null) {
object[name] = Ext.destroy(ref);
}
}
},
override: function(target, overrides) {
if (target.$isClass) {
target.override(overrides);
} else if (typeof target === 'function') {
Ext.apply(target.prototype, overrides);
} else {
var owner = target.self,
name, value;
if (owner && owner.$isClass) {
for (name in overrides) {
if (overrides.hasOwnProperty(name)) {
value = overrides[name];
if (typeof value === 'function') {
if (owner.$className) {
value.name = owner.$className + '#' + name;
}
value.$name = name;
value.$owner = owner;
value.$previous = target.hasOwnProperty(name) ? target[name] :
callOverrideParent;
}
target[name] = value;
}
}
} else {
Ext.apply(target, overrides);
}
}
return target;
},
valueFrom: function(value, defaultValue, allowBlank) {
return Ext.isEmpty(value, allowBlank) ? defaultValue : value;
},
isEmpty: function(value, allowEmptyString) {
return (value == null) || (!allowEmptyString ? value === '' : false) || (Ext.isArray(value) && value.length === 0);
},
isArray: ('isArray' in Array) ? Array.isArray : function(value) {
return toString.call(value) === '[object Array]';
},
isDate: function(value) {
return toString.call(value) === '[object Date]';
},
isMSDate: function(value) {
if (!Ext.isString(value)) {
return false;
}
return MSDateRe.test(value);
},
isObject: (toString.call(null) === '[object Object]') ? function(value) {
return value !== null && value !== undefined && toString.call(value) === '[object Object]' && value.ownerDocument === undefined;
} : function(value) {
return toString.call(value) === '[object Object]';
},
isSimpleObject: function(value) {
return value instanceof Object && value.constructor === Object;
},
isPrimitive: function(value) {
var type = typeof value;
return type === 'string' || type === 'number' || type === 'boolean';
},
isFunction:
(typeof document !== 'undefined' && typeof document.getElementsByTagName('body') === 'function') ? function(value) {
return !!value && toString.call(value) === '[object Function]';
} : function(value) {
return !!value && typeof value === 'function';
},
isNumber: function(value) {
return typeof value === 'number' && isFinite(value);
},
isNumeric: function(value) {
return !isNaN(parseFloat(value)) && isFinite(value);
},
isString: function(value) {
return typeof value === 'string';
},
isBoolean: function(value) {
return typeof value === 'boolean';
},
isElement: function(value) {
return value ? value.nodeType === 1 : false;
},
isTextNode: function(value) {
return value ? value.nodeName === "#text" : false;
},
isDefined: function(value) {
return typeof value !== 'undefined';
},
isIterable: function(value) {
if (!value || typeof value.length !== 'number' || typeof value === 'string' || Ext.isFunction(value)) {
return false;
}
if (!value.propertyIsEnumerable) {
return !!value.item;
}
if (value.hasOwnProperty('length') && !value.propertyIsEnumerable('length')) {
return true;
}
return iterableRe.test(toString.call(value));
},
isDebugEnabled: function(className, defaultEnabled) {
var debugConfig = Ext.debugConfig.hooks;
if (debugConfig.hasOwnProperty(className)) {
return debugConfig[className];
}
var enabled = debugConfig['*'],
prefixLength = 0;
if (defaultEnabled !== undefined) {
enabled = defaultEnabled;
}
if (!className) {
return enabled;
}
for (var prefix in debugConfig) {
var value = debugConfig[prefix];
if (className.charAt(prefix.length) === '.') {
if (className.substring(0, prefix.length) === prefix) {
if (prefixLength < prefix.length) {
prefixLength = prefix.length;
enabled = value;
}
}
}
}
return enabled;
} || emptyFn,
clone: function(item) {
if (item === null || item === undefined) {
return item;
}
if (item.nodeType && item.cloneNode) {
return item.cloneNode(true);
}
var type = toString.call(item),
i, j, k, clone, key;
if (type === '[object Date]') {
return new Date(item.getTime());
}
if (type === '[object Array]') {
i = item.length;
clone = [];
while (i--) {
clone[i] = Ext.clone(item[i]);
}
}
else if (type === '[object Object]' && item.constructor === Object) {
clone = {};
for (key in item) {
clone[key] = Ext.clone(item[key]);
}
if (enumerables) {
for (j = enumerables.length; j--; ) {
k = enumerables[j];
if (item.hasOwnProperty(k)) {
clone[k] = item[k];
}
}
}
}
return clone || item;
},
getUniqueGlobalNamespace: function() {
var uniqueGlobalNamespace = this.uniqueGlobalNamespace,
i;
if (uniqueGlobalNamespace === undefined) {
i = 0;
do {
uniqueGlobalNamespace = 'ExtBox' + (++i);
} while (global[uniqueGlobalNamespace] !== undefined);
global[uniqueGlobalNamespace] = Ext;
this.uniqueGlobalNamespace = uniqueGlobalNamespace;
}
return uniqueGlobalNamespace;
},
functionFactoryCache: {},
cacheableFunctionFactory: function() {
var me = this,
args = Array.prototype.slice.call(arguments),
cache = me.functionFactoryCache,
idx, fn, ln;
if (Ext.isSandboxed) {
ln = args.length;
if (ln > 0) {
ln--;
args[ln] = 'var Ext=window.' + Ext.name + ';' + args[ln];
}
}
idx = args.join('');
fn = cache[idx];
if (!fn) {
fn = Function.prototype.constructor.apply(Function.prototype, args);
cache[idx] = fn;
}
return fn;
},
functionFactory: function() {
var args = Array.prototype.slice.call(arguments),
ln;
if (Ext.isSandboxed) {
ln = args.length;
if (ln > 0) {
ln--;
args[ln] = 'var Ext=window.' + Ext.name + ';' + args[ln];
}
}
return Function.prototype.constructor.apply(Function.prototype, args);
},
Logger: {
log: function(message, priority) {
if (message && global.console) {
if (!priority || !(priority in global.console)) {
priority = 'log';
}
message = '[' + priority.toUpperCase() + '] ' + message;
global.console[priority](message);
}
},
verbose: function(message) {
this.log(message, 'verbose');
},
info: function(message) {
this.log(message, 'info');
},
warn: function(message) {
this.log(message, 'warn');
},
error: function(message) {
throw new Error(message);
},
deprecate: function(message) {
this.log(message, 'warn');
}
} || {
verbose: emptyFn,
log: emptyFn,
info: emptyFn,
warn: emptyFn,
error: function(message) {
throw new Error(message);
},
deprecate: emptyFn
},
getElementById: function(id) {
return document.getElementById(id);
},
splitAndUnescape: (function() {
var cache = {};
return function(origin, delimiter) {
if (!origin) {
return [];
} else if (!delimiter) {
return [
origin
];
}
var replaceRe = cache[delimiter] || (cache[delimiter] = new RegExp('\\\\' + delimiter, 'g')),
result = [],
parts, part;
parts = origin.split(delimiter);
while ((part = parts.shift()) !== undefined) {
while (part.charAt(part.length - 1) === '\\' && parts.length > 0) {
part = part + delimiter + parts.shift();
}
part = part.replace(replaceRe, delimiter);
result.push(part);
}
return result;
};
})()
});
Ext.returnTrue.$nullFn = Ext.returnId.$nullFn = true;
}());
(function() {
function toString() {
var me = this,
cls = me.sourceClass,
method = me.sourceMethod,
msg = me.msg;
if (method) {
if (msg) {
method += '(): ';
method += msg;
} else {
method += '()';
}
}
if (cls) {
method = method ? (cls + '.' + method) : cls;
}
return method || msg || '';
}
Ext.Error = function(config) {
if (Ext.isString(config)) {
config = {
msg: config
};
}
var error = new Error();
Ext.apply(error, config);
error.message = error.message || error.msg;
error.toString = toString;
return error;
};
Ext.apply(Ext.Error, {
ignore: false,
raise: function(err) {
err = err || {};
if (Ext.isString(err)) {
err = {
msg: err
};
}
var me = this,
method = me.raise.caller,
msg, name;
if (method) {
if (!err.sourceMethod && (name = method.$name)) {
err.sourceMethod = name;
}
if (!err.sourceClass && (name = method.$owner) && (name = name.$className)) {
err.sourceClass = name;
}
}
if (me.handle(err) !== true) {
msg = toString.call(err);
Ext.log({
msg: msg,
level: 'error',
dump: err,
stack: true
});
throw new Ext.Error(err);
}
},
handle: function() {
return this.ignore;
}
});
})();
Ext.deprecated = function(suggestion) {
if (!suggestion) {
suggestion = '';
}
function fail() {
Ext.Error.raise('The method "' + fail.$owner.$className + '.' + fail.$name + '" has been removed. ' + suggestion);
}
return fail;
return Ext.emptyFn;
};
(function() {
if (typeof window === 'undefined') {
return;
}
var last = 0,
notify = function() {
var cnt = Ext.log && Ext.log.counters,
n = cnt && (cnt.error + cnt.warn + cnt.info + cnt.log),
msg;
if (n && last !== n) {
msg = [];
if (cnt.error) {
msg.push('Errors: ' + cnt.error);
}
if (cnt.warn) {
msg.push('Warnings: ' + cnt.warn);
}
if (cnt.info) {
msg.push('Info: ' + cnt.info);
}
if (cnt.log) {
msg.push('Log: ' + cnt.log);
}
window.status = '*** ' + msg.join(' -- ');
last = n;
}
};
setInterval(notify, 1000);
}());
Ext.Array = (function() {
var arrayPrototype = Array.prototype,
slice = arrayPrototype.slice,
supportsSplice = (function() {
var array = [],
lengthBefore,
j = 20;
if (!array.splice) {
return false;
}
while (j--) {
array.push("A");
}
array.splice(15, 0, "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F");
lengthBefore = array.length;
array.splice(13, 0, "XXX");
if (lengthBefore + 1 !== array.length) {
return false;
}
return true;
}()),
supportsIndexOf = 'indexOf' in arrayPrototype,
supportsSliceOnNodeList = true;
function stableSort(array, userComparator) {
var len = array.length,
indices = new Array(len),
i;
for (i = 0; i < len; i++) {
indices[i] = i;
}
indices.sort(function(index1, index2) {
return userComparator(array[index1], array[index2]) || (index1 - index2);
});
for (i = 0; i < len; i++) {
indices[i] = array[indices[i]];
}
for (i = 0; i < len; i++) {
array[i] = indices[i];
}
return array;
}
try {
if (typeof document !== 'undefined') {
slice.call(document.getElementsByTagName('body'));
}
} catch (e) {
supportsSliceOnNodeList = false;
}
var fixArrayIndex = function(array, index) {
return (index < 0) ? Math.max(0, array.length + index) : Math.min(array.length, index);
},
replaceSim = function(array, index, removeCount, insert) {
var add = insert ? insert.length : 0,
length = array.length,
pos = fixArrayIndex(array, index);
if (pos === length) {
if (add) {
array.push.apply(array, insert);
}
} else {
var remove = Math.min(removeCount, length - pos),
tailOldPos = pos + remove,
tailNewPos = tailOldPos + add - remove,
tailCount = length - tailOldPos,
lengthAfterRemove = length - remove,
i;
if (tailNewPos < tailOldPos) {
for (i = 0; i < tailCount; ++i) {
array[tailNewPos + i] = array[tailOldPos + i];
}
} else if (tailNewPos > tailOldPos) {
for (i = tailCount; i--; ) {
array[tailNewPos + i] = array[tailOldPos + i];
}
}
if (add && pos === lengthAfterRemove) {
array.length = lengthAfterRemove;
array.push.apply(array, insert);
} else {
array.length = lengthAfterRemove + add;
for (i = 0; i < add; ++i) {
array[pos + i] = insert[i];
}
}
}
return array;
},
replaceNative = function(array, index, removeCount, insert) {
if (insert && insert.length) {
if (index === 0 && !removeCount) {
array.unshift.apply(array, insert);
}
else if (index < array.length) {
array.splice.apply(array, [
index,
removeCount
].concat(insert));
} else
{
array.push.apply(array, insert);
}
} else {
array.splice(index, removeCount);
}
return array;
},
eraseSim = function(array, index, removeCount) {
return replaceSim(array, index, removeCount);
},
eraseNative = function(array, index, removeCount) {
array.splice(index, removeCount);
return array;
},
spliceSim = function(array, index, removeCount) {
var pos = fixArrayIndex(array, index),
removed = array.slice(index, fixArrayIndex(array, pos + removeCount));
if (arguments.length < 4) {
replaceSim(array, pos, removeCount);
} else {
replaceSim(array, pos, removeCount, slice.call(arguments, 3));
}
return removed;
},
spliceNative = function(array) {
return array.splice.apply(array, slice.call(arguments, 1));
},
erase = supportsSplice ? eraseNative : eraseSim,
replace = supportsSplice ? replaceNative : replaceSim,
splice = supportsSplice ? spliceNative : spliceSim,
ExtArray = {
binarySearch: function(array, item, begin, end, compareFn) {
var length = array.length,
middle, comparison;
if (begin instanceof Function) {
compareFn = begin;
begin = 0;
end = length;
} else if (end instanceof Function) {
compareFn = end;
end = length;
} else {
if (begin === undefined) {
begin = 0;
}
if (end === undefined) {
end = length;
}
compareFn = compareFn || ExtArray.lexicalCompare;
}
--end;
while (begin <= end) {
middle = (begin + end) >> 1;
comparison = compareFn(item, array[middle]);
if (comparison >= 0) {
begin = middle + 1;
} else if (comparison < 0) {
end = middle - 1;
}
}
return begin;
},
defaultCompare: function(lhs, rhs) {
return (lhs < rhs) ? -1 : ((lhs > rhs) ? 1 : 0);
},
lexicalCompare: function(lhs, rhs) {
lhs = String(lhs);
rhs = String(rhs);
return (lhs < rhs) ? -1 : ((lhs > rhs) ? 1 : 0);
},
each: function(array, fn, scope, reverse) {
array = ExtArray.from(array);
var i,
ln = array.length;
if (reverse !== true) {
for (i = 0; i < ln; i++) {
if (fn.call(scope || array[i], array[i], i, array) === false) {
return i;
}
}
} else {
for (i = ln - 1; i > -1; i--) {
if (fn.call(scope || array[i], array[i], i, array) === false) {
return i;
}
}
}
return true;
},
forEach: ('forEach' in arrayPrototype) ? function(array, fn, scope) {
return array.forEach(fn, scope);
} : function(array, fn, scope) {
for (var i = 0,
ln = array.length; i < ln; i++) {
fn.call(scope, array[i], i, array);
}
},
indexOf: supportsIndexOf ? function(array, item, from) {
return arrayPrototype.indexOf.call(array, item, from);
} : function(array, item, from) {
var i,
length = array.length;
for (i = (from < 0) ? Math.max(0, length + from) : from || 0; i < length; i++) {
if (array[i] === item) {
return i;
}
}
return -1;
},
contains: supportsIndexOf ? function(array, item) {
return arrayPrototype.indexOf.call(array, item) !== -1;
} : function(array, item) {
var i, ln;
for (i = 0 , ln = array.length; i < ln; i++) {
if (array[i] === item) {
return true;
}
}
return false;
},
toArray: function(iterable, start, end) {
if (!iterable || !iterable.length) {
return [];
}
if (typeof iterable === 'string') {
iterable = iterable.split('');
}
if (supportsSliceOnNodeList) {
return slice.call(iterable, start || 0, end || iterable.length);
}
var array = [],
i;
start = start || 0;
end = end ? ((end < 0) ? iterable.length + end : end) : iterable.length;
for (i = start; i < end; i++) {
array.push(iterable[i]);
}
return array;
},
pluck: function(array, propertyName) {
var ret = [],
i, ln, item;
for (i = 0 , ln = array.length; i < ln; i++) {
item = array[i];
ret.push(item[propertyName]);
}
return ret;
},
map: ('map' in arrayPrototype) ? function(array, fn, scope) {
Ext.Assert.isFunction(fn, 'Ext.Array.map must have a callback function passed as second argument.');
return array.map(fn, scope);
} : function(array, fn, scope) {
Ext.Assert.isFunction(fn, 'Ext.Array.map must have a callback function passed as second argument.');
var results = [],
i = 0,
len = array.length;
for (; i < len; i++) {
results[i] = fn.call(scope, array[i], i, array);
}
return results;
},
every: ('every' in arrayPrototype) ? function(array, fn, scope) {
Ext.Assert.isFunction(fn, 'Ext.Array.every must have a callback function passed as second argument.');
return array.every(fn, scope);
} : function(array, fn, scope) {
Ext.Assert.isFunction(fn, 'Ext.Array.every must have a callback function passed as second argument.');
var i = 0,
ln = array.length;
for (; i < ln; ++i) {
if (!fn.call(scope, array[i], i, array)) {
return false;
}
}
return true;
},
some: ('some' in arrayPrototype) ? function(array, fn, scope) {
Ext.Assert.isFunction(fn, 'Ext.Array.some must have a callback function passed as second argument.');
return array.some(fn, scope);
} : function(array, fn, scope) {
Ext.Assert.isFunction(fn, 'Ext.Array.some must have a callback function passed as second argument.');
var i = 0,
ln = array.length;
for (; i < ln; ++i) {
if (fn.call(scope, array[i], i, array)) {
return true;
}
}
return false;
},
equals: function(array1, array2) {
var len1 = array1.length,
len2 = array2.length,
i;
if (array1 === array2) {
return true;
}
if (len1 !== len2) {
return false;
}
for (i = 0; i < len1; ++i) {
if (array1[i] !== array2[i]) {
return false;
}
}
return true;
},
clean: function(array) {
var results = [],
i = 0,
ln = array.length,
item;
for (; i < ln; i++) {
item = array[i];
if (!Ext.isEmpty(item)) {
results.push(item);
}
}
return results;
},
unique: function(array) {
var clone = [],
i = 0,
ln = array.length,
item;
for (; i < ln; i++) {
item = array[i];
if (ExtArray.indexOf(clone, item) === -1) {
clone.push(item);
}
}
return clone;
},
filter: ('filter' in arrayPrototype) ? function(array, fn, scope) {
Ext.Assert.isFunction(fn, 'Ext.Array.filter must have a filter function passed as second argument.');
return array.filter(fn, scope);
} : function(array, fn, scope) {
Ext.Assert.isFunction(fn, 'Ext.Array.filter must have a filter function passed as second argument.');
var results = [],
i = 0,
ln = array.length;
for (; i < ln; i++) {
if (fn.call(scope, array[i], i, array)) {
results.push(array[i]);
}
}
return results;
},
findBy: function(array, fn, scope) {
var i = 0,
len = array.length;
for (; i < len; i++) {
if (fn.call(scope || array, array[i], i)) {
return array[i];
}
}
return null;
},
from: function(value, newReference) {
if (value === undefined || value === null) {
return [];
}
if (Ext.isArray(value)) {
return (newReference) ? slice.call(value) : value;
}
var type = typeof value;
if (value && value.length !== undefined && type !== 'string' && (type !== 'function' || !value.apply)) {
return ExtArray.toArray(value);
}
return [
value
];
},
remove: function(array, item) {
var index = ExtArray.indexOf(array, item);
if (index !== -1) {
erase(array, index, 1);
}
return array;
},
removeAt: function(array, index, count) {
var len = array.length;
if (index >= 0 && index < len) {
count = count || 1;
count = Math.min(count, len - index);
erase(array, index, count);
}
return array;
},
include: function(array, item) {
if (!ExtArray.contains(array, item)) {
array.push(item);
}
},
clone: function(array) {
return slice.call(array);
},
merge: function() {
var args = slice.call(arguments),
array = [],
i, ln;
for (i = 0 , ln = args.length; i < ln; i++) {
array = array.concat(args[i]);
}
return ExtArray.unique(array);
},
intersect: function() {
var intersection = [],
arrays = slice.call(arguments),
arraysLength, array, arrayLength, minArray, minArrayIndex, minArrayCandidate, minArrayLength, element, elementCandidate, elementCount, i, j, k;
if (!arrays.length) {
return intersection;
}
arraysLength = arrays.length;
for (i = minArrayIndex = 0; i < arraysLength; i++) {
minArrayCandidate = arrays[i];
if (!minArray || minArrayCandidate.length < minArray.length) {
minArray = minArrayCandidate;
minArrayIndex = i;
}
}
minArray = ExtArray.unique(minArray);
erase(arrays, minArrayIndex, 1);
minArrayLength = minArray.length;
arraysLength = arrays.length;
for (i = 0; i < minArrayLength; i++) {
element = minArray[i];
elementCount = 0;
for (j = 0; j < arraysLength; j++) {
array = arrays[j];
arrayLength = array.length;
for (k = 0; k < arrayLength; k++) {
elementCandidate = array[k];
if (element === elementCandidate) {
elementCount++;
break;
}
}
}
if (elementCount === arraysLength) {
intersection.push(element);
}
}
return intersection;
},
difference: function(arrayA, arrayB) {
var clone = slice.call(arrayA),
ln = clone.length,
i, j, lnB;
for (i = 0 , lnB = arrayB.length; i < lnB; i++) {
for (j = 0; j < ln; j++) {
if (clone[j] === arrayB[i]) {
erase(clone, j, 1);
j--;
ln--;
}
}
}
return clone;
},
slice: ([
1,
2
].slice(1, undefined).length ? function(array, begin, end) {
return slice.call(array, begin, end);
} : function(array, begin, end) {
if (typeof begin === 'undefined') {
return slice.call(array);
}
if (typeof end === 'undefined') {
return slice.call(array, begin);
}
return slice.call(array, begin, end);
}),
sort: function(array, sortFn) {
return stableSort(array, sortFn || ExtArray.lexicalCompare);
},
flatten: function(array) {
var worker = [];
function rFlatten(a) {
var i, ln, v;
for (i = 0 , ln = a.length; i < ln; i++) {
v = a[i];
if (Ext.isArray(v)) {
rFlatten(v);
} else {
worker.push(v);
}
}
return worker;
}
return rFlatten(array);
},
min: function(array, comparisonFn) {
var min = array[0],
i, ln, item;
for (i = 0 , ln = array.length; i < ln; i++) {
item = array[i];
if (comparisonFn) {
if (comparisonFn(min, item) === 1) {
min = item;
}
} else {
if (item < min) {
min = item;
}
}
}
return min;
},
max: function(array, comparisonFn) {
var max = array[0],
i, ln, item;
for (i = 0 , ln = array.length; i < ln; i++) {
item = array[i];
if (comparisonFn) {
if (comparisonFn(max, item) === -1) {
max = item;
}
} else {
if (item > max) {
max = item;
}
}
}
return max;
},
mean: function(array) {
return array.length > 0 ? ExtArray.sum(array) / array.length : undefined;
},
sum: function(array) {
var sum = 0,
i, ln, item;
for (i = 0 , ln = array.length; i < ln; i++) {
item = array[i];
sum += item;
}
return sum;
},
toMap: function(array, getKey, scope) {
var map = {},
i = array.length;
if (!getKey) {
while (i--) {
map[array[i]] = i + 1;
}
} else if (typeof getKey === 'string') {
while (i--) {
map[array[i][getKey]] = i + 1;
}
} else {
while (i--) {
map[getKey.call(scope, array[i])] = i + 1;
}
}
return map;
},
toValueMap: function(array, getKey, scope, arrayify) {
var map = {},
i = array.length,
autoArray, alwaysArray, entry, fn, key, value;
if (!getKey) {
while (i--) {
value = array[i];
map[value] = value;
}
} else {
if (!(fn = (typeof getKey !== 'string'))) {
arrayify = scope;
}
alwaysArray = arrayify === 1;
autoArray = arrayify === 2;
while (i--) {
value = array[i];
key = fn ? getKey.call(scope, value) : value[getKey];
if (alwaysArray) {
if (key in map) {
map[key].push(value);
} else {
map[key] = [
value
];
}
} else if (autoArray && (key in map)) {
if ((entry = map[key]) instanceof Array) {
entry.push(value);
} else {
map[key] = [
entry,
value
];
}
} else {
map[key] = value;
}
}
}
return map;
},
_replaceSim: replaceSim,
_spliceSim: spliceSim,
erase: erase,
insert: function(array, index, items) {
return replace(array, index, 0, items);
},
replace: replace,
splice: splice,
push: function(target) {
var len = arguments.length,
i = 1,
newItem;
if (target === undefined) {
target = [];
} else if (!Ext.isArray(target)) {
target = [
target
];
}
for (; i < len; i++) {
newItem = arguments[i];
Array.prototype.push[Ext.isIterable(newItem) ? 'apply' : 'call'](target, newItem);
}
return target;
},
numericSortFn: function(a, b) {
return a - b;
}
};
Ext.each = ExtArray.each;
ExtArray.union = ExtArray.merge;
Ext.min = ExtArray.min;
Ext.max = ExtArray.max;
Ext.sum = ExtArray.sum;
Ext.mean = ExtArray.mean;
Ext.flatten = ExtArray.flatten;
Ext.clean = ExtArray.clean;
Ext.unique = ExtArray.unique;
Ext.pluck = ExtArray.pluck;
Ext.toArray = function() {
return ExtArray.toArray.apply(ExtArray, arguments);
};
return ExtArray;
}());
Ext.Assert = {
falsey: function(b, msg) {
if (b) {
Ext.Error.raise(msg || ('Expected a falsey value but was ' + b));
}
},
falseyProp: function(object, property) {
Ext.Assert.truthy(object);
var b = object[property];
if (b) {
if (object.$className) {
property = object.$className + '#' + property;
}
Ext.Error.raise('Expected a falsey value for ' + property + ' but was ' + b);
}
},
truthy: function(b, msg) {
if (!b) {
Ext.Error.raise(msg || ('Expected a truthy value but was ' + typeof b));
}
},
truthyProp: function(object, property) {
Ext.Assert.truthy(object);
var b = object[property];
if (!b) {
if (object.$className) {
property = object.$className + '#' + property;
}
Ext.Error.raise('Expected a truthy value for ' + property + ' but was ' + typeof b);
}
}
};
(function() {
function makeAssert(name, kind) {
var testFn = Ext[name],
def;
return function(value, msg) {
if (!testFn(value)) {
Ext.Error.raise(msg || def || (def = 'Expected value to be ' + kind));
}
};
}
function makeAssertProp(name, kind) {
var testFn = Ext[name],
def;
return function(object, prop) {
Ext.Assert.truthy(object);
if (!testFn(object[prop])) {
Ext.Error.raise(def || (def = 'Expected ' + (object.$className ? object.$className + '#' : '') + prop + ' to be ' + kind));
}
};
}
function makeNotAssert(name, kind) {
var testFn = Ext[name],
def;
return function(value, msg) {
if (testFn(value)) {
Ext.Error.raise(msg || def || (def = 'Expected value to NOT be ' + kind));
}
};
}
function makeNotAssertProp(name, kind) {
var testFn = Ext[name],
def;
return function(object, prop) {
Ext.Assert.truthy(object);
if (testFn(object[prop])) {
Ext.Error.raise(def || (def = 'Expected ' + (object.$className ? object.$className + '#' : '') + prop + ' to NOT be ' + kind));
}
};
}
for (var name in Ext) {
if (name.substring(0, 2) == "is" && Ext.isFunction(Ext[name])) {
var kind = name.substring(2);
Ext.Assert[name] = makeAssert(name, kind);
Ext.Assert[name + 'Prop'] = makeAssertProp(name, kind);
Ext.Assert['isNot' + kind] = makeNotAssert(name, kind);
Ext.Assert['isNot' + kind + 'Prop'] = makeNotAssertProp(name, kind);
}
}
}());
Ext.String = (function() {
var trimRegex = /^[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+|[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+$/g,
escapeRe = /('|\\)/g,
escapeRegexRe = /([-.*+?\^${}()|\[\]\/\\])/g,
basicTrimRe = /^\s+|\s+$/g,
whitespaceRe = /\s+/,
varReplace = /(^[^a-z]*|[^\w])/gi,
charToEntity, entityToChar, charToEntityRegex, entityToCharRegex,
htmlEncodeReplaceFn = function(match, capture) {
return charToEntity[capture];
},
htmlDecodeReplaceFn = function(match, capture) {
return (capture in entityToChar) ? entityToChar[capture] : String.fromCharCode(parseInt(capture.substr(2), 10));
},
boundsCheck = function(s, other) {
if (s === null || s === undefined || other === null || other === undefined) {
return false;
}
return other.length <= s.length;
},
ExtString;
return ExtString = {
insert: function(s, value, index) {
if (!s) {
return value;
}
if (!value) {
return s;
}
var len = s.length;
if (!index && index !== 0) {
index = len;
}
if (index < 0) {
index *= -1;
if (index >= len) {
index = 0;
} else {
index = len - index;
}
}
if (index === 0) {
s = value + s;
} else if (index >= s.length) {
s += value;
} else {
s = s.substr(0, index) + value + s.substr(index);
}
return s;
},
startsWith: function(s, start, ignoreCase) {
var result = boundsCheck(s, start);
if (result) {
if (ignoreCase) {
s = s.toLowerCase();
start = start.toLowerCase();
}
result = s.lastIndexOf(start, 0) === 0;
}
return result;
},
endsWith: function(s, end, ignoreCase) {
var result = boundsCheck(s, end);
if (result) {
if (ignoreCase) {
s = s.toLowerCase();
end = end.toLowerCase();
}
result = s.indexOf(end, s.length - end.length) !== -1;
}
return result;
},
createVarName: function(s) {
return s.replace(varReplace, '');
},
htmlEncode: function(value) {
return (!value) ? value : String(value).replace(charToEntityRegex, htmlEncodeReplaceFn);
},
htmlDecode: function(value) {
return (!value) ? value : String(value).replace(entityToCharRegex, htmlDecodeReplaceFn);
},
hasHtmlCharacters: function(s) {
return charToEntityRegex.test(s);
},
addCharacterEntities: function(newEntities) {
var charKeys = [],
entityKeys = [],
key, echar;
for (key in newEntities) {
echar = newEntities[key];
entityToChar[key] = echar;
charToEntity[echar] = key;
charKeys.push(echar);
entityKeys.push(key);
}
charToEntityRegex = new RegExp('(' + charKeys.join('|') + ')', 'g');
entityToCharRegex = new RegExp('(' + entityKeys.join('|') + '|&#[0-9]{1,5};' + ')', 'g');
},
resetCharacterEntities: function() {
charToEntity = {};
entityToChar = {};
this.addCharacterEntities({
'&amp;': '&',
'&gt;': '>',
'&lt;': '<',
'&quot;': '"',
'&#39;': "'"
});
},
urlAppend: function(url, string) {
if (!Ext.isEmpty(string)) {
return url + (url.indexOf('?') === -1 ? '?' : '&') + string;
}
return url;
},
trim: function(string) {
if (string) {
string = string.replace(trimRegex, "");
}
return string || '';
},
capitalize: function(string) {
if (string) {
string = string.charAt(0).toUpperCase() + string.substr(1);
}
return string || '';
},
uncapitalize: function(string) {
if (string) {
string = string.charAt(0).toLowerCase() + string.substr(1);
}
return string || '';
},
ellipsis: function(value, length, word) {
if (value && value.length > length) {
if (word) {
var vs = value.substr(0, length - 2),
index = Math.max(vs.lastIndexOf(' '), vs.lastIndexOf('.'), vs.lastIndexOf('!'), vs.lastIndexOf('?'));
if (index !== -1 && index >= (length - 15)) {
return vs.substr(0, index) + "...";
}
}
return value.substr(0, length - 3) + "...";
}
return value;
},
escapeRegex: function(string) {
return string.replace(escapeRegexRe, "\\$1");
},
createRegex: function(value, startsWith, endsWith, ignoreCase) {
var ret = value;
if (value != null && !value.exec) {
ret = ExtString.escapeRegex(String(value));
if (startsWith !== false) {
ret = '^' + ret;
}
if (endsWith !== false) {
ret += '$';
}
ret = new RegExp(ret, (ignoreCase !== false) ? 'i' : '');
}
return ret;
},
escape: function(string) {
return string.replace(escapeRe, "\\$1");
},
toggle: function(string, value, other) {
return string === value ? other : value;
},
leftPad: function(string, size, character) {
var result = String(string);
character = character || " ";
while (result.length < size) {
result = character + result;
}
return result;
},
repeat: function(pattern, count, sep) {
if (count < 1) {
count = 0;
}
for (var buf = [],
i = count; i--; ) {
buf.push(pattern);
}
return buf.join(sep || '');
},
splitWords: function(words) {
if (words && typeof words == 'string') {
return words.replace(basicTrimRe, '').split(whitespaceRe);
}
return words || [];
}
};
}());
Ext.String.resetCharacterEntities();
Ext.htmlEncode = Ext.String.htmlEncode;
Ext.htmlDecode = Ext.String.htmlDecode;
Ext.urlAppend = Ext.String.urlAppend;
Ext.Date = (function() {
var utilDate,
nativeDate = Date,
stripEscapeRe = /(\\.)/g,
hourInfoRe = /([gGhHisucUOPZ]|MS)/,
dateInfoRe = /([djzmnYycU]|MS)/,
slashRe = /\\/gi,
numberTokenRe = /\{(\d+)\}/g,
MSFormatRe = new RegExp('\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/'),
pad = Ext.String.leftPad,
code = [
"var me = this, dt, y, m, d, h, i, s, ms, o, O, z, zz, u, v, W, year, jan4, week1monday, daysInMonth, dayMatched,",
"def = me.defaults,",
"from = Ext.Number.from,",
"results = String(input).match(me.parseRegexes[{0}]);",
"if(results){",
"{1}",
"if(u != null){",
"v = new Date(u * 1000);",
"}else{",
"dt = me.clearTime(new Date);",
"y = from(y, from(def.y, dt.getFullYear()));",
"m = from(m, from(def.m - 1, dt.getMonth()));",
"dayMatched = d !== undefined;",
"d = from(d, from(def.d, dt.getDate()));",
"if (!dayMatched) {",
"dt.setDate(1);",
"dt.setMonth(m);",
"dt.setFullYear(y);",
"daysInMonth = me.getDaysInMonth(dt);",
"if (d > daysInMonth) {",
"d = daysInMonth;",
"}",
"}",
"h = from(h, from(def.h, dt.getHours()));",
"i = from(i, from(def.i, dt.getMinutes()));",
"s = from(s, from(def.s, dt.getSeconds()));",
"ms = from(ms, from(def.ms, dt.getMilliseconds()));",
"if(z >= 0 && y >= 0){",
"v = me.add(new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);",
"v = !strict? v : (strict === true && (z <= 364 || (me.isLeapYear(v) && z <= 365))? me.add(v, me.DAY, z) : null);",
"}else if(strict === true && !me.isValid(y, m + 1, d, h, i, s, ms)){",
"v = null;",
"}else{",
"if (W) {",
"year = y || (new Date()).getFullYear();",
"jan4 = new Date(year, 0, 4, 0, 0, 0);",
"d = jan4.getDay();",
"week1monday = new Date(jan4.getTime() - ((d === 0 ? 6 : d - 1) * 86400000));",
"v = Ext.Date.clearTime(new Date(week1monday.getTime() + ((W - 1) * 604800000 + 43200000)));",
"} else {",
"v = me.add(new Date(y < 100 ? 100 : y, m, d, h, i, s, ms), me.YEAR, y < 100 ? y - 100 : 0);",
"}",
"}",
"}",
"}",
"if(v){",
"if(zz != null){",
"v = me.add(v, me.SECOND, -v.getTimezoneOffset() * 60 - zz);",
"}else if(o){",
"v = me.add(v, me.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));",
"}",
"}",
"return (v != null) ? v : null;"
].join('\n');
if (!Date.prototype.toISOString) {
Date.prototype.toISOString = function() {
var me = this;
return pad(me.getUTCFullYear(), 4, '0') + '-' + pad(me.getUTCMonth() + 1, 2, '0') + '-' + pad(me.getUTCDate(), 2, '0') + 'T' + pad(me.getUTCHours(), 2, '0') + ':' + pad(me.getUTCMinutes(), 2, '0') + ':' + pad(me.getUTCSeconds(), 2, '0') + '.' + pad(me.getUTCMilliseconds(), 3, '0') + 'Z';
};
}
function xf(format) {
var args = Array.prototype.slice.call(arguments, 1);
return format.replace(numberTokenRe, function(m, i) {
return args[i];
});
}
return utilDate = {
now: nativeDate.now,
toString: function(date) {
if (!date) {
date = new nativeDate();
}
return date.getFullYear() + "-" + pad(date.getMonth() + 1, 2, '0') + "-" + pad(date.getDate(), 2, '0') + "T" + pad(date.getHours(), 2, '0') + ":" + pad(date.getMinutes(), 2, '0') + ":" + pad(date.getSeconds(), 2, '0');
},
getElapsed: function(dateA, dateB) {
return Math.abs(dateA - (dateB || utilDate.now()));
},
useStrict: false,
formatCodeToRegex: function(character, currentGroup) {
var p = utilDate.parseCodes[character];
if (p) {
p = typeof p === 'function' ? p() : p;
utilDate.parseCodes[character] = p;
}
return p ? Ext.applyIf({
c: p.c ? xf(p.c, currentGroup || "{0}") : p.c
}, p) : {
g: 0,
c: null,
s: Ext.String.escapeRegex(character)
};
},
parseFunctions: {
"MS": function(input, strict) {
var r = (input || '').match(MSFormatRe);
return r ? new nativeDate(((r[1] || '') + r[2]) * 1) : null;
},
"time": function(input, strict) {
var num = parseInt(input, 10);
if (num || num === 0) {
return new nativeDate(num);
}
return null;
},
"timestamp": function(input, strict) {
var num = parseInt(input, 10);
if (num || num === 0) {
return new nativeDate(num * 1000);
}
return null;
}
},
parseRegexes: [],
formatFunctions: {
"MS": function() {
return '\\/Date(' + this.getTime() + ')\\/';
},
"time": function() {
return this.getTime().toString();
},
"timestamp": function() {
return utilDate.format(this, 'U');
}
},
y2kYear: 50,
MILLI: "ms",
SECOND: "s",
MINUTE: "mi",
HOUR: "h",
DAY: "d",
MONTH: "mo",
YEAR: "y",
defaults: {},
dayNames: [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
],
monthNames: [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
],
monthNumbers: {
January: 0,
Jan: 0,
February: 1,
Feb: 1,
March: 2,
Mar: 2,
April: 3,
Apr: 3,
May: 4,
June: 5,
Jun: 5,
July: 6,
Jul: 6,
August: 7,
Aug: 7,
September: 8,
Sep: 8,
October: 9,
Oct: 9,
November: 10,
Nov: 10,
December: 11,
Dec: 11
},
defaultFormat: "m/d/Y",
getShortMonthName: function(month) {
return utilDate.monthNames[month].substring(0, 3);
},
getShortDayName: function(day) {
return utilDate.dayNames[day].substring(0, 3);
},
getMonthNumber: function(name) {
return utilDate.monthNumbers[name.substring(0, 1).toUpperCase() + name.substring(1, 3).toLowerCase()];
},
formatContainsHourInfo: function(format) {
return hourInfoRe.test(format.replace(stripEscapeRe, ''));
},
formatContainsDateInfo: function(format) {
return dateInfoRe.test(format.replace(stripEscapeRe, ''));
},
unescapeFormat: function(format) {
return format.replace(slashRe, '');
},
formatCodes: {
d: "Ext.String.leftPad(m.getDate(), 2, '0')",
D: "Ext.Date.getShortDayName(m.getDay())",
j: "m.getDate()",
l: "Ext.Date.dayNames[m.getDay()]",
N: "(m.getDay() ? m.getDay() : 7)",
S: "Ext.Date.getSuffix(m)",
w: "m.getDay()",
z: "Ext.Date.getDayOfYear(m)",
W: "Ext.String.leftPad(Ext.Date.getWeekOfYear(m), 2, '0')",
F: "Ext.Date.monthNames[m.getMonth()]",
m: "Ext.String.leftPad(m.getMonth() + 1, 2, '0')",
M: "Ext.Date.getShortMonthName(m.getMonth())",
n: "(m.getMonth() + 1)",
t: "Ext.Date.getDaysInMonth(m)",
L: "(Ext.Date.isLeapYear(m) ? 1 : 0)",
o: "(m.getFullYear() + (Ext.Date.getWeekOfYear(m) == 1 && m.getMonth() > 0 ? +1 : (Ext.Date.getWeekOfYear(m) >= 52 && m.getMonth() < 11 ? -1 : 0)))",
Y: "Ext.String.leftPad(m.getFullYear(), 4, '0')",
y: "('' + m.getFullYear()).substring(2, 4)",
a: "(m.getHours() < 12 ? 'am' : 'pm')",
A: "(m.getHours() < 12 ? 'AM' : 'PM')",
g: "((m.getHours() % 12) ? m.getHours() % 12 : 12)",
G: "m.getHours()",
h: "Ext.String.leftPad((m.getHours() % 12) ? m.getHours() % 12 : 12, 2, '0')",
H: "Ext.String.leftPad(m.getHours(), 2, '0')",
i: "Ext.String.leftPad(m.getMinutes(), 2, '0')",
s: "Ext.String.leftPad(m.getSeconds(), 2, '0')",
u: "Ext.String.leftPad(m.getMilliseconds(), 3, '0')",
O: "Ext.Date.getGMTOffset(m)",
P: "Ext.Date.getGMTOffset(m, true)",
T: "Ext.Date.getTimezone(m)",
Z: "(m.getTimezoneOffset() * -60)",
c: function() {
var c = "Y-m-dTH:i:sP",
code = [],
i,
l = c.length,
e;
for (i = 0; i < l; ++i) {
e = c.charAt(i);
code.push(e === "T" ? "'T'" : utilDate.getFormatCode(e));
}
return code.join(" + ");
},
C: function() {
return 'm.toISOString()';
},
U: "Math.round(m.getTime() / 1000)"
},
isValid: function(y, m, d, h, i, s, ms) {
h = h || 0;
i = i || 0;
s = s || 0;
ms = ms || 0;
var dt = utilDate.add(new nativeDate(y < 100 ? 100 : y, m - 1, d, h, i, s, ms), utilDate.YEAR, y < 100 ? y - 100 : 0);
return y === dt.getFullYear() && m === dt.getMonth() + 1 && d === dt.getDate() && h === dt.getHours() && i === dt.getMinutes() && s === dt.getSeconds() && ms === dt.getMilliseconds();
},
parse: function(input, format, strict) {
var p = utilDate.parseFunctions;
if (p[format] == null) {
utilDate.createParser(format);
}
return p[format].call(utilDate, input, Ext.isDefined(strict) ? strict : utilDate.useStrict);
},
parseDate: function(input, format, strict) {
return utilDate.parse(input, format, strict);
},
getFormatCode: function(character) {
var f = utilDate.formatCodes[character];
if (f) {
f = typeof f === 'function' ? f() : f;
utilDate.formatCodes[character] = f;
}
return f || ("'" + Ext.String.escape(character) + "'");
},
createFormat: function(format) {
var code = [],
special = false,
ch = '',
i;
for (i = 0; i < format.length; ++i) {
ch = format.charAt(i);
if (!special && ch === "\\") {
special = true;
} else if (special) {
special = false;
code.push("'" + Ext.String.escape(ch) + "'");
} else {
if (ch === '\n') {
code.push("'\\n'");
} else {
code.push(utilDate.getFormatCode(ch));
}
}
}
utilDate.formatFunctions[format] = Ext.functionFactory("var m=this;return " + code.join('+'));
},
createParser: function(format) {
var regexNum = utilDate.parseRegexes.length,
currentGroup = 1,
calc = [],
regex = [],
special = false,
ch = "",
i = 0,
len = format.length,
atEnd = [],
obj;
for (; i < len; ++i) {
ch = format.charAt(i);
if (!special && ch === "\\") {
special = true;
} else if (special) {
special = false;
regex.push(Ext.String.escape(ch));
} else {
obj = utilDate.formatCodeToRegex(ch, currentGroup);
currentGroup += obj.g;
regex.push(obj.s);
if (obj.g && obj.c) {
if (obj.calcAtEnd) {
atEnd.push(obj.c);
} else {
calc.push(obj.c);
}
}
}
}
calc = calc.concat(atEnd);
utilDate.parseRegexes[regexNum] = new RegExp("^" + regex.join('') + "$", 'i');
utilDate.parseFunctions[format] = Ext.functionFactory("input", "strict", xf(code, regexNum, calc.join('')));
},
parseCodes: {
d: {
g: 1,
c: "d = parseInt(results[{0}], 10);\n",
s: "(3[0-1]|[1-2][0-9]|0[1-9])"
},
j: {
g: 1,
c: "d = parseInt(results[{0}], 10);\n",
s: "(3[0-1]|[1-2][0-9]|[1-9])"
},
D: function() {
for (var a = [],
i = 0; i < 7; a.push(utilDate.getShortDayName(i)) , ++i){}
return {
g: 0,
c: null,
s: "(?:" + a.join("|") + ")"
};
},
l: function() {
return {
g: 0,
c: null,
s: "(?:" + utilDate.dayNames.join("|") + ")"
};
},
N: {
g: 0,
c: null,
s: "[1-7]"
},
S: {
g: 0,
c: null,
s: "(?:st|nd|rd|th)"
},
w: {
g: 0,
c: null,
s: "[0-6]"
},
z: {
g: 1,
c: "z = parseInt(results[{0}], 10);\n",
s: "(\\d{1,3})"
},
W: {
g: 1,
c: "W = parseInt(results[{0}], 10);\n",
s: "(\\d{2})"
},
F: function() {
return {
g: 1,
c: "m = parseInt(me.getMonthNumber(results[{0}]), 10);\n",
s: "(" + utilDate.monthNames.join("|") + ")"
};
},
M: function() {
for (var a = [],
i = 0; i < 12; a.push(utilDate.getShortMonthName(i)) , ++i){}
return Ext.applyIf({
s: "(" + a.join("|") + ")"
}, utilDate.formatCodeToRegex("F"));
},
m: {
g: 1,
c: "m = parseInt(results[{0}], 10) - 1;\n",
s: "(1[0-2]|0[1-9])"
},
n: {
g: 1,
c: "m = parseInt(results[{0}], 10) - 1;\n",
s: "(1[0-2]|[1-9])"
},
t: {
g: 0,
c: null,
s: "(?:\\d{2})"
},
L: {
g: 0,
c: null,
s: "(?:1|0)"
},
o: {
g: 1,
c: "y = parseInt(results[{0}], 10);\n",
s: "(\\d{4})"
},
Y: {
g: 1,
c: "y = parseInt(results[{0}], 10);\n",
s: "(\\d{4})"
},
y: {
g: 1,
c: "var ty = parseInt(results[{0}], 10);\n" + "y = ty > me.y2kYear ? 1900 + ty : 2000 + ty;\n",
s: "(\\d{2})"
},
a: {
g: 1,
c: "if (/(am)/i.test(results[{0}])) {\n" + "if (!h || h == 12) { h = 0; }\n" + "} else { if (!h || h < 12) { h = (h || 0) + 12; }}",
s: "(am|pm|AM|PM)",
calcAtEnd: true
},
A: {
g: 1,
c: "if (/(am)/i.test(results[{0}])) {\n" + "if (!h || h == 12) { h = 0; }\n" + "} else { if (!h || h < 12) { h = (h || 0) + 12; }}",
s: "(AM|PM|am|pm)",
calcAtEnd: true
},
g: {
g: 1,
c: "h = parseInt(results[{0}], 10);\n",
s: "(1[0-2]|[0-9])"
},
G: {
g: 1,
c: "h = parseInt(results[{0}], 10);\n",
s: "(2[0-3]|1[0-9]|[0-9])"
},
h: {
g: 1,
c: "h = parseInt(results[{0}], 10);\n",
s: "(1[0-2]|0[1-9])"
},
H: {
g: 1,
c: "h = parseInt(results[{0}], 10);\n",
s: "(2[0-3]|[0-1][0-9])"
},
i: {
g: 1,
c: "i = parseInt(results[{0}], 10);\n",
s: "([0-5][0-9])"
},
s: {
g: 1,
c: "s = parseInt(results[{0}], 10);\n",
s: "([0-5][0-9])"
},
u: {
g: 1,
c: "ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",
s: "(\\d+)"
},
O: {
g: 1,
c: [
"o = results[{0}];",
"var sn = o.substring(0,1),",
"hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),",
"mn = o.substring(3,5) % 60;",
"o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"
].
join("\n"),
s: "([+-]\\d{4})"
},
P: {
g: 1,
c: [
"o = results[{0}];",
"var sn = o.substring(0,1),",
"hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),",
"mn = o.substring(4,6) % 60;",
"o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + Ext.String.leftPad(hr, 2, '0') + Ext.String.leftPad(mn, 2, '0')) : null;\n"
].
join("\n"),
s: "([+-]\\d{2}:\\d{2})"
},
T: {
g: 0,
c: null,
s: "[A-Z]{1,5}"
},
Z: {
g: 1,
c: "zz = results[{0}] * 1;\n" +
"zz = (-43200 <= zz && zz <= 50400)? zz : null;\n",
s: "([+-]?\\d{1,5})"
},
c: function() {
var calc = [],
arr = [
utilDate.formatCodeToRegex("Y", 1),
utilDate.formatCodeToRegex("m", 2),
utilDate.formatCodeToRegex("d", 3),
utilDate.formatCodeToRegex("H", 4),
utilDate.formatCodeToRegex("i", 5),
utilDate.formatCodeToRegex("s", 6),
{
c: "ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"
},
{
c: [
"if(results[8]) {",
"if(results[8] == 'Z'){",
"zz = 0;",
"}else if (results[8].indexOf(':') > -1){",
utilDate.formatCodeToRegex("P", 8).c,
"}else{",
utilDate.formatCodeToRegex("O", 8).c,
"}",
"}"
].join('\n')
}
],
i, l;
for (i = 0 , l = arr.length; i < l; ++i) {
calc.push(arr[i].c);
}
return {
g: 1,
c: calc.join(""),
s: [
arr[0].s,
"(?:",
"-",
arr[1].s,
"(?:",
"-",
arr[2].s,
"(?:",
"(?:T| )?",
arr[3].s,
":",
arr[4].s,
"(?::",
arr[5].s,
")?",
"(?:(?:\\.|,)(\\d+))?",
"(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?",
")?",
")?",
")?"
].join("")
};
},
U: {
g: 1,
c: "u = parseInt(results[{0}], 10);\n",
s: "(-?\\d+)"
}
},
dateFormat: function(date, format) {
return utilDate.format(date, format);
},
isEqual: function(date1, date2) {
if (date1 && date2) {
return (date1.getTime() === date2.getTime());
}
return !(date1 || date2);
},
format: function(date, format) {
var formatFunctions = utilDate.formatFunctions;
if (!Ext.isDate(date)) {
return '';
}
if (formatFunctions[format] == null) {
utilDate.createFormat(format);
}
return formatFunctions[format].call(date) + '';
},
getTimezone: function(date) {
return date.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,5})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/, "$1$2").replace(/[^A-Z]/g, "");
},
getGMTOffset: function(date, colon) {
var offset = date.getTimezoneOffset();
return (offset > 0 ? "-" : "+") + Ext.String.leftPad(Math.floor(Math.abs(offset) / 60), 2, "0") + (colon ? ":" : "") + Ext.String.leftPad(Math.abs(offset % 60), 2, "0");
},
getDayOfYear: function(date) {
var num = 0,
d = utilDate.clone(date),
m = date.getMonth(),
i;
for (i = 0 , d.setDate(1) , d.setMonth(0); i < m; d.setMonth(++i)) {
num += utilDate.getDaysInMonth(d);
}
return num + date.getDate() - 1;
},
getWeekOfYear: (function() {
var ms1d = 86400000,
ms7d = 7 * ms1d;
return function(date) {
var DC3 = nativeDate.UTC(date.getFullYear(), date.getMonth(), date.getDate() + 3) / ms1d,
AWN = Math.floor(DC3 / 7),
Wyr = new nativeDate(AWN * ms7d).getUTCFullYear();
return AWN - Math.floor(nativeDate.UTC(Wyr, 0, 7) / ms7d) + 1;
};
}()),
isLeapYear: function(date) {
var year = date.getFullYear();
return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)));
},
getFirstDayOfMonth: function(date) {
var day = (date.getDay() - (date.getDate() - 1)) % 7;
return (day < 0) ? (day + 7) : day;
},
getLastDayOfMonth: function(date) {
return utilDate.getLastDateOfMonth(date).getDay();
},
getFirstDateOfMonth: function(date) {
return new nativeDate(date.getFullYear(), date.getMonth(), 1);
},
getLastDateOfMonth: function(date) {
return new nativeDate(date.getFullYear(), date.getMonth(), utilDate.getDaysInMonth(date));
},
getDaysInMonth: (function() {
var daysInMonth = [
31,
28,
31,
30,
31,
30,
31,
31,
30,
31,
30,
31
];
return function(date) {
var m = date.getMonth();
return m === 1 && utilDate.isLeapYear(date) ? 29 : daysInMonth[m];
};
}()),
getSuffix: function(date) {
switch (date.getDate()) {
case 1:
case 21:
case 31:
return "st";
case 2:
case 22:
return "nd";
case 3:
case 23:
return "rd";
default:
return "th";
}
},
clone: function(date) {
return new nativeDate(date.getTime());
},
isDST: function(date) {
return new nativeDate(date.getFullYear(), 0, 1).getTimezoneOffset() !== date.getTimezoneOffset();
},
clearTime: function(date, clone) {
if (clone) {
return utilDate.clearTime(utilDate.clone(date));
}
var d = date.getDate(),
hr, c;
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
date.setMilliseconds(0);
if (date.getDate() !== d) {
for (hr = 1 , c = utilDate.add(date, utilDate.HOUR, hr); c.getDate() !== d; hr++ , c = utilDate.add(date, utilDate.HOUR, hr)){}
date.setDate(d);
date.setHours(c.getHours());
}
return date;
},
add: function(date, interval, value) {
var d = utilDate.clone(date),
day, decimalValue,
base = 0;
if (!interval || value === 0) {
return d;
}
decimalValue = value - parseInt(value, 10);
value = parseInt(value, 10);
if (value) {
switch (interval.toLowerCase()) {
case utilDate.MILLI:
d.setTime(d.getTime() + value);
break;
case utilDate.SECOND:
d.setTime(d.getTime() + value * 1000);
break;
case utilDate.MINUTE:
d.setTime(d.getTime() + value * 60 * 1000);
break;
case utilDate.HOUR:
d.setTime(d.getTime() + value * 60 * 60 * 1000);
break;
case utilDate.DAY:
d.setDate(d.getDate() + value);
break;
case utilDate.MONTH:
day = date.getDate();
if (day > 28) {
day = Math.min(day, utilDate.getLastDateOfMonth(utilDate.add(utilDate.getFirstDateOfMonth(date), utilDate.MONTH, value)).getDate());
};
d.setDate(day);
d.setMonth(date.getMonth() + value);
break;
case utilDate.YEAR:
day = date.getDate();
if (day > 28) {
day = Math.min(day, utilDate.getLastDateOfMonth(utilDate.add(utilDate.getFirstDateOfMonth(date), utilDate.YEAR, value)).getDate());
};
d.setDate(day);
d.setFullYear(date.getFullYear() + value);
break;
}
}
if (decimalValue) {
switch (interval.toLowerCase()) {
case utilDate.MILLI:
base = 1;
break;
case utilDate.SECOND:
base = 1000;
break;
case utilDate.MINUTE:
base = 1000 * 60;
break;
case utilDate.HOUR:
base = 1000 * 60 * 60;
break;
case utilDate.DAY:
base = 1000 * 60 * 60 * 24;
break;
case utilDate.MONTH:
day = utilDate.getDaysInMonth(d);
base = 1000 * 60 * 60 * 24 * day;
break;
case utilDate.YEAR:
day = (utilDate.isLeapYear(d) ? 366 : 365);
base = 1000 * 60 * 60 * 24 * day;
break;
}
if (base) {
d.setTime(d.getTime() + base * decimalValue);
}
}
return d;
},
subtract: function(date, interval, value) {
return utilDate.add(date, interval, -value);
},
between: function(date, start, end) {
var t = date.getTime();
return start.getTime() <= t && t <= end.getTime();
},
compat: function() {
var p,
statics = [
'useStrict',
'formatCodeToRegex',
'parseFunctions',
'parseRegexes',
'formatFunctions',
'y2kYear',
'MILLI',
'SECOND',
'MINUTE',
'HOUR',
'DAY',
'MONTH',
'YEAR',
'defaults',
'dayNames',
'monthNames',
'monthNumbers',
'getShortMonthName',
'getShortDayName',
'getMonthNumber',
'formatCodes',
'isValid',
'parseDate',
'getFormatCode',
'createFormat',
'createParser',
'parseCodes'
],
proto = [
'dateFormat',
'format',
'getTimezone',
'getGMTOffset',
'getDayOfYear',
'getWeekOfYear',
'isLeapYear',
'getFirstDayOfMonth',
'getLastDayOfMonth',
'getDaysInMonth',
'getSuffix',
'clone',
'isDST',
'clearTime',
'add',
'between'
],
sLen = statics.length,
pLen = proto.length,
stat, prot, s;
for (s = 0; s < sLen; s++) {
stat = statics[s];
nativeDate[stat] = utilDate[stat];
}
for (p = 0; p < pLen; p++) {
prot = proto[p];
nativeDate.prototype[prot] = function() {
var args = Array.prototype.slice.call(arguments);
args.unshift(this);
return utilDate[prot].apply(utilDate, args);
};
}
},
diff: function(min, max, unit) {
var est,
diff = +max - min;
switch (unit) {
case utilDate.MILLI:
return diff;
case utilDate.SECOND:
return Math.floor(diff / 1000);
case utilDate.MINUTE:
return Math.floor(diff / 60000);
case utilDate.HOUR:
return Math.floor(diff / 3600000);
case utilDate.DAY:
return Math.floor(diff / 86400000);
case 'w':
return Math.floor(diff / 604800000);
case utilDate.MONTH:
est = (max.getFullYear() * 12 + max.getMonth()) - (min.getFullYear() * 12 + min.getMonth());
if (utilDate.add(min, unit, est) > max) {
return est - 1;
};
return est;
case utilDate.YEAR:
est = max.getFullYear() - min.getFullYear();
if (utilDate.add(min, unit, est) > max) {
return est - 1;
} else {
return est;
};
}
},
align: function(date, unit, step) {
var num = new nativeDate(+date);
switch (unit.toLowerCase()) {
case utilDate.MILLI:
return num;
case utilDate.SECOND:
num.setUTCSeconds(num.getUTCSeconds() - num.getUTCSeconds() % step);
num.setUTCMilliseconds(0);
return num;
case utilDate.MINUTE:
num.setUTCMinutes(num.getUTCMinutes() - num.getUTCMinutes() % step);
num.setUTCSeconds(0);
num.setUTCMilliseconds(0);
return num;
case utilDate.HOUR:
num.setUTCHours(num.getUTCHours() - num.getUTCHours() % step);
num.setUTCMinutes(0);
num.setUTCSeconds(0);
num.setUTCMilliseconds(0);
return num;
case utilDate.DAY:
if (step === 7 || step === 14) {
num.setUTCDate(num.getUTCDate() - num.getUTCDay() + 1);
};
num.setUTCHours(0);
num.setUTCMinutes(0);
num.setUTCSeconds(0);
num.setUTCMilliseconds(0);
return num;
case utilDate.MONTH:
num.setUTCMonth(num.getUTCMonth() - (num.getUTCMonth() - 1) % step, 1);
num.setUTCHours(0);
num.setUTCMinutes(0);
num.setUTCSeconds(0);
num.setUTCMilliseconds(0);
return num;
case utilDate.YEAR:
num.setUTCFullYear(num.getUTCFullYear() - num.getUTCFullYear() % step, 1, 1);
num.setUTCHours(0);
num.setUTCMinutes(0);
num.setUTCSeconds(0);
num.setUTCMilliseconds(0);
return date;
}
}
};
}());
Ext.Function = (function() {
var lastTime = 0,
animFrameId,
animFrameHandlers = [],
animFrameNoArgs = [],
idSource = 0,
animFrameMap = {},
win = window,
requestAnimFrame = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.oRequestAnimationFrame || function(callback) {
var currTime = Ext.now(),
timeToCall = Math.max(0, 16 - (currTime - lastTime)),
id = win.setTimeout(function() {
callback(currTime + timeToCall);
}, timeToCall);
lastTime = currTime + timeToCall;
return id;
},
fireHandlers = function() {
var len = animFrameHandlers.length,
id, i, handler;
animFrameId = null;
for (i = 0; i < len; i++) {
handler = animFrameHandlers[i];
id = handler[3];
if (animFrameMap[id]) {
handler[0].apply(handler[1] || Ext.global, handler[2] || animFrameNoArgs);
delete animFrameMap[id];
}
}
animFrameHandlers = animFrameHandlers.slice(len);
},
fireElevatedHandlers = function() {
Ext.elevateFunction(fireHandlers);
},
ExtFunction = {
flexSetter: function(setter) {
return function(name, value) {
var k, i;
if (name !== null) {
if (typeof name !== 'string') {
for (k in name) {
if (name.hasOwnProperty(k)) {
setter.call(this, k, name[k]);
}
}
if (Ext.enumerables) {
for (i = Ext.enumerables.length; i--; ) {
k = Ext.enumerables[i];
if (name.hasOwnProperty(k)) {
setter.call(this, k, name[k]);
}
}
}
} else {
setter.call(this, name, value);
}
}
return this;
};
},
bind: function(fn, scope, args, appendArgs) {
if (arguments.length === 2) {
return function() {
return fn.apply(scope, arguments);
};
}
var method = fn,
slice = Array.prototype.slice;
return function() {
var callArgs = args || arguments;
if (appendArgs === true) {
callArgs = slice.call(arguments, 0);
callArgs = callArgs.concat(args);
} else if (typeof appendArgs == 'number') {
callArgs = slice.call(arguments, 0);
Ext.Array.insert(callArgs, appendArgs, args);
}
return method.apply(scope || Ext.global, callArgs);
};
},
bindCallback: function(callback, scope, args, delay, caller) {
return function() {
var a = Ext.Array.slice(arguments);
return Ext.callback(callback, scope, args ? args.concat(a) : a, delay, caller);
};
},
pass: function(fn, args, scope) {
if (!Ext.isArray(args)) {
if (Ext.isIterable(args)) {
args = Ext.Array.clone(args);
} else {
args = args !== undefined ? [
args
] : [];
}
}
return function() {
var fnArgs = args.slice();
fnArgs.push.apply(fnArgs, arguments);
return fn.apply(scope || this, fnArgs);
};
},
alias: function(object, methodName) {
return function() {
return object[methodName].apply(object, arguments);
};
},
clone: function(method) {
return function() {
return method.apply(this, arguments);
};
},
createInterceptor: function(origFn, newFn, scope, returnValue) {
if (!Ext.isFunction(newFn)) {
return origFn;
} else {
returnValue = Ext.isDefined(returnValue) ? returnValue : null;
return function() {
var me = this,
args = arguments;
newFn.target = me;
newFn.method = origFn;
return (newFn.apply(scope || me || Ext.global, args) !== false) ? origFn.apply(me || Ext.global, args) : returnValue;
};
}
},
createDelayed: function(fn, delay, scope, args, appendArgs) {
if (scope || args) {
fn = Ext.Function.bind(fn, scope, args, appendArgs);
}
return function() {
var me = this,
args = Array.prototype.slice.call(arguments);
setTimeout(function() {
if (Ext.elevateFunction) {
Ext.elevateFunction(fn, me, args);
} else {
fn.apply(me, args);
}
}, delay);
};
},
defer: function(fn, millis, scope, args, appendArgs) {
fn = Ext.Function.bind(fn, scope, args, appendArgs);
if (millis > 0) {
return setTimeout(function() {
if (Ext.elevateFunction) {
Ext.elevateFunction(fn);
} else {
fn();
}
}, millis);
}
fn();
return 0;
},
interval: function(fn, millis, scope, args, appendArgs) {
fn = Ext.Function.bind(fn, scope, args, appendArgs);
return setInterval(function() {
if (Ext.elevateFunction) {
Ext.elevateFunction(fn);
} else {
fn();
}
}, millis);
},
createSequence: function(originalFn, newFn, scope) {
if (!newFn) {
return originalFn;
} else {
return function() {
var result = originalFn.apply(this, arguments);
newFn.apply(scope || this, arguments);
return result;
};
}
},
createBuffered: function(fn, buffer, scope, args) {
var timerId;
return function() {
var callArgs = args || Array.prototype.slice.call(arguments, 0),
me = scope || this;
if (timerId) {
clearTimeout(timerId);
}
timerId = setTimeout(function() {
if (Ext.elevateFunction) {
Ext.elevateFunction(fn, me, callArgs);
} else {
fn.apply(me, callArgs);
}
}, buffer);
};
},
createAnimationFrame: function(fn, scope, args, queueStrategy) {
var timerId;
queueStrategy = queueStrategy || 3;
return function() {
var callArgs = args || Array.prototype.slice.call(arguments, 0);
scope = scope || this;
if (queueStrategy === 3 && timerId) {
ExtFunction.cancelAnimationFrame(timerId);
}
if ((queueStrategy & 1) || !timerId) {
timerId = ExtFunction.requestAnimationFrame(function() {
timerId = null;
fn.apply(scope, callArgs);
});
}
};
},
requestAnimationFrame: function(fn, scope, args) {
var id = ++idSource,
handler = Array.prototype.slice.call(arguments, 0);
handler[3] = id;
animFrameMap[id] = 1;
animFrameHandlers.push(handler);
if (!animFrameId) {
animFrameId = requestAnimFrame(Ext.elevateFunction ? fireElevatedHandlers : fireHandlers);
}
return id;
},
cancelAnimationFrame: function(id) {
delete animFrameMap[id];
},
createThrottled: function(fn, interval, scope) {
var lastCallTime = 0,
elapsed, lastArgs, timer,
execute = function() {
if (Ext.elevateFunction) {
Ext.elevateFunction(fn, scope, lastArgs);
} else {
fn.apply(scope, lastArgs);
}
lastCallTime = Ext.now();
timer = null;
};
return function() {
if (!scope) {
scope = this;
}
elapsed = Ext.now() - lastCallTime;
lastArgs = arguments;
if (elapsed >= interval) {
clearTimeout(timer);
execute();
}
else if (!timer) {
timer = Ext.defer(execute, interval - elapsed);
}
};
},
createBarrier: function(count, fn, scope) {
return function() {
if (!--count) {
fn.apply(scope, arguments);
}
};
},
interceptBefore: function(object, methodName, fn, scope) {
var method = object[methodName] || Ext.emptyFn;
return (object[methodName] = function() {
var ret = fn.apply(scope || this, arguments);
method.apply(this, arguments);
return ret;
});
},
interceptAfter: function(object, methodName, fn, scope) {
var method = object[methodName] || Ext.emptyFn;
return (object[methodName] = function() {
method.apply(this, arguments);
return fn.apply(scope || this, arguments);
});
},
makeCallback: function(callback, scope) {
if (!scope[callback]) {
if (scope.$className) {
Ext.Error.raise('No method "' + callback + '" on ' + scope.$className);
}
Ext.Error.raise('No method "' + callback + '"');
}
return function() {
return scope[callback].apply(scope, arguments);
};
}
};
Ext.defer = ExtFunction.defer;
Ext.interval = ExtFunction.interval;
Ext.pass = ExtFunction.pass;
Ext.bind = ExtFunction.bind;
Ext.deferCallback = ExtFunction.requestAnimationFrame;
return ExtFunction;
})();
Ext.Number = (new function() {
var ExtNumber = this,
isToFixedBroken = (0.9).toFixed() !== '1',
math = Math,
ClipDefault = {
count: false,
inclusive: false,
wrap: true
};
Ext.apply(ExtNumber, {
Clip: {
DEFAULT: ClipDefault,
COUNT: Ext.applyIf({
count: true
}, ClipDefault),
INCLUSIVE: Ext.applyIf({
inclusive: true
}, ClipDefault),
NOWRAP: Ext.applyIf({
wrap: false
}, ClipDefault)
},
clipIndices: function(length, indices, options) {
options = options || ClipDefault;
var defaultValue = 0,
wrap = options.wrap,
begin, end, i;
indices = indices || [];
for (i = 0; i < 2; ++i) {
begin = end;
end = indices[i];
if (end == null) {
end = defaultValue;
} else if (i && options.count) {
end += begin;
end = (end > length) ? length : end;
} else {
if (wrap) {
end = (end < 0) ? (length + end) : end;
}
if (i && options.inclusive) {
++end;
}
end = (end < 0) ? 0 : ((end > length) ? length : end);
}
defaultValue = length;
}
indices[0] = begin;
indices[1] = (end < begin) ? begin : end;
return indices;
},
constrain: function(number, min, max) {
var x = parseFloat(number);
if (min === null) {
min = number;
}
if (max === null) {
max = number;
}
return (x < min) ? min : ((x > max) ? max : x);
},
snap: function(value, increment, minValue, maxValue) {
var m;
if (value === undefined || value < minValue) {
return minValue || 0;
}
if (increment) {
m = value % increment;
if (m !== 0) {
value -= m;
if (m * 2 >= increment) {
value += increment;
} else if (m * 2 < -increment) {
value -= increment;
}
}
}
return ExtNumber.constrain(value, minValue, maxValue);
},
snapInRange: function(value, increment, minValue, maxValue) {
var tween;
minValue = (minValue || 0);
if (value === undefined || value < minValue) {
return minValue;
}
if (increment && (tween = ((value - minValue) % increment))) {
value -= tween;
tween *= 2;
if (tween >= increment) {
value += increment;
}
}
if (maxValue !== undefined) {
if (value > (maxValue = ExtNumber.snapInRange(maxValue, increment, minValue))) {
value = maxValue;
}
}
return value;
},
sign: function(x) {
x = +x;
if (x === 0 || isNaN(x)) {
return x;
}
return (x > 0) ? 1 : -1;
},
toFixed: isToFixedBroken ? function(value, precision) {
precision = precision || 0;
var pow = math.pow(10, precision);
return (math.round(value * pow) / pow).toFixed(precision);
} : function(value, precision) {
return value.toFixed(precision);
},
from: function(value, defaultValue) {
if (isFinite(value)) {
value = parseFloat(value);
}
return !isNaN(value) ? value : defaultValue;
},
randomInt: function(from, to) {
return math.floor(math.random() * (to - from + 1) + from);
},
correctFloat: function(n) {
return parseFloat(n.toPrecision(14));
}
});
Ext.num = function() {
return ExtNumber.from.apply(this, arguments);
};
}());
(function() {
var TemplateClass = function() {},
queryRe = /^\?/,
keyRe = /(\[):?([^\]]*)\]/g,
nameRe = /^([^\[]+)/,
plusRe = /\+/g,
ExtObject = Ext.Object = {
chain: Object.create || function(object) {
TemplateClass.prototype = object;
var result = new TemplateClass();
TemplateClass.prototype = null;
return result;
},
clear: function(object) {
for (var key in object) {
delete object[key];
}
return object;
},
freeze: Object.freeze ? function(obj, deep) {
if (obj && typeof obj === 'object' && !Object.isFrozen(obj)) {
Object.freeze(obj);
if (deep) {
for (var name in obj) {
ExtObject.freeze(obj[name], deep);
}
}
}
return obj;
} : Ext.identityFn,
toQueryObjects: function(name, value, recursive) {
var self = ExtObject.toQueryObjects,
objects = [],
i, ln;
if (Ext.isArray(value)) {
for (i = 0 , ln = value.length; i < ln; i++) {
if (recursive) {
objects = objects.concat(self(name + '[' + i + ']', value[i], true));
} else {
objects.push({
name: name,
value: value[i]
});
}
}
} else if (Ext.isObject(value)) {
for (i in value) {
if (value.hasOwnProperty(i)) {
if (recursive) {
objects = objects.concat(self(name + '[' + i + ']', value[i], true));
} else {
objects.push({
name: name,
value: value[i]
});
}
}
}
} else {
objects.push({
name: name,
value: value
});
}
return objects;
},
toQueryString: function(object, recursive) {
var paramObjects = [],
params = [],
i, j, ln, paramObject, value;
for (i in object) {
if (object.hasOwnProperty(i)) {
paramObjects = paramObjects.concat(ExtObject.toQueryObjects(i, object[i], recursive));
}
}
for (j = 0 , ln = paramObjects.length; j < ln; j++) {
paramObject = paramObjects[j];
value = paramObject.value;
if (Ext.isEmpty(value)) {
value = '';
} else if (Ext.isDate(value)) {
value = Ext.Date.toString(value);
}
params.push(encodeURIComponent(paramObject.name) + '=' + encodeURIComponent(String(value)));
}
return params.join('&');
},
fromQueryString: function(queryString, recursive) {
var parts = queryString.replace(queryRe, '').split('&'),
object = {},
temp, components, name, value, i, ln, part, j, subLn, matchedKeys, matchedName, keys, key, nextKey;
for (i = 0 , ln = parts.length; i < ln; i++) {
part = parts[i];
if (part.length > 0) {
components = part.split('=');
name = components[0];
name = name.replace(plusRe, '%20');
name = decodeURIComponent(name);
value = components[1];
if (value !== undefined) {
value = value.replace(plusRe, '%20');
value = decodeURIComponent(value);
} else {
value = '';
}
if (!recursive) {
if (object.hasOwnProperty(name)) {
if (!Ext.isArray(object[name])) {
object[name] = [
object[name]
];
}
object[name].push(value);
} else {
object[name] = value;
}
} else {
matchedKeys = name.match(keyRe);
matchedName = name.match(nameRe);
if (!matchedName) {
throw new Error('[Ext.Object.fromQueryString] Malformed query string given, failed parsing name from "' + part + '"');
}
name = matchedName[0];
keys = [];
if (matchedKeys === null) {
object[name] = value;
continue;
}
for (j = 0 , subLn = matchedKeys.length; j < subLn; j++) {
key = matchedKeys[j];
key = (key.length === 2) ? '' : key.substring(1, key.length - 1);
keys.push(key);
}
keys.unshift(name);
temp = object;
for (j = 0 , subLn = keys.length; j < subLn; j++) {
key = keys[j];
if (j === subLn - 1) {
if (Ext.isArray(temp) && key === '') {
temp.push(value);
} else {
temp[key] = value;
}
} else {
if (temp[key] === undefined || typeof temp[key] === 'string') {
nextKey = keys[j + 1];
temp[key] = (Ext.isNumeric(nextKey) || nextKey === '') ? [] : {};
}
temp = temp[key];
}
}
}
}
}
return object;
},
each: function(object, fn, scope) {
var enumerables = Ext.enumerables,
i, property;
if (object) {
scope = scope || object;
for (property in object) {
if (object.hasOwnProperty(property)) {
if (fn.call(scope, property, object[property], object) === false) {
return;
}
}
}
if (enumerables) {
for (i = enumerables.length; i--; ) {
if (object.hasOwnProperty(property = enumerables[i])) {
if (fn.call(scope, property, object[property], object) === false) {
return;
}
}
}
}
}
},
eachValue: function(object, fn, scope) {
var enumerables = Ext.enumerables,
i, property;
scope = scope || object;
for (property in object) {
if (object.hasOwnProperty(property)) {
if (fn.call(scope, object[property]) === false) {
return;
}
}
}
if (enumerables) {
for (i = enumerables.length; i--; ) {
if (object.hasOwnProperty(property = enumerables[i])) {
if (fn.call(scope, object[property]) === false) {
return;
}
}
}
}
},
merge: function(destination) {
var i = 1,
ln = arguments.length,
mergeFn = ExtObject.merge,
cloneFn = Ext.clone,
object, key, value, sourceKey;
for (; i < ln; i++) {
object = arguments[i];
for (key in object) {
value = object[key];
if (value && value.constructor === Object) {
sourceKey = destination[key];
if (sourceKey && sourceKey.constructor === Object) {
mergeFn(sourceKey, value);
} else {
destination[key] = cloneFn(value);
}
} else {
destination[key] = value;
}
}
}
return destination;
},
mergeIf: function(destination) {
var i = 1,
ln = arguments.length,
cloneFn = Ext.clone,
object, key, value;
for (; i < ln; i++) {
object = arguments[i];
for (key in object) {
if (!(key in destination)) {
value = object[key];
if (value && value.constructor === Object) {
destination[key] = cloneFn(value);
} else {
destination[key] = value;
}
}
}
}
return destination;
},
getAllKeys: function(object) {
var keys = [],
property;
for (property in object) {
keys.push(property);
}
return keys;
},
getKey: function(object, value) {
for (var property in object) {
if (object.hasOwnProperty(property) && object[property] === value) {
return property;
}
}
return null;
},
getValues: function(object) {
var values = [],
property;
for (property in object) {
if (object.hasOwnProperty(property)) {
values.push(object[property]);
}
}
return values;
},
getKeys: (typeof Object.keys == 'function') ? function(object) {
if (!object) {
return [];
}
return Object.keys(object);
} : function(object) {
var keys = [],
property;
for (property in object) {
if (object.hasOwnProperty(property)) {
keys.push(property);
}
}
return keys;
},
getSize: function(object) {
var size = 0,
property;
for (property in object) {
if (object.hasOwnProperty(property)) {
size++;
}
}
return size;
},
isEmpty: function(object) {
for (var key in object) {
if (object.hasOwnProperty(key)) {
return false;
}
}
return true;
},
equals: (function() {
var check = function(o1, o2) {
var key;
for (key in o1) {
if (o1.hasOwnProperty(key)) {
if (o1[key] !== o2[key]) {
return false;
}
}
}
return true;
};
return function(object1, object2) {
if (object1 === object2) {
return true;
}
if (object1 && object2) {
return check(object1, object2) && check(object2, object1);
} else if (!object1 && !object2) {
return object1 === object2;
} else {
return false;
}
};
})(),
fork: function(obj) {
var ret, key, value;
if (obj && obj.constructor === Object) {
ret = ExtObject.chain(obj);
for (key in obj) {
value = obj[key];
if (value) {
if (value.constructor === Object) {
ret[key] = ExtObject.fork(value);
} else if (value instanceof Array) {
ret[key] = Ext.Array.clone(value);
}
}
}
} else {
ret = obj;
}
return ret;
},
defineProperty: ('defineProperty' in Object) ? Object.defineProperty : function(object, name, descriptor) {
if (!Object.prototype.__defineGetter__) {
return;
}
if (descriptor.get) {
object.__defineGetter__(name, descriptor.get);
}
if (descriptor.set) {
object.__defineSetter__(name, descriptor.set);
}
},
classify: function(object) {
var prototype = object,
objectProperties = [],
propertyClassesMap = {},
objectClass = function() {
var i = 0,
ln = objectProperties.length,
property;
for (; i < ln; i++) {
property = objectProperties[i];
this[property] = new propertyClassesMap[property]();
}
},
key, value;
for (key in object) {
if (object.hasOwnProperty(key)) {
value = object[key];
if (value && value.constructor === Object) {
objectProperties.push(key);
propertyClassesMap[key] = ExtObject.classify(value);
}
}
}
objectClass.prototype = prototype;
return objectClass;
}
};
Ext.merge = Ext.Object.merge;
Ext.mergeIf = Ext.Object.mergeIf;
}());
Ext.apply(Ext, {
_namedScopes: {
'this': {
isThis: 1
},
controller: {
isController: 1
},
self: {
isSelf: 1
},
'self.controller': {
isSelf: 1,
isController: 1
}
},
escapeId: (function() {
var validIdRe = /^[a-zA-Z_][a-zA-Z0-9_\-]*$/i,
escapeRx = /([\W]{1})/g,
leadingNumRx = /^(\d)/g,
escapeFn = function(match, capture) {
return "\\" + capture;
},
numEscapeFn = function(match, capture) {
return '\\00' + capture.charCodeAt(0).toString(16) + ' ';
};
return function(id) {
return validIdRe.test(id) ? id :
id.replace(escapeRx, escapeFn).replace(leadingNumRx, numEscapeFn);
};
}()),
callback: function(callback, scope, args, delay, caller, defaultScope) {
if (!callback) {
return;
}
var namedScope = (scope in Ext._namedScopes);
if (callback.charAt) {
if ((!scope || namedScope) && caller) {
scope = caller.resolveListenerScope(namedScope ? scope : defaultScope);
}
if (!scope || !Ext.isObject(scope)) {
Ext.Error.raise('Named method "' + callback + '" requires a scope object');
}
if (!Ext.isFunction(scope[callback])) {
Ext.Error.raise('No method named "' + callback + '" on ' + (scope.$className || 'scope object'));
}
callback = scope[callback];
} else if (namedScope) {
scope = defaultScope || caller;
} else if (!scope) {
scope = caller;
}
var ret;
if (callback && Ext.isFunction(callback)) {
scope = scope || Ext.global;
if (delay) {
Ext.defer(callback, delay, scope, args);
} else if (Ext.elevateFunction) {
ret = Ext.elevateFunction(callback, scope, args);
} else if (args) {
ret = callback.apply(scope, args);
} else {
ret = callback.call(scope);
}
}
return ret;
},
coerce: function(from, to) {
var fromType = Ext.typeOf(from),
toType = Ext.typeOf(to),
isString = typeof from === 'string';
if (fromType !== toType) {
switch (toType) {
case 'string':
return String(from);
case 'number':
return Number(from);
case 'boolean':
return isString && (!from || from === 'false') ? false : Boolean(from);
case 'null':
return isString && (!from || from === 'null') ? null : from;
case 'undefined':
return isString && (!from || from === 'undefined') ? undefined : from;
case 'date':
return isString && isNaN(from) ? Ext.Date.parse(from, Ext.Date.defaultFormat) : Date(Number(from));
}
}
return from;
},
copyTo: function(dest, source, names, usePrototypeKeys) {
if (typeof names === 'string') {
names = names.split(Ext.propertyNameSplitRe);
}
for (var name,
i = 0,
n = names ? names.length : 0; i < n; i++) {
name = names[i];
if (usePrototypeKeys || source.hasOwnProperty(name)) {
dest[name] = source[name];
}
}
return dest;
},
propertyNameSplitRe: /[,;\s]+/,
copyToIf: function(destination, source, names) {
if (typeof names === 'string') {
names = names.split(Ext.propertyNameSplitRe);
}
for (var name,
i = 0,
n = names ? names.length : 0; i < n; i++) {
name = names[i];
if (destination[name] === undefined) {
destination[name] = source[name];
}
}
return destination;
},
extend: (function() {
var objectConstructor = Object.prototype.constructor,
inlineOverrides = function(o) {
for (var m in o) {
if (!o.hasOwnProperty(m)) {
continue;
}
this[m] = o[m];
}
};
return function(subclass, superclass, overrides) {
if (Ext.isObject(superclass)) {
overrides = superclass;
superclass = subclass;
subclass = overrides.constructor !== objectConstructor ? overrides.constructor : function() {
superclass.apply(this, arguments);
};
}
if (!superclass) {
Ext.Error.raise({
sourceClass: 'Ext',
sourceMethod: 'extend',
msg: 'Attempting to extend from a class which has not been loaded on the page.'
});
}
var F = function() {},
subclassProto,
superclassProto = superclass.prototype;
F.prototype = superclassProto;
subclassProto = subclass.prototype = new F();
subclassProto.constructor = subclass;
subclass.superclass = superclassProto;
if (superclassProto.constructor === objectConstructor) {
superclassProto.constructor = superclass;
}
subclass.override = function(overrides) {
Ext.override(subclass, overrides);
};
subclassProto.override = inlineOverrides;
subclassProto.proto = subclassProto;
subclass.override(overrides);
subclass.extend = function(o) {
return Ext.extend(subclass, o);
};
return subclass;
};
}()),
iterate: function(object, fn, scope) {
if (Ext.isEmpty(object)) {
return;
}
if (scope === undefined) {
scope = object;
}
if (Ext.isIterable(object)) {
Ext.Array.each.call(Ext.Array, object, fn, scope);
} else {
Ext.Object.each.call(Ext.Object, object, fn, scope);
}
},
urlEncode: function() {
var args = Ext.Array.from(arguments),
prefix = '';
if (Ext.isString(args[1])) {
prefix = args[1] + '&';
args[1] = false;
}
return prefix + Ext.Object.toQueryString.apply(Ext.Object, args);
},
urlDecode: function() {
return Ext.Object.fromQueryString.apply(Ext.Object, arguments);
},
getScrollbarSize: function(force) {
if (!Ext.isDomReady) {
Ext.Error.raise("getScrollbarSize called before DomReady");
}
var scrollbarSize = Ext._scrollbarSize;
if (force || !scrollbarSize) {
var db = document.body,
div = document.createElement('div');
div.style.width = div.style.height = '100px';
div.style.overflow = 'scroll';
div.style.position = 'absolute';
db.appendChild(div);
Ext._scrollbarSize = scrollbarSize = {
width: div.offsetWidth - div.clientWidth,
height: div.offsetHeight - div.clientHeight
};
db.removeChild(div);
}
return scrollbarSize;
},
typeOf: (function() {
var nonWhitespaceRe = /\S/,
toString = Object.prototype.toString,
typeofTypes = {
number: 1,
string: 1,
'boolean': 1,
'undefined': 1
},
toStringTypes = {
'[object Array]': 'array',
'[object Date]': 'date',
'[object Boolean]': 'boolean',
'[object Number]': 'number',
'[object RegExp]': 'regexp'
};
return function(value) {
if (value === null) {
return 'null';
}
var type = typeof value,
ret, typeToString;
if (typeofTypes[type]) {
return type;
}
ret = toStringTypes[typeToString = toString.call(value)];
if (ret) {
return ret;
}
if (type === 'function') {
return 'function';
}
if (type === 'object') {
if (value.nodeType !== undefined) {
if (value.nodeType === 3) {
return nonWhitespaceRe.test(value.nodeValue) ? 'textnode' : 'whitespace';
} else {
return 'element';
}
}
return 'object';
}
Ext.Error.raise({
sourceClass: 'Ext',
sourceMethod: 'typeOf',
msg: 'Failed to determine the type of "' + value + '".'
});
return typeToString;
};
}()),
factory: function(config, classReference, instance, aliasNamespace) {
var manager = Ext.ClassManager,
newInstance;
if (!config || config.isInstance) {
if (instance && instance !== config) {
instance.destroy();
}
return config;
}
if (aliasNamespace) {
if (typeof config === 'string') {
return manager.instantiateByAlias(aliasNamespace + '.' + config);
}
else if (Ext.isObject(config) && 'type' in config) {
return manager.instantiateByAlias(aliasNamespace + '.' + config.type, config);
}
}
if (config === true) {
return instance || Ext.create(classReference);
}
if (!Ext.isObject(config)) {
Ext.Logger.error("Invalid config, must be a valid config object");
}
if ('xtype' in config) {
newInstance = manager.instantiateByAlias('widget.' + config.xtype, config);
} else if ('xclass' in config) {
newInstance = Ext.create(config.xclass, config);
}
if (newInstance) {
if (instance) {
instance.destroy();
}
return newInstance;
}
if (instance) {
return instance.setConfig(config);
}
return Ext.create(classReference, config);
},
log: (function() {
var primitiveRe = /string|number|boolean/;
function dumpObject(object, level, maxLevel, withFunctions) {
var member, type, value, name, prefix, suffix,
members = [];
if (Ext.isArray(object)) {
prefix = '[';
suffix = ']';
} else if (Ext.isObject(object)) {
prefix = '{';
suffix = '}';
}
if (!maxLevel) {
maxLevel = 3;
}
if (level > maxLevel) {
return prefix + '...' + suffix;
}
level = level || 1;
var spacer = (new Array(level)).join(' ');
for (name in object) {
if (object.hasOwnProperty(name)) {
value = object[name];
type = typeof value;
if (type === 'function') {
if (!withFunctions) {
continue;
}
member = type;
} else if (type === 'undefined') {
member = type;
} else if (value === null || primitiveRe.test(type) || Ext.isDate(value)) {
member = Ext.encode(value);
} else if (Ext.isArray(value)) {
member = this.dumpObject(value, level + 1, maxLevel, withFunctions);
} else if (Ext.isObject(value)) {
member = this.dumpObject(value, level + 1, maxLevel, withFunctions);
} else {
member = type;
}
members.push(spacer + name + ': ' + member);
}
}
if (members.length) {
return prefix + '\n ' + members.join(',\n ') + '\n' + spacer + suffix;
}
return prefix + suffix;
}
function log(message) {
var options, dump,
con = Ext.global.console,
level = 'log',
indent = log.indent || 0,
prefix, stack, fn, out, max;
log.indent = indent;
if (typeof message !== 'string') {
options = message;
message = options.msg || '';
level = options.level || level;
dump = options.dump;
stack = options.stack;
prefix = options.prefix;
fn = options.fn;
if (options.indent) {
++log.indent;
} else if (options.outdent) {
log.indent = indent = Math.max(indent - 1, 0);
}
if (dump && !(con && con.dir)) {
message += dumpObject(dump);
dump = null;
}
}
if (arguments.length > 1) {
message += Array.prototype.slice.call(arguments, 1).join('');
}
if (prefix) {
message = prefix + ' - ' + message;
}
message = indent ? Ext.String.repeat(' ', log.indentSize * indent) + message : message;
if (level !== 'log') {
message = '[' + level.charAt(0).toUpperCase() + '] ' + message;
}
if (fn) {
message += '\nCaller: ' + fn.toString();
}
if (con) {
if (con[level]) {
con[level](message);
} else {
con.log(message);
}
if (dump) {
con.dir(dump);
}
if (stack && con.trace) {
if (!con.firebug || level !== 'error') {
con.trace();
}
}
} else if (Ext.isOpera) {
opera.postError(message);
} else
{
out = log.out;
max = log.max;
if (out.length >= max) {
Ext.Array.erase(out, 0, out.length - 3 * Math.floor(max / 4));
}
out.push(message);
}
++log.count;
++log.counters[level];
}
function logx(level, args) {
if (typeof args[0] === 'string') {
args.unshift({});
}
args[0].level = level;
log.apply(this, args);
}
log.error = function() {
logx('error', Array.prototype.slice.call(arguments));
};
log.info = function() {
logx('info', Array.prototype.slice.call(arguments));
};
log.warn = function() {
logx('warn', Array.prototype.slice.call(arguments));
};
log.count = 0;
log.counters = {
error: 0,
warn: 0,
info: 0,
log: 0
};
log.indentSize = 2;
log.out = [];
log.max = 750;
return log;
}()) || (function() {
var nullLog = function() {};
nullLog.info = nullLog.warn = nullLog.error = Ext.emptyFn;
return nullLog;
}())
});
(function() {
var
checkVerTemp = [
''
],
endOfVersionRe = /([^\d\.])/,
notDigitsRe = /[^\d]/g,
plusMinusRe = /[\-+]/g,
stripRe = /\s/g,
underscoreRe = /_/g,
Version;
Ext.Version = Version = function(version, defaultMode) {
var me = this,
padModes = me.padModes,
ch, i, pad, parts, release, releaseStartIndex, ver;
if (version.isVersion) {
version = version.version;
}
me.version = ver = String(version).toLowerCase().replace(underscoreRe, '.').replace(plusMinusRe, '');
ch = ver.charAt(0);
if (ch in padModes) {
ver = ver.substring(1);
pad = padModes[ch];
} else {
pad = defaultMode ? padModes[defaultMode] : 0;
}
me.pad = pad;
releaseStartIndex = ver.search(endOfVersionRe);
me.shortVersion = ver;
if (releaseStartIndex !== -1) {
me.release = release = ver.substr(releaseStartIndex, version.length);
me.shortVersion = ver.substr(0, releaseStartIndex);
release = Version.releaseValueMap[release] || release;
}
me.releaseValue = release || pad;
me.shortVersion = me.shortVersion.replace(notDigitsRe, '');
me.parts = parts = ver.split('.');
for (i = parts.length; i--; ) {
parts[i] = parseInt(parts[i], 10);
}
if (pad === Infinity) {
parts.push(pad);
}
me.major = parts[0] || pad;
me.minor = parts[1] || pad;
me.patch = parts[2] || pad;
me.build = parts[3] || pad;
return me;
};
Version.prototype = {
isVersion: true,
padModes: {
'~': NaN,
'^': Infinity
},
release: '',
compareTo: function(other) {
var me = this,
lhsPad = me.pad,
lhsParts = me.parts,
lhsLength = lhsParts.length,
rhsVersion = other.isVersion ? other : new Version(other),
rhsPad = rhsVersion.pad,
rhsParts = rhsVersion.parts,
rhsLength = rhsParts.length,
length = Math.max(lhsLength, rhsLength),
i, lhs, rhs;
for (i = 0; i < length; i++) {
lhs = (i < lhsLength) ? lhsParts[i] : lhsPad;
rhs = (i < rhsLength) ? rhsParts[i] : rhsPad;
if (lhs < rhs) {
return -1;
}
if (lhs > rhs) {
return 1;
}
}
lhs = me.releaseValue;
rhs = rhsVersion.releaseValue;
if (lhs < rhs) {
return -1;
}
if (lhs > rhs) {
return 1;
}
return 0;
},
toString: function() {
return this.version;
},
valueOf: function() {
return this.version;
},
getMajor: function() {
return this.major;
},
getMinor: function() {
return this.minor;
},
getPatch: function() {
return this.patch;
},
getBuild: function() {
return this.build;
},
getRelease: function() {
return this.release;
},
getReleaseValue: function() {
return this.releaseValue;
},
isGreaterThan: function(target) {
return this.compareTo(target) > 0;
},
isGreaterThanOrEqual: function(target) {
return this.compareTo(target) >= 0;
},
isLessThan: function(target) {
return this.compareTo(target) < 0;
},
isLessThanOrEqual: function(target) {
return this.compareTo(target) <= 0;
},
equals: function(target) {
return this.compareTo(target) === 0;
},
match: function(target) {
target = String(target);
return this.version.substr(0, target.length) === target;
},
toArray: function() {
var me = this;
return [
me.getMajor(),
me.getMinor(),
me.getPatch(),
me.getBuild(),
me.getRelease()
];
},
getShortVersion: function() {
return this.shortVersion;
},
gt: function(target) {
return this.compareTo(target) > 0;
},
lt: function(target) {
return this.compareTo(target) < 0;
},
gtEq: function(target) {
return this.compareTo(target) >= 0;
},
ltEq: function(target) {
return this.compareTo(target) <= 0;
}
};
Ext.apply(Version, {
aliases: {
from: {
extjs: 'ext',
core: 'sencha-core'
},
to: {
ext: [
'extjs'
],
'sencha-core': [
'core'
]
}
},
releaseValueMap: {
dev: -6,
alpha: -5,
a: -5,
beta: -4,
b: -4,
rc: -3,
'#': -2,
p: -1,
pl: -1
},
getComponentValue: function(value) {
return !value ? 0 : (isNaN(value) ? this.releaseValueMap[value] || value : parseInt(value, 10));
},
compare: function(current, target) {
var ver = current.isVersion ? current : new Version(current);
return ver.compareTo(target);
},
set: function(collection, packageName, version) {
var aliases = Version.aliases.to[packageName],
ver = version.isVersion ? version : new Version(version),
i;
collection[packageName] = ver;
if (aliases) {
for (i = aliases.length; i-- > 0; ) {
collection[aliases[i]] = ver;
}
}
return ver;
}
});
Ext.apply(Ext, {
compatVersions: {},
versions: {},
lastRegisteredVersion: null,
getCompatVersion: function(packageName) {
var versions = Ext.compatVersions,
compat;
if (!packageName) {
compat = versions.ext || versions.touch || versions.core;
} else {
compat = versions[Version.aliases.from[packageName] || packageName];
}
return compat || Ext.getVersion(packageName);
},
setCompatVersion: function(packageName, version) {
Version.set(Ext.compatVersions, packageName, version);
},
setVersion: function(packageName, version) {
Ext.lastRegisteredVersion = Version.set(Ext.versions, packageName, version);
return this;
},
getVersion: function(packageName) {
var versions = Ext.versions;
if (!packageName) {
return versions.ext || versions.touch || versions.core;
}
return versions[Version.aliases.from[packageName] || packageName];
},
checkVersion: function(specs, matchAll) {
var isArray = Ext.isArray(specs),
aliases = Version.aliases.from,
compat = isArray ? specs : checkVerTemp,
length = compat.length,
versions = Ext.versions,
frameworkVer = versions.ext || versions.touch,
i, index, matches, minVer, maxVer, packageName, spec, range, ver;
if (!isArray) {
checkVerTemp[0] = specs;
}
for (i = 0; i < length; ++i) {
if (!Ext.isString(spec = compat[i])) {
matches = Ext.checkVersion(spec.and || spec.or, !spec.or);
if (spec.not) {
matches = !matches;
}
} else {
if (spec.indexOf(' ') >= 0) {
spec = spec.replace(stripRe, '');
}
index = spec.indexOf('@');
if (index < 0) {
range = spec;
ver = frameworkVer;
} else {
packageName = spec.substring(0, index);
if (!(ver = versions[aliases[packageName] || packageName])) {
if (matchAll) {
return false;
}
continue;
}
range = spec.substring(index + 1);
}
index = range.indexOf('-');
if (index < 0) {
if (range.charAt(index = range.length - 1) === '+') {
minVer = range.substring(0, index);
maxVer = null;
} else {
minVer = maxVer = range;
}
} else if (index > 0) {
minVer = range.substring(0, index);
maxVer = range.substring(index + 1);
} else
{
minVer = null;
maxVer = range.substring(index + 1);
}
matches = true;
if (minVer) {
minVer = new Version(minVer, '~');
matches = minVer.ltEq(ver);
}
if (matches && maxVer) {
maxVer = new Version(maxVer, '~');
matches = maxVer.gtEq(ver);
}
}
if (matches) {
if (!matchAll) {
return true;
}
} else if (matchAll) {
return false;
}
}
return !!matchAll;
},
deprecate: function(packageName, since, closure, scope) {
if (Version.compare(Ext.getVersion(packageName), since) < 1) {
closure.call(scope);
}
}
});
}());
(function(manifest) {
var packages = (manifest && manifest.packages) || {},
compat = manifest && manifest.compatibility,
name, pkg;
for (name in packages) {
pkg = packages[name];
Ext.setVersion(name, pkg.version);
}
if (compat) {
if (Ext.isString(compat)) {
Ext.setCompatVersion('core', compat);
} else {
for (name in compat) {
Ext.setCompatVersion(name, compat[name]);
}
}
}
if (!packages.ext && !packages.touch) {
Ext.setVersion('ext', '5');
}
})(Ext.manifest);
Ext.Config = function(name) {
var me = this,
capitalizedName = name.charAt(0).toUpperCase() + name.substr(1);
me.name = name;
me.names = {
internal: '_' + name,
initializing: 'is' + capitalizedName + 'Initializing',
apply: 'apply' + capitalizedName,
update: 'update' + capitalizedName,
get: 'get' + capitalizedName,
set: 'set' + capitalizedName,
initGet: 'initGet' + capitalizedName,
doSet: 'doSet' + capitalizedName,
changeEvent: name.toLowerCase() + 'change'
};
me.root = me;
};
Ext.Config.map = {};
Ext.Config.get = function(name) {
var map = Ext.Config.map,
ret = map[name] || (map[name] = new Ext.Config(name));
return ret;
};
Ext.Config.prototype = {
self: Ext.Config,
isConfig: true,
getGetter: function() {
return this.getter || (this.root.getter = this.makeGetter());
},
getInitGetter: function() {
return this.initGetter || (this.root.initGetter = this.makeInitGetter());
},
getSetter: function() {
return this.setter || (this.root.setter = this.makeSetter());
},
getInternalName: function(target) {
return target.$configPrefixed ? this.names.internal : this.name;
},
mergeNew: function(newValue, oldValue, target, mixinClass) {
var ret, key;
if (!oldValue) {
ret = newValue;
} else if (!newValue) {
ret = oldValue;
} else {
ret = Ext.Object.chain(oldValue);
for (key in newValue) {
if (!mixinClass || !(key in ret)) {
ret[key] = newValue[key];
}
}
}
return ret;
},
mergeSets: function(newValue, oldValue, preserveExisting) {
var ret = oldValue ? Ext.Object.chain(oldValue) : {},
i, val;
if (newValue instanceof Array) {
for (i = newValue.length; i--; ) {
val = newValue[i];
if (!preserveExisting || !(val in ret)) {
ret[val] = true;
}
}
} else if (newValue) {
if (newValue.constructor === Object) {
for (i in newValue) {
val = newValue[i];
if (!preserveExisting || !(i in ret)) {
ret[i] = val;
}
}
} else if (!preserveExisting || !(newValue in ret)) {
ret[newValue] = true;
}
}
return ret;
},
makeGetter: function() {
var name = this.name,
prefixedName = this.names.internal;
return function() {
var internalName = this.$configPrefixed ? prefixedName : name;
return this[internalName];
};
},
makeInitGetter: function() {
var name = this.name,
names = this.names,
setName = names.set,
getName = names.get,
initializingName = names.initializing;
return function() {
var me = this;
me[initializingName] = true;
delete me[getName];
me[setName](me.config[name]);
delete me[initializingName];
return me[getName].apply(me, arguments);
};
},
makeSetter: function() {
var name = this.name,
names = this.names,
prefixedName = names.internal,
getName = names.get,
applyName = names.apply,
updateName = names.update,
setter;
setter = function(value) {
var me = this,
internalName = me.$configPrefixed ? prefixedName : name,
oldValue = me[internalName];
delete me[getName];
if (!me[applyName] || (value = me[applyName](value, oldValue)) !== undefined) {
if (value !== (oldValue = me[internalName])) {
me[internalName] = value;
if (me[updateName]) {
me[updateName](value, oldValue);
}
}
}
return me;
};
setter.$isDefault = true;
return setter;
}
};
(function() {
var ExtConfig = Ext.Config,
configPropMap = ExtConfig.map,
ExtObject = Ext.Object;
Ext.Configurator = function(cls) {
var me = this,
prototype = cls.prototype,
zuper = cls.superclass ? cls.superclass.self.$config : null;
me.cls = cls;
if (zuper) {
me.configs = ExtObject.chain(zuper.configs);
me.cachedConfigs = ExtObject.chain(zuper.cachedConfigs);
me.initMap = ExtObject.chain(zuper.initMap);
me.values = ExtObject.chain(zuper.values);
me.needsFork = zuper.needsFork;
} else {
me.configs = {};
me.cachedConfigs = {};
me.initMap = {};
me.values = {};
}
prototype.config = prototype.defaultConfig = me.values;
cls.$config = me;
};
Ext.Configurator.prototype = {
self: Ext.Configurator,
needsFork: false,
initList: null,
add: function(config, mixinClass) {
var me = this,
Cls = me.cls,
configs = me.configs,
cachedConfigs = me.cachedConfigs,
initMap = me.initMap,
prototype = Cls.prototype,
mixinConfigs = mixinClass && mixinClass.$config.configs,
values = me.values,
isObject, meta, isCached, merge, cfg, currentValue, name, names, s, value;
for (name in config) {
value = config[name];
isObject = value && value.constructor === Object;
meta = isObject && '$value' in value ? value : null;
if (meta) {
isCached = !!meta.cached;
value = meta.$value;
isObject = value && value.constructor === Object;
}
merge = meta && meta.merge;
cfg = configs[name];
if (cfg) {
if (mixinClass) {
merge = cfg.merge;
if (!merge) {
continue;
}
meta = null;
} else {
merge = merge || cfg.merge;
}
if (!mixinClass && isCached && !cachedConfigs[name]) {
Ext.Error.raise('Redefining config as cached: ' + name + ' in class: ' + Cls.$className);
}
currentValue = values[name];
if (merge) {
value = merge.call(cfg, value, currentValue, Cls, mixinClass);
} else if (isObject) {
if (currentValue && currentValue.constructor === Object) {
value = ExtObject.merge({}, currentValue, value);
}
}
} else
{
if (mixinConfigs) {
cfg = mixinConfigs[name];
meta = null;
} else {
cfg = ExtConfig.get(name);
}
configs[name] = cfg;
if (cfg.cached || isCached) {
cachedConfigs[name] = true;
}
names = cfg.names;
if (!prototype[s = names.get]) {
prototype[s] = cfg.getGetter();
}
if (!prototype[s = names.set]) {
prototype[s] = cfg.getSetter();
}
}
if (meta) {
if (cfg.owner !== Cls) {
configs[name] = cfg = Ext.Object.chain(cfg);
cfg.owner = Cls;
}
Ext.apply(cfg, meta);
delete cfg.$value;
}
if (!me.needsFork && value && (value.constructor === Object || value instanceof Array)) {
me.needsFork = true;
}
if (value !== null) {
initMap[name] = true;
} else {
if (prototype.$configPrefixed) {
prototype[configs[name].names.internal] = null;
} else {
prototype[configs[name].name] = null;
}
if (name in initMap) {
initMap[name] = false;
}
}
values[name] = value;
}
},
configure: function(instance, instanceConfig) {
var me = this,
configs = me.configs,
initMap = me.initMap,
initListMap = me.initListMap,
initList = me.initList,
prototype = me.cls.prototype,
values = me.values,
remaining = 0,
firstInstance = !initList,
cachedInitList, cfg, getter, needsInit, i, internalName, ln, names, name, value, isCached, valuesKey;
values = me.needsFork ? ExtObject.fork(values) : ExtObject.chain(values);
if (firstInstance) {
me.initList = initList = [];
me.initListMap = initListMap = {};
instance.isFirstInstance = true;
for (name in initMap) {
needsInit = initMap[name];
cfg = configs[name];
isCached = cfg.cached;
if (needsInit) {
names = cfg.names;
value = values[name];
if (!prototype[names.set].$isDefault || prototype[names.apply] || prototype[names.update] || typeof value === 'object') {
if (isCached) {
(cachedInitList || (cachedInitList = [])).push(cfg);
} else {
initList.push(cfg);
initListMap[name] = true;
}
instance[names.get] = cfg.initGetter || cfg.getInitGetter();
} else {
prototype[cfg.getInternalName(prototype)] = value;
}
} else if (isCached) {
prototype[cfg.getInternalName(prototype)] = undefined;
}
}
}
ln = cachedInitList && cachedInitList.length;
if (ln) {
for (i = 0; i < ln; ++i) {
internalName = cachedInitList[i].getInternalName(prototype);
instance[internalName] = null;
}
for (i = 0; i < ln; ++i) {
names = (cfg = cachedInitList[i]).names;
getter = names.get;
if (instance.hasOwnProperty(getter)) {
instance[names.set](values[cfg.name]);
delete instance[getter];
}
}
for (i = 0; i < ln; ++i) {
internalName = cachedInitList[i].getInternalName(prototype);
prototype[internalName] = instance[internalName];
delete instance[internalName];
}
}
if (instanceConfig && instanceConfig.platformConfig) {
instanceConfig = me.resolvePlatformConfig(instance, instanceConfig);
}
if (firstInstance) {
if (instance.afterCachedConfig && !instance.afterCachedConfig.$nullFn) {
instance.afterCachedConfig(instanceConfig);
}
}
instance.isConfiguring = true;
instance.config = values;
for (i = 0 , ln = initList.length; i < ln; ++i) {
cfg = initList[i];
instance[cfg.names.get] = cfg.initGetter || cfg.getInitGetter();
}
if (instance.transformInstanceConfig) {
instanceConfig = instance.transformInstanceConfig(instanceConfig);
}
if (instanceConfig) {
for (name in instanceConfig) {
value = instanceConfig[name];
cfg = configs[name];
if (!cfg) {
if (instance.$configStrict && typeof instance.self.prototype[name] === 'function') {
Ext.Error.raise("Cannot override method " + name + " on " + instance.$className + " instance.");
}
instance[name] = value;
} else {
if (!cfg.lazy) {
++remaining;
}
if (!initListMap[name]) {
instance[cfg.names.get] = cfg.initGetter || cfg.getInitGetter();
}
if (cfg.merge) {
value = cfg.merge(value, values[name], instance);
} else if (value && value.constructor === Object) {
valuesKey = values[name];
if (valuesKey && valuesKey.constructor === Object) {
value = ExtObject.merge(values[name], value);
} else {
value = Ext.clone(value);
}
}
}
values[name] = value;
}
}
if (instance.beforeInitConfig && !instance.beforeInitConfig.$nullFn) {
if (instance.beforeInitConfig(instanceConfig) === false) {
return;
}
}
if (instanceConfig) {
for (name in instanceConfig) {
if (!remaining) {
break;
}
cfg = configs[name];
if (cfg && !cfg.lazy) {
--remaining;
names = cfg.names;
getter = names.get;
if (instance.hasOwnProperty(getter)) {
instance[names.set](values[name]);
delete instance[names.get];
}
}
}
}
for (i = 0 , ln = initList.length; i < ln; ++i) {
cfg = initList[i];
names = cfg.names;
getter = names.get;
if (!cfg.lazy && instance.hasOwnProperty(getter)) {
instance[names.set](values[cfg.name]);
delete instance[getter];
}
}
delete instance.isConfiguring;
},
getCurrentConfig: function(instance) {
var defaultConfig = instance.defaultConfig,
config = {},
name;
for (name in defaultConfig) {
config[name] = instance[configPropMap[name].names.get]();
}
return config;
},
merge: function(instance, baseConfig, config) {
var configs = this.configs,
name, value, baseValue, cfg;
for (name in config) {
value = config[name];
cfg = configs[name];
if (cfg) {
if (cfg.merge) {
value = cfg.merge(value, baseConfig[name], instance);
} else if (value && value.constructor === Object) {
baseValue = baseConfig[name];
if (baseValue && baseValue.constructor === Object) {
value = Ext.Object.merge(baseValue, value);
} else {
value = Ext.clone(value);
}
}
}
baseConfig[name] = value;
}
return baseConfig;
},
reconfigure: function(instance, instanceConfig, options) {
var currentConfig = instance.config,
configList = [],
strict = instance.$configStrict,
configs = this.configs,
defaults = options && options.defaults,
applyProps = options && options.strict === false,
cfg, getter, i, len, name, names, setter;
for (name in instanceConfig) {
if (defaults && instance.hasOwnProperty(name)) {
continue;
}
currentConfig[name] = instanceConfig[name];
cfg = configs[name];
if (cfg) {
instance[cfg.names.get] = cfg.initGetter || cfg.getInitGetter();
} else if (strict) {
if (name !== 'type') {
Ext.log.error('No such config "' + name + '" for class ' + instance.$className);
}
continue;
}
configList.push(name);
}
for (i = 0 , len = configList.length; i < len; i++) {
name = configList[i];
cfg = configs[name];
if (cfg) {
names = cfg.names;
getter = names.get;
if (instance.hasOwnProperty(getter)) {
instance[names.set](instanceConfig[name]);
delete instance[getter];
}
} else {
cfg = configPropMap[name] || Ext.Config.get(name);
names = cfg.names;
if (instance[names.set]) {
instance[names.set](instanceConfig[name]);
} else if (applyProps) {
if (instance.$configStrict && typeof instance.self.prototype[name] === 'function') {
Ext.Error.raise("Cannot override method " + name + " on " + instance.$className + " instance.");
}
instance[name] = instanceConfig[name];
} else if (name !== 'type') {
Ext.Error.raise('Config "' + name + '" has no setter on class ' + instance.$className);
}
}
}
},
resolvePlatformConfig: function(instance, instanceConfig) {
var platformConfig = instanceConfig && instanceConfig.platformConfig,
ret = instanceConfig,
i, keys, n;
if (platformConfig) {
keys = Ext.getPlatformConfigKeys(platformConfig);
n = keys.length;
if (n) {
ret = Ext.merge({}, ret);
for (i = 0 , n = keys.length; i < n; ++i) {
this.merge(instance, ret, platformConfig[keys[i]]);
}
}
}
return ret;
}
};
}());
Ext.Base = (function(flexSetter) {
var noArgs = [],
baseStaticMember,
baseStaticMembers = [],
getConfig = function(name, peek) {
var me = this,
ret, cfg, getterName;
if (name) {
cfg = Ext.Config.map[name];
if (!cfg) {
Ext.Logger.error("Invalid property name for getter: '" + name + "' for '" + me.$className + "'.");
}
getterName = cfg.names.get;
if (peek && me.hasOwnProperty(getterName)) {
ret = me.config[name];
} else {
ret = me[getterName]();
}
} else {
ret = me.getCurrentConfig();
}
return ret;
},
makeDeprecatedMethod = function(oldName, newName, msg) {
var message = '"' + oldName + '" is deprecated.';
if (msg) {
message += ' ' + msg;
} else if (newName) {
message += ' Please use "' + newName + '" instead.';
}
return function() {
Ext.Error.raise(message);
};
},
addDeprecatedProperty = function(object, oldName, newName, message) {
if (!message) {
message = '"' + oldName + '" is deprecated.';
}
if (newName) {
message += ' Please use "' + newName + '" instead.';
}
if (message) {
Ext.Object.defineProperty(object, oldName, {
get: function() {
Ext.Error.raise(message);
},
set: function(value) {
Ext.Error.raise(message);
},
configurable: true
});
}
},
makeAliasFn = function(name) {
return function() {
return this[name].apply(this, arguments);
};
},
Version = Ext.Version,
leadingDigitRe = /^\d/,
oneMember = {},
aliasOneMember = {},
Base = function() {},
BasePrototype = Base.prototype;
Ext.apply(Base, {
$className: 'Ext.Base',
$isClass: true,
create: function() {
return Ext.create.apply(Ext, [
this
].concat(Array.prototype.slice.call(arguments, 0)));
},
addDeprecations: function(deprecations) {
var me = this,
all = [],
compatVersion = Ext.getCompatVersion(deprecations.name),
displayName = (me.$className || '') + '#',
deprecate, versionSpec, index, message, target, enabled, existing, fn, names, oldName, newName, member, statics, version;
for (versionSpec in deprecations) {
if (leadingDigitRe.test(versionSpec)) {
version = new Ext.Version(versionSpec);
version.deprecations = deprecations[versionSpec];
all.push(version);
}
}
all.sort(Version.compare);
for (index = all.length; index--; ) {
deprecate = (version = all[index]).deprecations;
target = me.prototype;
statics = deprecate.statics;
enabled = compatVersion && compatVersion.lt(version);
if (!enabled) {} else if (!enabled) {
break;
}
while (deprecate) {
names = deprecate.methods;
if (names) {
for (oldName in names) {
member = names[oldName];
fn = null;
if (!member) {
Ext.Assert.isNotDefinedProp(target, oldName);
fn = makeDeprecatedMethod(displayName + oldName);
} else if (Ext.isString(member)) {
Ext.Assert.isNotDefinedProp(target, oldName);
Ext.Assert.isDefinedProp(target, member);
if (enabled) {
fn = makeAliasFn(member);
} else {
fn = makeDeprecatedMethod(displayName + oldName, member);
}
} else {
message = '';
if (member.message || member.fn) {
message = member.message;
member = member.fn;
}
existing = target.hasOwnProperty(oldName) && target[oldName];
if (enabled && member) {
member.$owner = me;
member.$name = oldName;
member.name = displayName + oldName;
if (existing) {
member.$previous = existing;
}
fn = member;
} else if (!existing) {
fn = makeDeprecatedMethod(displayName + oldName, null, message);
}
}
if (fn) {
target[oldName] = fn;
}
}
}
names = deprecate.properties;
if (names && !enabled) {
for (oldName in names) {
newName = names[oldName];
if (Ext.isString(newName)) {
addDeprecatedProperty(target, displayName + oldName, newName);
} else if (newName && newName.message) {
addDeprecatedProperty(target, displayName + oldName, null, newName.message);
} else {
addDeprecatedProperty(target, displayName + oldName);
}
}
}
deprecate = statics;
statics = null;
target = me;
}
}
},
extend: function(parent) {
var me = this,
parentPrototype = parent.prototype,
prototype, i, ln, name, statics;
prototype = me.prototype = Ext.Object.chain(parentPrototype);
prototype.self = me;
me.superclass = prototype.superclass = parentPrototype;
if (!parent.$isClass) {
for (i in BasePrototype) {
if (i in prototype) {
prototype[i] = BasePrototype[i];
}
}
}
statics = parentPrototype.$inheritableStatics;
if (statics) {
for (i = 0 , ln = statics.length; i < ln; i++) {
name = statics[i];
if (!me.hasOwnProperty(name)) {
me[name] = parent[name];
}
}
}
if (parent.$onExtended) {
me.$onExtended = parent.$onExtended.slice();
}
me.getConfigurator();
},
$onExtended: [],
triggerExtended: function() {
Ext.classSystemMonitor && Ext.classSystemMonitor(this, 'Ext.Base#triggerExtended', arguments);
var callbacks = this.$onExtended,
ln = callbacks.length,
i, callback;
if (ln > 0) {
for (i = 0; i < ln; i++) {
callback = callbacks[i];
callback.fn.apply(callback.scope || this, arguments);
}
}
},
onExtended: function(fn, scope) {
this.$onExtended.push({
fn: fn,
scope: scope
});
return this;
},
addStatics: function(members) {
this.addMembers(members, true);
return this;
},
addInheritableStatics: function(members) {
var inheritableStatics, hasInheritableStatics,
prototype = this.prototype,
name, member;
inheritableStatics = prototype.$inheritableStatics;
hasInheritableStatics = prototype.$hasInheritableStatics;
if (!inheritableStatics) {
inheritableStatics = prototype.$inheritableStatics = [];
hasInheritableStatics = prototype.$hasInheritableStatics = {};
}
var className = Ext.getClassName(this) + '.';
for (name in members) {
if (members.hasOwnProperty(name)) {
member = members[name];
if (typeof member == 'function') {
member.name = className + name;
}
this[name] = member;
if (!hasInheritableStatics[name]) {
hasInheritableStatics[name] = true;
inheritableStatics.push(name);
}
}
}
return this;
},
addMembers: function(members, isStatic, privacy) {
var me = this,
cloneFunction = Ext.Function.clone,
target = isStatic ? me : me.prototype,
defaultConfig = !isStatic && target.defaultConfig,
enumerables = Ext.enumerables,
privates = members.privates,
configs, i, ln, member, name, subPrivacy, privateStatics;
var displayName = (me.$className || '') + '#';
if (privates) {
delete members.privates;
if (!isStatic) {
privateStatics = privates.statics;
delete privates.statics;
}
subPrivacy = privates.privacy || privacy || 'framework';
me.addMembers(privates, isStatic, subPrivacy);
if (privateStatics) {
me.addMembers(privateStatics, true, subPrivacy);
}
}
for (name in members) {
if (members.hasOwnProperty(name)) {
member = members[name];
if (privacy === true) {
privacy = 'framework';
}
if (member && member.$nullFn && privacy !== member.$privacy) {
Ext.Error.raise('Cannot use stock function for private method ' + (me.$className ? me.$className + '#' : '') + name);
}
if (typeof member === 'function' && !member.$isClass && !member.$nullFn) {
if (member.$owner) {
member = cloneFunction(member);
}
if (target.hasOwnProperty(name)) {
member.$previous = target[name];
}
member.$owner = me;
member.$name = name;
member.name = displayName + name;
var existing = target[name];
if (privacy) {
member.$privacy = privacy;
if (existing && existing.$privacy && existing.$privacy !== privacy) {
Ext.privacyViolation(me, existing, member, isStatic);
}
} else if (existing && existing.$privacy) {
Ext.privacyViolation(me, existing, member, isStatic);
}
}
else if (defaultConfig && (name in defaultConfig) && !target.config.hasOwnProperty(name)) {
(configs || (configs = {}))[name] = member;
continue;
}
target[name] = member;
}
}
if (configs) {
me.addConfig(configs);
}
if (enumerables) {
for (i = 0 , ln = enumerables.length; i < ln; ++i) {
if (members.hasOwnProperty(name = enumerables[i])) {
member = members[name];
if (member && !member.$nullFn) {
if (member.$owner) {
member = cloneFunction(member);
}
member.$owner = me;
member.$name = name;
member.name = displayName + name;
if (target.hasOwnProperty(name)) {
member.$previous = target[name];
}
}
target[name] = member;
}
}
}
return this;
},
addMember: function(name, member) {
oneMember[name] = member;
this.addMembers(oneMember);
delete oneMember[name];
return this;
},
borrow: function(fromClass, members) {
Ext.classSystemMonitor && Ext.classSystemMonitor(this, 'Ext.Base#borrow', arguments);
var prototype = fromClass.prototype,
membersObj = {},
i, ln, name;
members = Ext.Array.from(members);
for (i = 0 , ln = members.length; i < ln; i++) {
name = members[i];
membersObj[name] = prototype[name];
}
return this.addMembers(membersObj);
},
override: function(members) {
var me = this,
statics = members.statics,
inheritableStatics = members.inheritableStatics,
config = members.config,
mixins = members.mixins,
cachedConfig = members.cachedConfig;
if (statics || inheritableStatics || config) {
members = Ext.apply({}, members);
}
if (statics) {
me.addMembers(statics, true);
delete members.statics;
}
if (inheritableStatics) {
me.addInheritableStatics(inheritableStatics);
delete members.inheritableStatics;
}
if (config) {
me.addConfig(config);
delete members.config;
}
if (cachedConfig) {
me.addCachedConfig(cachedConfig);
delete members.cachedConfig;
}
delete members.mixins;
me.addMembers(members);
if (mixins) {
me.mixin(mixins);
}
return me;
},
callParent: function(args) {
var method;
return (method = this.callParent.caller) && (method.$previous || ((method = method.$owner ? method : method.caller) && method.$owner.superclass.self[method.$name])).apply(this, args || noArgs);
},
callSuper: function(args) {
var method;
return (method = this.callSuper.caller) && ((method = method.$owner ? method : method.caller) && method.$owner.superclass.self[method.$name]).apply(this, args || noArgs);
},
mixin: function(name, mixinClass) {
var me = this,
mixin, prototype, key, statics, i, ln, staticName, mixinValue, mixins;
if (typeof name !== 'string') {
mixins = name;
if (mixins instanceof Array) {
for (i = 0 , ln = mixins.length; i < ln; i++) {
mixin = mixins[i];
me.mixin(mixin.prototype.mixinId || mixin.$className, mixin);
}
} else {
for (var mixinName in mixins) {
me.mixin(mixinName, mixins[mixinName]);
}
}
return;
}
mixin = mixinClass.prototype;
prototype = me.prototype;
if (mixin.onClassMixedIn) {
mixin.onClassMixedIn.call(mixinClass, me);
}
if (!prototype.hasOwnProperty('mixins')) {
if ('mixins' in prototype) {
prototype.mixins = Ext.Object.chain(prototype.mixins);
} else {
prototype.mixins = {};
}
}
for (key in mixin) {
mixinValue = mixin[key];
if (key === 'mixins') {
Ext.applyIf(prototype.mixins, mixinValue);
} else if (!(key === 'mixinId' || key === 'config') && (prototype[key] === undefined)) {
prototype[key] = mixinValue;
}
}
statics = mixin.$inheritableStatics;
if (statics) {
for (i = 0 , ln = statics.length; i < ln; i++) {
staticName = statics[i];
if (!me.hasOwnProperty(staticName)) {
me[staticName] = mixinClass[staticName];
}
}
}
if ('config' in mixin) {
me.addConfig(mixin.config, mixinClass);
}
prototype.mixins[name] = mixin;
if (mixin.afterClassMixedIn) {
mixin.afterClassMixedIn.call(mixinClass, me);
}
return me;
},
addConfig: function(config, mixinClass) {
var cfg = this.$config || this.getConfigurator();
cfg.add(config, mixinClass);
},
addCachedConfig: function(config, isMixin) {
var cached = {},
key;
for (key in config) {
cached[key] = {
cached: true,
$value: config[key]
};
}
this.addConfig(cached, isMixin);
},
getConfigurator: function() {
return this.$config || new Ext.Configurator(this);
},
getName: function() {
return Ext.getClassName(this);
},
createAlias: flexSetter(function(alias, origin) {
aliasOneMember[alias] = function() {
return this[origin].apply(this, arguments);
};
this.override(aliasOneMember);
delete aliasOneMember[alias];
})
});
for (baseStaticMember in Base) {
if (Base.hasOwnProperty(baseStaticMember)) {
baseStaticMembers.push(baseStaticMember);
}
}
Base.$staticMembers = baseStaticMembers;
Base.getConfigurator();
Base.addMembers({
$className: 'Ext.Base',
isInstance: true,
$configPrefixed: true,
$configStrict: true,
isConfiguring: false,
isFirstInstance: false,
statics: function() {
var method = this.statics.caller,
self = this.self;
if (!method) {
return self;
}
return method.$owner;
},
callParent: function(args) {
var method,
superMethod = (method = this.callParent.caller) && (method.$previous || ((method = method.$owner ? method : method.caller) && method.$owner.superclass[method.$name]));
if (!superMethod) {
method = this.callParent.caller;
var parentClass, methodName;
if (!method.$owner) {
if (!method.caller) {
throw new Error("Attempting to call a protected method from the public scope, which is not allowed");
}
method = method.caller;
}
parentClass = method.$owner.superclass;
methodName = method.$name;
if (!(methodName in parentClass)) {
throw new Error("this.callParent() was called but there's no such method (" + methodName + ") found in the parent class (" + (Ext.getClassName(parentClass) || 'Object') + ")");
}
}
return superMethod.apply(this, args || noArgs);
},
callSuper: function(args) {
var method,
superMethod = (method = this.callSuper.caller) && ((method = method.$owner ? method : method.caller) && method.$owner.superclass[method.$name]);
if (!superMethod) {
method = this.callSuper.caller;
var parentClass, methodName;
if (!method.$owner) {
if (!method.caller) {
throw new Error("Attempting to call a protected method from the public scope, which is not allowed");
}
method = method.caller;
}
parentClass = method.$owner.superclass;
methodName = method.$name;
if (!(methodName in parentClass)) {
throw new Error("this.callSuper() was called but there's no such method (" + methodName + ") found in the parent class (" + (Ext.getClassName(parentClass) || 'Object') + ")");
}
}
return superMethod.apply(this, args || noArgs);
},
self: Base,
constructor: function() {
return this;
},
getConfigurator: function() {
return this.$config || this.self.getConfigurator();
},
initConfig: function(instanceConfig) {
var me = this,
cfg = me.getConfigurator();
me.initConfig = Ext.emptyFn;
me.initialConfig = instanceConfig || {};
cfg.configure(me, instanceConfig);
return me;
},
beforeInitConfig: Ext.emptyFn,
getConfig: getConfig,
setConfig: function(name, value,
options) {
var me = this,
config;
if (name) {
if (typeof name === 'string') {
config = {};
config[name] = value;
} else {
config = name;
}
me.getConfigurator().reconfigure(me, config, options);
}
return me;
},
getCurrentConfig: function() {
var cfg = this.getConfigurator();
return cfg.getCurrentConfig(this);
},
hasConfig: function(name) {
return name in this.defaultConfig;
},
getInitialConfig: function(name) {
var config = this.config;
if (!name) {
return config;
}
return config[name];
},
$links: null,
link: function(name, value) {
var me = this,
links = me.$links || (me.$links = {});
links[name] = true;
me[name] = value;
return value;
},
unlink: function(names) {
var me = this,
i, ln, link, value;
if (!Ext.isArray(names)) {
Ext.Error.raise('Invalid argument - expected array of strings');
}
for (i = 0 , ln = names.length; i < ln; i++) {
link = names[i];
value = me[link];
if (value) {
if (value.isInstance && !value.isDestroyed) {
value.destroy();
} else if (value.parentNode && 'nodeType' in value) {
value.parentNode.removeChild(value);
}
}
me[link] = null;
}
return me;
},
destroy: function() {
var me = this,
links = me.$links;
me.destroy = Ext.emptyFn;
me.isDestroyed = true;
if (links) {
me.$links = null;
me.unlink(Ext.Object.getKeys(links));
}
}
});
BasePrototype.callOverridden = BasePrototype.callParent;
Ext.privacyViolation = function(cls, existing, member, isStatic) {
var name = member.$name,
conflictCls = existing.$owner && existing.$owner.$className,
s = isStatic ? 'static ' : '',
msg = member.$privacy ? 'Private ' + s + member.$privacy + ' method "' + name + '"' : 'Public ' + s + 'method "' + name + '"';
if (cls.$className) {
msg = cls.$className + ': ' + msg;
}
if (!existing.$privacy) {
msg += conflictCls ? ' hides public method inherited from ' + conflictCls : ' hides inherited public method.';
} else {
msg += conflictCls ? ' conflicts with private ' + existing.$privacy + ' method declared by ' + conflictCls : ' conflicts with inherited private ' + existing.$privacy + ' method.';
}
var compat = Ext.getCompatVersion();
var ver = Ext.getVersion();
if (ver && compat && compat.lt(ver)) {
Ext.log.error(msg);
} else {
Ext.Error.raise(msg);
}
};
return Base;
}(Ext.Function.flexSetter));
(function(Cache, prototype) {
(Ext.util || (Ext.util = {})).Cache = Cache = function(config) {
var me = this,
head;
if (config) {
Ext.apply(me, config);
}
me.head = head = {
id: (me.seed = 0),
key: null,
value: null
};
me.map = {};
head.next = head.prev = head;
};
Cache.prototype = prototype = {
maxSize: 100,
count: 0,
clear: function() {
var me = this,
head = me.head,
entry = head.next;
head.next = head.prev = head;
if (!me.evict.$nullFn) {
for (; entry !== head; entry = entry.next) {
me.evict(entry.key, entry.value);
}
}
me.count = 0;
},
each: function(fn, scope) {
scope = scope || this;
for (var head = this.head,
ent = head.next; ent !== head; ent = ent.next) {
if (fn.call(scope, ent.key, ent.value)) {
break;
}
}
},
get: function(key) {
var me = this,
head = me.head,
map = me.map,
entry = map[key];
if (entry) {
if (entry.prev !== head) {
me.unlinkEntry(entry);
me.linkEntry(entry);
}
} else {
map[key] = entry = {
id: ++me.seed,
key: key,
value: me.miss.apply(me, arguments)
};
me.linkEntry(entry);
++me.count;
while (me.count > me.maxSize) {
me.unlinkEntry(head.prev, true);
--me.count;
}
}
return entry.value;
},
evict: Ext.emptyFn,
linkEntry: function(entry) {
var head = this.head,
first = head.next;
entry.next = first;
entry.prev = head;
head.next = entry;
first.prev = entry;
},
unlinkEntry: function(entry, evicted) {
var next = entry.next,
prev = entry.prev;
prev.next = next;
next.prev = prev;
if (evicted) {
this.evict(entry.key, entry.value);
}
}
};
prototype.destroy = prototype.clear;
}());
(function() {
var ExtClass,
Base = Ext.Base,
baseStaticMembers = Base.$staticMembers,
ruleKeySortFn = function(a, b) {
return (a.length - b.length) || ((a < b) ? -1 : ((a > b) ? 1 : 0));
};
function makeCtor(className) {
function constructor() {
return this.constructor.apply(this, arguments) || null;
}
if (className) {
constructor.name = className;
}
return constructor;
}
Ext.Class = ExtClass = function(Class, data, onCreated) {
if (typeof Class != 'function') {
onCreated = data;
data = Class;
Class = null;
}
if (!data) {
data = {};
}
Class = ExtClass.create(Class, data);
ExtClass.process(Class, data, onCreated);
return Class;
};
Ext.apply(ExtClass, {
makeCtor: makeCtor,
onBeforeCreated: function(Class, data, hooks) {
Ext.classSystemMonitor && Ext.classSystemMonitor(Class, '>> Ext.Class#onBeforeCreated', arguments);
Class.addMembers(data);
hooks.onCreated.call(Class, Class);
Ext.classSystemMonitor && Ext.classSystemMonitor(Class, '<< Ext.Class#onBeforeCreated', arguments);
},
create: function(Class, data) {
var i = baseStaticMembers.length,
name;
if (!Class) {
Class = makeCtor(data.$className);
}
while (i--) {
name = baseStaticMembers[i];
Class[name] = Base[name];
}
return Class;
},
process: function(Class, data, onCreated) {
var preprocessorStack = data.preprocessors || ExtClass.defaultPreprocessors,
registeredPreprocessors = this.preprocessors,
hooks = {
onBeforeCreated: this.onBeforeCreated
},
preprocessors = [],
preprocessor, preprocessorsProperties, i, ln, j, subLn, preprocessorProperty;
delete data.preprocessors;
Class._classHooks = hooks;
for (i = 0 , ln = preprocessorStack.length; i < ln; i++) {
preprocessor = preprocessorStack[i];
if (typeof preprocessor == 'string') {
preprocessor = registeredPreprocessors[preprocessor];
preprocessorsProperties = preprocessor.properties;
if (preprocessorsProperties === true) {
preprocessors.push(preprocessor.fn);
} else if (preprocessorsProperties) {
for (j = 0 , subLn = preprocessorsProperties.length; j < subLn; j++) {
preprocessorProperty = preprocessorsProperties[j];
if (data.hasOwnProperty(preprocessorProperty)) {
preprocessors.push(preprocessor.fn);
break;
}
}
}
} else {
preprocessors.push(preprocessor);
}
}
hooks.onCreated = onCreated ? onCreated : Ext.emptyFn;
hooks.preprocessors = preprocessors;
this.doProcess(Class, data, hooks);
},
doProcess: function(Class, data, hooks) {
var me = this,
preprocessors = hooks.preprocessors,
preprocessor = preprocessors.shift(),
doProcess = me.doProcess;
for (; preprocessor; preprocessor = preprocessors.shift()) {
if (preprocessor.call(me, Class, data, hooks, doProcess) === false) {
return;
}
}
hooks.onBeforeCreated.apply(me, arguments);
},
preprocessors: {},
registerPreprocessor: function(name, fn, properties, position, relativeTo) {
if (!position) {
position = 'last';
}
if (!properties) {
properties = [
name
];
}
this.preprocessors[name] = {
name: name,
properties: properties || false,
fn: fn
};
this.setDefaultPreprocessorPosition(name, position, relativeTo);
return this;
},
getPreprocessor: function(name) {
return this.preprocessors[name];
},
getPreprocessors: function() {
return this.preprocessors;
},
defaultPreprocessors: [],
getDefaultPreprocessors: function() {
return this.defaultPreprocessors;
},
setDefaultPreprocessors: function(preprocessors) {
this.defaultPreprocessors = Ext.Array.from(preprocessors);
return this;
},
setDefaultPreprocessorPosition: function(name, offset, relativeName) {
var defaultPreprocessors = this.defaultPreprocessors,
index;
if (typeof offset == 'string') {
if (offset === 'first') {
defaultPreprocessors.unshift(name);
return this;
} else if (offset === 'last') {
defaultPreprocessors.push(name);
return this;
}
offset = (offset === 'after') ? 1 : -1;
}
index = Ext.Array.indexOf(defaultPreprocessors, relativeName);
if (index !== -1) {
Ext.Array.splice(defaultPreprocessors, Math.max(0, index + offset), 0, name);
}
return this;
}
});
ExtClass.registerPreprocessor('extend', function(Class, data, hooks) {
Ext.classSystemMonitor && Ext.classSystemMonitor(Class, 'Ext.Class#extendPreProcessor', arguments);
var Base = Ext.Base,
basePrototype = Base.prototype,
extend = data.extend,
Parent, parentPrototype, i;
delete data.extend;
if (extend && extend !== Object) {
Parent = extend;
} else {
Parent = Base;
}
parentPrototype = Parent.prototype;
if (!Parent.$isClass) {
for (i in basePrototype) {
if (!parentPrototype[i]) {
parentPrototype[i] = basePrototype[i];
}
}
}
Class.extend(Parent);
Class.triggerExtended.apply(Class, arguments);
if (data.onClassExtended) {
Class.onExtended(data.onClassExtended, Class);
delete data.onClassExtended;
}
}, true);
ExtClass.registerPreprocessor('privates', function(Class, data) {
Ext.classSystemMonitor && Ext.classSystemMonitor(Class, 'Ext.Class#privatePreprocessor', arguments);
var privates = data.privates,
statics = privates.statics,
privacy = privates.privacy || true;
delete data.privates;
delete privates.statics;
Class.addMembers(privates, false, privacy);
if (statics) {
Class.addMembers(statics, true, privacy);
}
});
ExtClass.registerPreprocessor('statics', function(Class, data) {
Ext.classSystemMonitor && Ext.classSystemMonitor(Class, 'Ext.Class#staticsPreprocessor', arguments);
Class.addStatics(data.statics);
delete data.statics;
});
ExtClass.registerPreprocessor('inheritableStatics', function(Class, data) {
Ext.classSystemMonitor && Ext.classSystemMonitor(Class, 'Ext.Class#inheritableStaticsPreprocessor', arguments);
Class.addInheritableStatics(data.inheritableStatics);
delete data.inheritableStatics;
});
Ext.createRuleFn = function(code) {
return new Function('$c', 'with($c) { return (' + code + '); }');
};
Ext.expressionCache = new Ext.util.Cache({
miss: Ext.createRuleFn
});
Ext.ruleKeySortFn = ruleKeySortFn;
Ext.getPlatformConfigKeys = function(platformConfig) {
var ret = [],
platform, rule;
for (platform in platformConfig) {
rule = Ext.expressionCache.get(platform);
if (rule(Ext.platformTags)) {
ret.push(platform);
}
}
ret.sort(ruleKeySortFn);
return ret;
};
ExtClass.registerPreprocessor('platformConfig', function(Class, data, hooks) {
var platformConfigs = data.platformConfig,
config = data.config,
added, classConfigs, configs, configurator, hoisted, keys, name, value, platform, theme, platformConfig, i, ln, j, ln2, themeName;
delete data.platformConfig;
if (platformConfigs instanceof Array) {
config = config || {};
themeName = (Ext.theme || (Ext.theme = {
name: 'Default'
})).name;
for (i = 0 , ln = platformConfigs.length; i < ln; i++) {
platformConfig = platformConfigs[i];
platform = platformConfig.platform;
delete platformConfig.platform;
theme = [].concat(platformConfig.theme);
ln2 = theme.length;
delete platformConfig.theme;
if (platform && Ext.filterPlatform(platform)) {
Ext.merge(config, platformConfig);
}
if (ln2) {
for (j = 0; j < ln2; j++) {
if (themeName === theme[j]) {
Ext.merge(config, platformConfig);
}
}
}
}
} else {
configurator = Class.getConfigurator();
classConfigs = configurator.configs;
keys = Ext.getPlatformConfigKeys(platformConfigs);
for (i = 0 , ln = keys.length; i < ln; ++i) {
configs = platformConfigs[keys[i]];
hoisted = added = null;
for (name in configs) {
value = configs[name];
if (config && name in config) {
(added || (added = {}))[name] = value;
(hoisted || (hoisted = {}))[name] = config[name];
delete config[name];
} else if (name in classConfigs) {
(added || (added = {}))[name] = value;
} else {
data[name] = value;
}
}
if (hoisted) {
configurator.add(hoisted);
}
if (added) {
configurator.add(added);
}
}
}
});
ExtClass.registerPreprocessor('config', function(Class, data) {
if (data.hasOwnProperty('$configPrefixed')) {
Class.prototype.$configPrefixed = data.$configPrefixed;
}
Class.addConfig(data.config);
delete data.config;
});
ExtClass.registerPreprocessor('cachedConfig', function(Class, data) {
if (data.hasOwnProperty('$configPrefixed')) {
Class.prototype.$configPrefixed = data.$configPrefixed;
}
Class.addCachedConfig(data.cachedConfig);
delete data.cachedConfig;
});
ExtClass.registerPreprocessor('mixins', function(Class, data, hooks) {
Ext.classSystemMonitor && Ext.classSystemMonitor(Class, 'Ext.Class#mixinsPreprocessor', arguments);
var mixins = data.mixins,
onCreated = hooks.onCreated;
delete data.mixins;
hooks.onCreated = function() {
Ext.classSystemMonitor && Ext.classSystemMonitor(Class, 'Ext.Class#mixinsPreprocessor#beforeCreated', arguments);
hooks.onCreated = onCreated;
Class.mixin(mixins);
return hooks.onCreated.apply(this, arguments);
};
});
Ext.extend = function(Class, Parent, members) {
Ext.classSystemMonitor && Ext.classSystemMonitor(Class, 'Ext.Class#extend-backwards-compatible', arguments);
if (arguments.length === 2 && Ext.isObject(Parent)) {
members = Parent;
Parent = Class;
Class = null;
}
var cls;
if (!Parent) {
throw new Error("[Ext.extend] Attempting to extend from a class which has not been loaded on the page.");
}
members.extend = Parent;
members.preprocessors = [
'extend',
'statics',
'inheritableStatics',
'mixins',
'platformConfig',
'config'
];
if (Class) {
cls = new ExtClass(Class, members);
cls.prototype.constructor = Class;
} else {
cls = new ExtClass(members);
}
cls.prototype.override = function(o) {
for (var m in o) {
if (o.hasOwnProperty(m)) {
this[m] = o[m];
}
}
};
return cls;
};
}());
Ext.Inventory = function() {
var me = this;
me.names = [];
me.paths = {};
me.alternateToName = {};
me.aliasToName = {};
me.nameToAliases = {};
me.nameToAlternates = {};
};
Ext.Inventory.prototype = {
_array1: [
0
],
prefixes: null,
dotRe: /\./g,
wildcardRe: /\*/g,
addAlias: function(className, alias) {
return this.addMapping(className, alias, this.aliasToName, this.nameToAliases);
},
addAlternate: function(className, alternate) {
return this.addMapping(className, alternate, this.alternateToName, this.nameToAlternates);
},
addMapping: function(className, alternate, toName, nameTo) {
var name = className.$className || className,
mappings = name,
array = this._array1,
a, aliases, cls, i, length, nameMapping;
if (Ext.isString(name)) {
mappings = {};
mappings[name] = alternate;
}
for (cls in mappings) {
aliases = mappings[cls];
if (Ext.isString(aliases)) {
array[0] = aliases;
aliases = array;
}
length = aliases.length;
nameMapping = nameTo[cls] || (nameTo[cls] = []);
for (i = 0; i < length; ++i) {
if (!(a = aliases[i])) {
continue;
}
if (toName[a] !== cls) {
if (toName[a]) {
Ext.log.warn("Overriding existing mapping: '" + a + "' From '" + toName[a] + "' to '" + cls + "'. Is this intentional?");
}
toName[a] = cls;
nameMapping.push(a);
}
}
}
},
getAliasesByName: function(name) {
return this.nameToAliases[name] || null;
},
getAlternatesByName: function(name) {
return this.nameToAlternates[name] || null;
},
getNameByAlias: function(alias) {
return this.aliasToName[alias] || '';
},
getNameByAlternate: function(alternate) {
return this.alternateToName[alternate] || '';
},
getNamesByExpression: function(expression, exclude, accumulate) {
var me = this,
aliasToName = me.aliasToName,
alternateToName = me.alternateToName,
nameToAliases = me.nameToAliases,
nameToAlternates = me.nameToAlternates,
map = accumulate ? exclude : {},
names = [],
expressions = Ext.isString(expression) ? [
expression
] : expression,
length = expressions.length,
wildcardRe = me.wildcardRe,
expr, i, list, match, n, name, regex;
for (i = 0; i < length; ++i) {
if ((expr = expressions[i]).indexOf('*') < 0) {
if (!(name = aliasToName[expr])) {
if (!(name = alternateToName[expr])) {
name = expr;
}
}
if (!(name in map) && !(exclude && (name in exclude))) {
map[name] = 1;
names.push(name);
}
} else {
regex = new RegExp('^' + expr.replace(wildcardRe, '(.*?)') + '$');
for (name in nameToAliases) {
if (!(name in map) && !(exclude && (name in exclude))) {
if (!(match = regex.test(name))) {
n = (list = nameToAliases[name]).length;
while (!match && n-- > 0) {
match = regex.test(list[n]);
}
list = nameToAlternates[name];
if (list && !match) {
n = list.length;
while (!match && n-- > 0) {
match = regex.test(list[n]);
}
}
}
if (match) {
map[name] = 1;
names.push(name);
}
}
}
}
}
return names;
},
getPath: function(className) {
var me = this,
paths = me.paths,
ret = '',
prefix;
if (className in paths) {
ret = paths[className];
} else {
prefix = me.getPrefix(className);
if (prefix) {
className = className.substring(prefix.length + 1);
ret = paths[prefix];
if (ret) {
ret += '/';
}
}
ret += className.replace(me.dotRe, '/') + '.js';
}
return ret;
},
getPrefix: function(className) {
if (className in this.paths) {
return className;
}
var prefixes = this.getPrefixes(),
i = prefixes.length,
length, prefix;
while (i-- > 0) {
length = (prefix = prefixes[i]).length;
if (length < className.length && className.charAt(length) === '.' && prefix === className.substring(0, length)) {
return prefix;
}
}
return '';
},
getPrefixes: function() {
var me = this,
prefixes = me.prefixes;
if (!prefixes) {
me.prefixes = prefixes = me.names.slice(0);
prefixes.sort(me._compareNames);
}
return prefixes;
},
removeName: function(name) {
var me = this,
aliasToName = me.aliasToName,
alternateToName = me.alternateToName,
nameToAliases = me.nameToAliases,
nameToAlternates = me.nameToAlternates,
aliases = nameToAliases[name],
alternates = nameToAlternates[name],
i, a;
delete nameToAliases[name];
delete nameToAlternates[name];
if (aliases) {
for (i = aliases.length; i--; ) {
if (name === (a = aliases[i])) {
delete aliasToName[a];
}
}
}
if (alternates) {
for (i = alternates.length; i--; ) {
if (name === (a = alternates[i])) {
delete alternateToName[a];
}
}
}
},
resolveName: function(name) {
var me = this,
trueName;
if (!(name in me.nameToAliases)) {
if (!(trueName = me.aliasToName[name])) {
trueName = me.alternateToName[name];
}
}
return trueName || name;
},
select: function(receiver, scope) {
var me = this,
excludes = {},
ret = {
excludes: excludes,
exclude: function() {
me.getNamesByExpression(arguments, excludes, true);
return this;
}
},
name;
for (name in receiver) {
ret[name] = me.selectMethod(excludes, receiver[name], scope || receiver);
}
return ret;
},
selectMethod: function(excludes, fn, scope) {
var me = this;
return function(include) {
var args = Ext.Array.slice(arguments, 1);
args.unshift(me.getNamesByExpression(include, excludes));
return fn.apply(scope, args);
};
},
setPath: Ext.Function.flexSetter(function(name, path) {
var me = this;
me.paths[name] = path;
me.names.push(name);
me.prefixes = null;
return me;
}),
_compareNames: function(lhs, rhs) {
var cmp = lhs.length - rhs.length;
if (!cmp) {
cmp = (lhs < rhs) ? -1 : 1;
}
return cmp;
}
};
Ext.ClassManager = (function(Class, alias, arraySlice, arrayFrom, global) {
var makeCtor = Ext.Class.makeCtor,
Manager = Ext.apply(new Ext.Inventory(), {
classes: {},
classState: {},
existCache: {},
namespaceRewrites: [
{
from: 'Ext.',
to: Ext
}
],
enableNamespaceParseCache: true,
namespaceParseCache: {},
instantiators: [],
isCreated: function(className) {
var i, ln, part, root, parts;
if (typeof className !== 'string' || className.length < 1) {
throw new Error("[Ext.ClassManager] Invalid classname, must be a string and must not be empty");
}
if (Manager.classes[className] || Manager.existCache[className]) {
return true;
}
root = global;
parts = Manager.parseNamespace(className);
for (i = 0 , ln = parts.length; i < ln; i++) {
part = parts[i];
if (typeof part !== 'string') {
root = part;
} else {
if (!root || !root[part]) {
return false;
}
root = root[part];
}
}
Manager.triggerCreated(className);
return true;
},
createdListeners: [],
nameCreatedListeners: {},
existsListeners: [],
nameExistsListeners: {},
overrideMap: {},
triggerCreated: function(className, state) {
Manager.existCache[className] = state || 1;
Manager.classState[className] += 40;
Manager.notify(className, Manager.createdListeners, Manager.nameCreatedListeners);
},
onCreated: function(fn, scope, className) {
Manager.addListener(fn, scope, className, Manager.createdListeners, Manager.nameCreatedListeners);
},
notify: function(className, listeners, nameListeners) {
var alternateNames = Manager.getAlternatesByName(className),
names = [
className
],
i, ln, j, subLn, listener, name;
for (i = 0 , ln = listeners.length; i < ln; i++) {
listener = listeners[i];
listener.fn.call(listener.scope, className);
}
while (names) {
for (i = 0 , ln = names.length; i < ln; i++) {
name = names[i];
listeners = nameListeners[name];
if (listeners) {
for (j = 0 , subLn = listeners.length; j < subLn; j++) {
listener = listeners[j];
listener.fn.call(listener.scope, name);
}
delete nameListeners[name];
}
}
names = alternateNames;
alternateNames = null;
}
},
addListener: function(fn, scope, className, listeners, nameListeners) {
if (Ext.isArray(className)) {
fn = Ext.Function.createBarrier(className.length, fn, scope);
for (i = 0; i < className.length; i++) {
this.addListener(fn, null, className[i], listeners, nameListeners);
}
return;
}
var i,
listener = {
fn: fn,
scope: scope
};
if (className) {
if (this.isCreated(className)) {
fn.call(scope, className);
return;
}
if (!nameListeners[className]) {
nameListeners[className] = [];
}
nameListeners[className].push(listener);
} else {
listeners.push(listener);
}
},
parseNamespace: function(namespace) {
if (typeof namespace !== 'string') {
throw new Error("[Ext.ClassManager] Invalid namespace, must be a string");
}
var cache = this.namespaceParseCache,
parts, rewrites, root, name, rewrite, from, to, i, ln;
if (this.enableNamespaceParseCache) {
if (cache.hasOwnProperty(namespace)) {
return cache[namespace];
}
}
parts = [];
rewrites = this.namespaceRewrites;
root = global;
name = namespace;
for (i = 0 , ln = rewrites.length; i < ln; i++) {
rewrite = rewrites[i];
from = rewrite.from;
to = rewrite.to;
if (name === from || name.substring(0, from.length) === from) {
name = name.substring(from.length);
if (typeof to !== 'string') {
root = to;
} else {
parts = parts.concat(to.split('.'));
}
break;
}
}
parts.push(root);
parts = parts.concat(name.split('.'));
if (this.enableNamespaceParseCache) {
cache[namespace] = parts;
}
return parts;
},
setNamespace: function(name, value) {
var root = global,
parts = this.parseNamespace(name),
ln = parts.length - 1,
leaf = parts[ln],
i, part;
for (i = 0; i < ln; i++) {
part = parts[i];
if (typeof part !== 'string') {
root = part;
} else {
if (!root[part]) {
root[part] = {};
}
root = root[part];
}
}
root[leaf] = value;
return root[leaf];
},
createNamespaces: function() {
var root = global,
parts, part, i, j, ln, subLn;
for (i = 0 , ln = arguments.length; i < ln; i++) {
parts = this.parseNamespace(arguments[i]);
for (j = 0 , subLn = parts.length; j < subLn; j++) {
part = parts[j];
if (typeof part !== 'string') {
root = part;
} else {
if (!root[part]) {
root[part] = {};
}
root = root[part];
}
}
}
return root;
},
set: function(name, value) {
var me = this,
targetName = me.getName(value);
me.classes[name] = me.setNamespace(name, value);
if (targetName && targetName !== name) {
me.addAlternate(targetName, name);
}
return this;
},
get: function(name) {
var classes = this.classes,
root, parts, part, i, ln;
if (classes[name]) {
return classes[name];
}
root = global;
parts = this.parseNamespace(name);
for (i = 0 , ln = parts.length; i < ln; i++) {
part = parts[i];
if (typeof part !== 'string') {
root = part;
} else {
if (!root || !root[part]) {
return null;
}
root = root[part];
}
}
return root;
},
addNameAliasMappings: function(aliases) {
this.addAlias(aliases);
},
addNameAlternateMappings: function(alternates) {
this.addAlternate(alternates);
},
getByAlias: function(alias) {
return this.get(this.getNameByAlias(alias));
},
getName: function(object) {
return object && object.$className || '';
},
getClass: function(object) {
return object && object.self || null;
},
create: function(className, data, createdFn) {
if (className != null && typeof className !== 'string') {
throw new Error("[Ext.define] Invalid class name '" + className + "' specified, must be a non-empty string");
}
var ctor = makeCtor(className);
if (typeof data === 'function') {
data = data(ctor);
}
if (className) {
if (Manager.classes[className]) {
Ext.log.warn("[Ext.define] Duplicate class name '" + className + "' specified, must be a non-empty string");
}
ctor.name = className;
}
data.$className = className;
return new Class(ctor, data, function() {
var postprocessorStack = data.postprocessors || Manager.defaultPostprocessors,
registeredPostprocessors = Manager.postprocessors,
postprocessors = [],
postprocessor, i, ln, j, subLn, postprocessorProperties, postprocessorProperty;
delete data.postprocessors;
for (i = 0 , ln = postprocessorStack.length; i < ln; i++) {
postprocessor = postprocessorStack[i];
if (typeof postprocessor === 'string') {
postprocessor = registeredPostprocessors[postprocessor];
postprocessorProperties = postprocessor.properties;
if (postprocessorProperties === true) {
postprocessors.push(postprocessor.fn);
} else if (postprocessorProperties) {
for (j = 0 , subLn = postprocessorProperties.length; j < subLn; j++) {
postprocessorProperty = postprocessorProperties[j];
if (data.hasOwnProperty(postprocessorProperty)) {
postprocessors.push(postprocessor.fn);
break;
}
}
}
} else {
postprocessors.push(postprocessor);
}
}
data.postprocessors = postprocessors;
data.createdFn = createdFn;
Manager.processCreate(className, this, data);
});
},
processCreate: function(className, cls, clsData) {
var me = this,
postprocessor = clsData.postprocessors.shift(),
createdFn = clsData.createdFn;
if (!postprocessor) {
Ext.classSystemMonitor && Ext.classSystemMonitor(className, 'Ext.ClassManager#classCreated', arguments);
if (className) {
me.set(className, cls);
}
delete cls._classHooks;
if (createdFn) {
createdFn.call(cls, cls);
}
if (className) {
me.triggerCreated(className);
}
return;
}
if (postprocessor.call(me, className, cls, clsData, me.processCreate) !== false) {
me.processCreate(className, cls, clsData);
}
},
createOverride: function(className, data, createdFn) {
var me = this,
overriddenClassName = data.override,
requires = data.requires,
uses = data.uses,
mixins = data.mixins,
mixinsIsArray,
compat = data.compatibility,
depedenciesLoaded,
classReady = function() {
var cls, dependencies, i, key, temp;
if (!depedenciesLoaded) {
dependencies = requires ? requires.slice(0) : [];
if (mixins) {
if (!(mixinsIsArray = mixins instanceof Array)) {
for (key in mixins) {
if (Ext.isString(cls = mixins[key])) {
dependencies.push(cls);
}
}
} else {
for (i = 0 , temp = mixins.length; i < temp; ++i) {
if (Ext.isString(cls = mixins[i])) {
dependencies.push(cls);
}
}
}
}
depedenciesLoaded = true;
if (dependencies.length) {
Ext.require(dependencies, classReady);
return;
}
}
if (mixinsIsArray) {
for (i = 0 , temp = mixins.length; i < temp; ++i) {
if (Ext.isString(cls = mixins[i])) {
mixins[i] = Ext.ClassManager.get(cls);
}
}
} else if (mixins) {
for (key in mixins) {
if (Ext.isString(cls = mixins[key])) {
mixins[key] = Ext.ClassManager.get(cls);
}
}
}
cls = me.get(overriddenClassName);
delete data.override;
delete data.compatibility;
delete data.requires;
delete data.uses;
Ext.override(cls, data);
Ext.Loader.history.push(className);
if (uses) {
Ext['Loader'].addUsedClasses(uses);
}
if (createdFn) {
createdFn.call(cls, cls);
}
};
Manager.overrideMap[className] = true;
if (!compat || Ext.checkVersion(compat)) {
me.onCreated(classReady, me, overriddenClassName);
}
me.triggerCreated(className, 2);
return me;
},
instantiateByAlias: function() {
var alias = arguments[0],
args = arraySlice.call(arguments),
className = this.getNameByAlias(alias);
if (!className) {
throw new Error("[Ext.createByAlias] Unrecognized alias: " + alias);
}
args[0] = className;
return Ext.create.apply(Ext, args);
},
instantiate: function() {
Ext.log.warn('Ext.ClassManager.instantiate() is deprecated. Use Ext.create() instead.');
return Ext.create.apply(Ext, arguments);
},
dynInstantiate: function(name, args) {
args = arrayFrom(args, true);
args.unshift(name);
return Ext.create.apply(Ext, args);
},
getInstantiator: function(length) {
var instantiators = this.instantiators,
instantiator, i, args;
instantiator = instantiators[length];
if (!instantiator) {
i = length;
args = [];
for (i = 0; i < length; i++) {
args.push('a[' + i + ']');
}
instantiator = instantiators[length] = new Function('c', 'a', 'return new c(' + args.join(',') + ')');
instantiator.name = "Ext.create" + length;
}
return instantiator;
},
postprocessors: {},
defaultPostprocessors: [],
registerPostprocessor: function(name, fn, properties, position, relativeTo) {
if (!position) {
position = 'last';
}
if (!properties) {
properties = [
name
];
}
this.postprocessors[name] = {
name: name,
properties: properties || false,
fn: fn
};
this.setDefaultPostprocessorPosition(name, position, relativeTo);
return this;
},
setDefaultPostprocessors: function(postprocessors) {
this.defaultPostprocessors = arrayFrom(postprocessors);
return this;
},
setDefaultPostprocessorPosition: function(name, offset, relativeName) {
var defaultPostprocessors = this.defaultPostprocessors,
index;
if (typeof offset === 'string') {
if (offset === 'first') {
defaultPostprocessors.unshift(name);
return this;
} else if (offset === 'last') {
defaultPostprocessors.push(name);
return this;
}
offset = (offset === 'after') ? 1 : -1;
}
index = Ext.Array.indexOf(defaultPostprocessors, relativeName);
if (index !== -1) {
Ext.Array.splice(defaultPostprocessors, Math.max(0, index + offset), 0, name);
}
return this;
}
});
Manager.registerPostprocessor('alias', function(name, cls, data) {
Ext.classSystemMonitor && Ext.classSystemMonitor(name, 'Ext.ClassManager#aliasPostProcessor', arguments);
var aliases = Ext.Array.from(data.alias),
i, ln;
for (i = 0 , ln = aliases.length; i < ln; i++) {
alias = aliases[i];
this.addAlias(cls, alias);
}
}, [
'xtype',
'alias'
]);
Manager.registerPostprocessor('singleton', function(name, cls, data, fn) {
Ext.classSystemMonitor && Ext.classSystemMonitor(name, 'Ext.ClassManager#singletonPostProcessor', arguments);
if (data.singleton) {
fn.call(this, name, new cls(), data);
} else {
return true;
}
return false;
});
Manager.registerPostprocessor('alternateClassName', function(name, cls, data) {
Ext.classSystemMonitor && Ext.classSystemMonitor(name, 'Ext.ClassManager#alternateClassNamePostprocessor', arguments);
var alternates = data.alternateClassName,
i, ln, alternate;
if (!(alternates instanceof Array)) {
alternates = [
alternates
];
}
for (i = 0 , ln = alternates.length; i < ln; i++) {
alternate = alternates[i];
if (typeof alternate !== 'string') {
throw new Error("[Ext.define] Invalid alternate of: '" + alternate + "' for class: '" + name + "'; must be a valid string");
}
this.set(alternate, cls);
}
});
Manager.registerPostprocessor('debugHooks', function(name, Class, data) {
Ext.classSystemMonitor && Ext.classSystemMonitor(Class, 'Ext.Class#debugHooks', arguments);
if (Ext.isDebugEnabled(Class.$className, data.debugHooks.$enabled)) {
delete data.debugHooks.$enabled;
Ext.override(Class, data.debugHooks);
}
var target = Class.isInstance ? Class.self : Class;
delete target.prototype.debugHooks;
});
Manager.registerPostprocessor('deprecated', function(name, Class, data) {
Ext.classSystemMonitor && Ext.classSystemMonitor(Class, 'Ext.Class#deprecated', arguments);
var target = Class.isInstance ? Class.self : Class;
target.addDeprecations(data.deprecated);
delete target.prototype.deprecated;
});
Ext.apply(Ext, {
create: function() {
var name = arguments[0],
nameType = typeof name,
args = arraySlice.call(arguments, 1),
cls;
if (nameType === 'function') {
cls = name;
} else {
if (nameType !== 'string' && args.length === 0) {
args = [
name
];
if (!(name = name.xclass)) {
name = args[0].xtype;
if (name) {
name = 'widget.' + name;
}
}
}
if (typeof name !== 'string' || name.length < 1) {
throw new Error("[Ext.create] Invalid class name or alias '" + name + "' specified, must be a non-empty string");
}
name = Manager.resolveName(name);
cls = Manager.get(name);
}
if (!cls) {
Ext.log.warn("[Ext.Loader] Synchronously loading '" + name + "'; consider adding " + "Ext.require('" + name + "') above Ext.onReady");
Ext.syncRequire(name);
cls = Manager.get(name);
}
if (!cls) {
throw new Error("[Ext.create] Unrecognized class name / alias: " + name);
}
if (typeof cls !== 'function') {
throw new Error("[Ext.create] Singleton '" + name + "' cannot be instantiated.");
}
return Manager.getInstantiator(args.length)(cls, args);
},
widget: function(name, config) {
var xtype = name,
alias, className, T;
if (typeof xtype !== 'string') {
config = name;
xtype = config.xtype;
className = config.xclass;
} else {
config = config || {};
}
if (config.isComponent) {
return config;
}
if (!className) {
alias = 'widget.' + xtype;
className = Manager.getNameByAlias(alias);
}
if (className) {
T = Manager.get(className);
}
if (!T) {
return Ext.create(className || alias, config);
}
return new T(config);
},
createByAlias: alias(Manager, 'instantiateByAlias'),
define: function(className, data, createdFn) {
Ext.classSystemMonitor && Ext.classSystemMonitor(className, 'ClassManager#define', arguments);
if (data.override) {
Manager.classState[className] = 20;
return Manager.createOverride.apply(Manager, arguments);
}
Manager.classState[className] = 10;
return Manager.create.apply(Manager, arguments);
},
undefine: function(className) {
Ext.classSystemMonitor && Ext.classSystemMonitor(className, 'Ext.ClassManager#undefine', arguments);
var classes = Manager.classes,
parts, partCount, namespace, i;
delete Manager.namespaceParseCache[className];
delete classes[className];
delete Manager.existCache[className];
delete Manager.classState[className];
Manager.removeName(className);
parts = Manager.parseNamespace(className);
partCount = parts.length - 1;
namespace = parts[0];
for (i = 1; i < partCount; i++) {
namespace = namespace[parts[i]];
if (!namespace) {
return;
}
}
try {
delete namespace[parts[partCount]];
} catch (e) {
namespace[parts[partCount]] = undefined;
}
},
getClassName: alias(Manager, 'getName'),
getDisplayName: function(object) {
if (object) {
if (object.displayName) {
return object.displayName;
}
if (object.$name && object.$class) {
return Ext.getClassName(object.$class) + '#' + object.$name;
}
if (object.$className) {
return object.$className;
}
}
return 'Anonymous';
},
getClass: alias(Manager, 'getClass'),
namespace: alias(Manager, 'createNamespaces')
});
Ext.createWidget = Ext.widget;
Ext.ns = Ext.namespace;
Class.registerPreprocessor('className', function(cls, data) {
if ('$className' in data) {
cls.$className = data.$className;
cls.displayName = cls.$className;
}
Ext.classSystemMonitor && Ext.classSystemMonitor(cls, 'Ext.ClassManager#classNamePreprocessor', arguments);
}, true, 'first');
Class.registerPreprocessor('alias', function(cls, data) {
Ext.classSystemMonitor && Ext.classSystemMonitor(cls, 'Ext.ClassManager#aliasPreprocessor', arguments);
var prototype = cls.prototype,
xtypes = arrayFrom(data.xtype),
aliases = arrayFrom(data.alias),
widgetPrefix = 'widget.',
widgetPrefixLength = widgetPrefix.length,
xtypesChain = Array.prototype.slice.call(prototype.xtypesChain || []),
xtypesMap = Ext.merge({}, prototype.xtypesMap || {}),
i, ln, alias, xtype;
for (i = 0 , ln = aliases.length; i < ln; i++) {
alias = aliases[i];
if (typeof alias !== 'string' || alias.length < 1) {
throw new Error("[Ext.define] Invalid alias of: '" + alias + "' for class: '" + name + "'; must be a valid string");
}
if (alias.substring(0, widgetPrefixLength) === widgetPrefix) {
xtype = alias.substring(widgetPrefixLength);
Ext.Array.include(xtypes, xtype);
}
}
cls.xtype = data.xtype = xtypes[0];
data.xtypes = xtypes;
for (i = 0 , ln = xtypes.length; i < ln; i++) {
xtype = xtypes[i];
if (!xtypesMap[xtype]) {
xtypesMap[xtype] = true;
xtypesChain.push(xtype);
}
}
data.xtypesChain = xtypesChain;
data.xtypesMap = xtypesMap;
Ext.Function.interceptAfter(data, 'onClassCreated', function() {
Ext.classSystemMonitor && Ext.classSystemMonitor(cls, 'Ext.ClassManager#aliasPreprocessor#afterClassCreated', arguments);
var mixins = prototype.mixins,
key, mixin;
for (key in mixins) {
if (mixins.hasOwnProperty(key)) {
mixin = mixins[key];
xtypes = mixin.xtypes;
if (xtypes) {
for (i = 0 , ln = xtypes.length; i < ln; i++) {
xtype = xtypes[i];
if (!xtypesMap[xtype]) {
xtypesMap[xtype] = true;
xtypesChain.push(xtype);
}
}
}
}
}
});
for (i = 0 , ln = xtypes.length; i < ln; i++) {
xtype = xtypes[i];
if (typeof xtype !== 'string' || xtype.length < 1) {
throw new Error("[Ext.define] Invalid xtype of: '" + xtype + "' for class: '" + name + "'; must be a valid non-empty string");
}
Ext.Array.include(aliases, widgetPrefix + xtype);
}
data.alias = aliases;
}, [
'xtype',
'alias'
]);
if (Ext.manifest) {
var manifest = Ext.manifest,
classes = manifest.classes,
paths = manifest.paths,
aliases = {},
alternates = {},
className, obj, name, path, baseUrl;
if (paths) {
if (manifest.bootRelative) {
baseUrl = Ext.Boot.baseUrl;
for (path in paths) {
if (paths.hasOwnProperty(path)) {
paths[path] = baseUrl + paths[path];
}
}
}
Manager.setPath(paths);
}
if (classes) {
for (className in classes) {
alternates[className] = [];
aliases[className] = [];
obj = classes[className];
if (obj.alias) {
aliases[className] = obj.alias;
}
if (obj.alternates) {
alternates[className] = obj.alternates;
}
}
}
Manager.addAlias(aliases);
Manager.addAlternate(alternates);
}
return Manager;
}(Ext.Class, Ext.Function.alias, Array.prototype.slice, Ext.Array.from, Ext.global));
(Ext.env || (Ext.env = {})).Browser = function(userAgent, publish) {
var me = this,
browserPrefixes = me.browserPrefixes,
enginePrefixes = me.enginePrefixes,
browserMatch = userAgent.match(new RegExp('((?:' + Ext.Object.getValues(browserPrefixes).join(')|(?:') + '))([\\w\\._]+)')),
engineMatch = userAgent.match(new RegExp('((?:' + Ext.Object.getValues(enginePrefixes).join(')|(?:') + '))([\\w\\._]+)')),
browserNames = me.browserNames,
browserName = browserNames.other,
engineNames = me.engineNames,
engineName = engineNames.other,
browserVersion = '',
engineVersion = '',
majorVer = '',
isWebView = false,
i, prefix, mode, name, maxIEVersion;
me.userAgent = userAgent;
if (browserMatch) {
browserName = browserNames[Ext.Object.getKey(browserPrefixes, browserMatch[1])];
if (browserName === 'Safari' && /^Opera/.test(userAgent)) {
browserName = 'Opera';
}
browserVersion = new Ext.Version(browserMatch[2]);
}
if (engineMatch) {
engineName = engineNames[Ext.Object.getKey(enginePrefixes, engineMatch[1])];
engineVersion = new Ext.Version(engineMatch[2]);
}
if (engineName === 'Trident' && browserName !== 'IE') {
browserName = 'IE';
var version = userAgent.match(/.*rv:(\d+.\d+)/);
if (version && version.length) {
version = version[1];
browserVersion = new Ext.Version(version);
}
}
if (userAgent.match(/FB/) && browserName === "Other") {
browserName = browserNames.safari;
engineName = engineNames.webkit;
}
if (userAgent.match(/Android.*Chrome/g)) {
browserName = 'ChromeMobile';
}
if (userAgent.match(/OPR/)) {
browserName = 'Opera';
browserMatch = userAgent.match(/OPR\/(\d+.\d+)/);
browserVersion = new Ext.Version(browserMatch[1]);
}
Ext.apply(this, {
engineName: engineName,
engineVersion: engineVersion,
name: browserName,
version: browserVersion
});
this.setFlag(browserName, true, publish);
if (browserVersion) {
majorVer = browserVersion.getMajor() || '';
if (me.is.IE) {
majorVer = parseInt(majorVer, 10);
mode = document.documentMode;
if (mode === 7 || (majorVer === 7 && mode !== 8 && mode !== 9 && mode !== 10)) {
majorVer = 7;
} else if (mode === 8 || (majorVer === 8 && mode !== 8 && mode !== 9 && mode !== 10)) {
majorVer = 8;
} else if (mode === 9 || (majorVer === 9 && mode !== 7 && mode !== 8 && mode !== 10)) {
majorVer = 9;
} else if (mode === 10 || (majorVer === 10 && mode !== 7 && mode !== 8 && mode !== 9)) {
majorVer = 10;
} else if (mode === 11 || (majorVer === 11 && mode !== 7 && mode !== 8 && mode !== 9 && mode !== 10)) {
majorVer = 11;
}
maxIEVersion = Math.max(majorVer, 11);
for (i = 7; i <= maxIEVersion; ++i) {
prefix = 'isIE' + i;
if (majorVer <= i) {
Ext[prefix + 'm'] = true;
}
if (majorVer === i) {
Ext[prefix] = true;
}
if (majorVer >= i) {
Ext[prefix + 'p'] = true;
}
}
}
if (me.is.Opera && parseInt(majorVer, 10) <= 12) {
Ext.isOpera12m = true;
}
Ext.chromeVersion = Ext.isChrome ? majorVer : 0;
Ext.firefoxVersion = Ext.isFirefox ? majorVer : 0;
Ext.ieVersion = Ext.isIE ? majorVer : 0;
Ext.operaVersion = Ext.isOpera ? majorVer : 0;
Ext.safariVersion = Ext.isSafari ? majorVer : 0;
Ext.webKitVersion = Ext.isWebKit ? majorVer : 0;
this.setFlag(browserName + majorVer, true, publish);
this.setFlag(browserName + browserVersion.getShortVersion());
}
for (i in browserNames) {
if (browserNames.hasOwnProperty(i)) {
name = browserNames[i];
this.setFlag(name, browserName === name);
}
}
this.setFlag(name);
if (engineVersion) {
this.setFlag(engineName + (engineVersion.getMajor() || ''));
this.setFlag(engineName + engineVersion.getShortVersion());
}
for (i in engineNames) {
if (engineNames.hasOwnProperty(i)) {
name = engineNames[i];
this.setFlag(name, engineName === name, publish);
}
}
this.setFlag('Standalone', !!navigator.standalone);
this.setFlag('Ripple', !!document.getElementById("tinyhippos-injected") && !Ext.isEmpty(window.top.ripple));
this.setFlag('WebWorks', !!window.blackberry);
if (window.PhoneGap !== undefined || window.Cordova !== undefined || window.cordova !== undefined) {
isWebView = true;
this.setFlag('PhoneGap');
this.setFlag('Cordova');
} else if (!!window.isNK) {
isWebView = true;
this.setFlag('Sencha');
}
if (/(Glass)/i.test(userAgent)) {
this.setFlag('GoogleGlass');
}
if (/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)(?!.*FBAN)/i.test(userAgent)) {
isWebView = true;
}
this.setFlag('WebView', isWebView);
this.isStrict = Ext.isStrict = document.compatMode === "CSS1Compat";
this.isSecure = Ext.isSecure;
this.identity = browserName + majorVer + (this.isStrict ? 'Strict' : 'Quirks');
};
Ext.env.Browser.prototype = {
constructor: Ext.env.Browser,
browserNames: {
ie: 'IE',
firefox: 'Firefox',
safari: 'Safari',
chrome: 'Chrome',
opera: 'Opera',
dolfin: 'Dolfin',
webosbrowser: 'webOSBrowser',
chromeMobile: 'ChromeMobile',
chromeiOS: 'ChromeiOS',
silk: 'Silk',
other: 'Other'
},
engineNames: {
webkit: 'WebKit',
gecko: 'Gecko',
presto: 'Presto',
trident: 'Trident',
other: 'Other'
},
enginePrefixes: {
webkit: 'AppleWebKit/',
gecko: 'Gecko/',
presto: 'Presto/',
trident: 'Trident/'
},
browserPrefixes: {
ie: 'MSIE ',
firefox: 'Firefox/',
chrome: 'Chrome/',
safari: 'Version/',
opera: 'OPR/',
dolfin: 'Dolfin/',
webosbrowser: 'wOSBrowser/',
chromeMobile: 'CrMo/',
chromeiOS: 'CriOS/',
silk: 'Silk/'
},
styleDashPrefixes: {
WebKit: '-webkit-',
Gecko: '-moz-',
Trident: '-ms-',
Presto: '-o-',
Other: ''
},
stylePrefixes: {
WebKit: 'Webkit',
Gecko: 'Moz',
Trident: 'ms',
Presto: 'O',
Other: ''
},
propertyPrefixes: {
WebKit: 'webkit',
Gecko: 'moz',
Trident: 'ms',
Presto: 'o',
Other: ''
},
is: function(name) {
return !!this.is[name];
},
name: null,
version: null,
engineName: null,
engineVersion: null,
setFlag: function(name, value, publish) {
if (value === undefined) {
value = true;
}
this.is[name] = value;
this.is[name.toLowerCase()] = value;
if (publish) {
Ext['is' + name] = value;
}
return this;
},
getStyleDashPrefix: function() {
return this.styleDashPrefixes[this.engineName];
},
getStylePrefix: function() {
return this.stylePrefixes[this.engineName];
},
getVendorProperyName: function(name) {
var prefix = this.propertyPrefixes[this.engineName];
if (prefix.length > 0) {
return prefix + Ext.String.capitalize(name);
}
return name;
},
getPreferredTranslationMethod: function(config) {
if (typeof config === 'object' && 'translationMethod' in config && config.translationMethod !== 'auto') {
return config.translationMethod;
} else {
return 'csstransform';
}
}
};
(function(userAgent) {
Ext.browser = new Ext.env.Browser(userAgent, true);
Ext.userAgent = userAgent.toLowerCase();
Ext.SSL_SECURE_URL = Ext.isSecure && Ext.isIE ? 'javascript:\'\'' : 'about:blank';
}(
Ext.global.navigator.userAgent));
Ext.env.OS = function(userAgent, platform, browserScope) {
var me = this,
names = me.names,
prefixes = me.prefixes,
name,
version = '',
is = me.is,
i, prefix, match, item, match1;
browserScope = browserScope || Ext.browser;
for (i in prefixes) {
if (prefixes.hasOwnProperty(i)) {
prefix = prefixes[i];
match = userAgent.match(new RegExp('(?:' + prefix + ')([^\\s;]+)'));
if (match) {
name = names[i];
match1 = match[1];
if (match1 && match1 === "HTC_") {
version = new Ext.Version("2.3");
} else if (match1 && match1 === "Silk/") {
version = new Ext.Version("2.3");
} else {
version = new Ext.Version(match[match.length - 1]);
}
break;
}
}
}
if (!name) {
name = names[(userAgent.toLowerCase().match(/mac|win|linux/) || [
'other'
])[0]];
version = new Ext.Version('');
}
this.name = name;
this.version = version;
if (platform) {
this.setFlag(platform.replace(/ simulator$/i, ''));
}
this.setFlag(name);
if (version) {
this.setFlag(name + (version.getMajor() || ''));
this.setFlag(name + version.getShortVersion());
}
for (i in names) {
if (names.hasOwnProperty(i)) {
item = names[i];
if (!is.hasOwnProperty(name)) {
this.setFlag(item, (name === item));
}
}
}
if (this.name === "iOS" && window.screen.height === 568) {
this.setFlag('iPhone5');
}
if (browserScope.is.Safari || browserScope.is.Silk) {
if (this.is.Android2 || this.is.Android3 || browserScope.version.shortVersion === 501) {
browserScope.setFlag("AndroidStock");
browserScope.setFlag("AndroidStock2");
}
if (this.is.Android4) {
browserScope.setFlag("AndroidStock");
browserScope.setFlag("AndroidStock4");
}
}
};
Ext.env.OS.prototype = {
constructor: Ext.env.OS,
names: {
ios: 'iOS',
android: 'Android',
windowsPhone: 'WindowsPhone',
webos: 'webOS',
blackberry: 'BlackBerry',
rimTablet: 'RIMTablet',
mac: 'MacOS',
win: 'Windows',
tizen: 'Tizen',
linux: 'Linux',
bada: 'Bada',
chrome: 'ChromeOS',
other: 'Other'
},
prefixes: {
tizen: '(Tizen )',
ios: 'i(?:Pad|Phone|Pod)(?:.*)CPU(?: iPhone)? OS ',
android: '(Android |HTC_|Silk/)',
windowsPhone: 'Windows Phone ',
blackberry: '(?:BlackBerry|BB)(?:.*)Version/',
rimTablet: 'RIM Tablet OS ',
webos: '(?:webOS|hpwOS)/',
bada: 'Bada/',
chrome: 'CrOS '
},
is: function(name) {
return !!this[name];
},
name: null,
version: null,
setFlag: function(name, value) {
if (value === undefined) {
value = true;
}
if (this.flags) {
this.flags[name] = value;
}
this.is[name] = value;
this.is[name.toLowerCase()] = value;
return this;
}
};
(function() {
var navigation = Ext.global.navigator,
userAgent = navigation.userAgent,
OS = Ext.env.OS,
is = (Ext.is || (Ext.is = {})),
osEnv, osName, deviceType;
OS.prototype.flags = is;
Ext.os = osEnv = new OS(userAgent, navigation.platform);
osName = osEnv.name;
Ext['is' + osName] = true;
Ext.isMac = is.Mac = is.MacOS;
var search = window.location.search.match(/deviceType=(Tablet|Phone)/),
nativeDeviceType = window.deviceType;
if (search && search[1]) {
deviceType = search[1];
} else if (nativeDeviceType === 'iPhone') {
deviceType = 'Phone';
} else if (nativeDeviceType === 'iPad') {
deviceType = 'Tablet';
} else {
if (!osEnv.is.Android && !osEnv.is.iOS && !osEnv.is.WindowsPhone && /Windows|Linux|MacOS/.test(osName)) {
deviceType = 'Desktop';
Ext.browser.is.WebView = !!Ext.browser.is.Ripple;
} else if (osEnv.is.iPad || osEnv.is.RIMTablet || osEnv.is.Android3 || Ext.browser.is.Silk || (osEnv.is.Android4 && userAgent.search(/mobile/i) === -1)) {
deviceType = 'Tablet';
} else {
deviceType = 'Phone';
}
}
osEnv.setFlag(deviceType, true);
osEnv.deviceType = deviceType;
delete OS.prototype.flags;
}());
Ext.feature = {
has: function(name) {
return !!this.has[name];
},
testElements: {},
getTestElement: function(tag, createNew) {
if (tag === undefined) {
tag = 'div';
} else if (typeof tag !== 'string') {
return tag;
}
if (createNew) {
return document.createElement(tag);
}
if (!this.testElements[tag]) {
this.testElements[tag] = document.createElement(tag);
}
return this.testElements[tag];
},
isStyleSupported: function(name, tag) {
var elementStyle = this.getTestElement(tag).style,
cName = Ext.String.capitalize(name);
if (typeof elementStyle[name] !== 'undefined' || typeof elementStyle[Ext.browser.getStylePrefix(name) + cName] !== 'undefined') {
return true;
}
return false;
},
isStyleSupportedWithoutPrefix: function(name, tag) {
var elementStyle = this.getTestElement(tag).style;
if (typeof elementStyle[name] !== 'undefined') {
return true;
}
return false;
},
isEventSupported: function(name, tag) {
if (tag === undefined) {
tag = window;
}
var element = this.getTestElement(tag),
eventName = 'on' + name.toLowerCase(),
isSupported = (eventName in element);
if (!isSupported) {
if (element.setAttribute && element.removeAttribute) {
element.setAttribute(eventName, '');
isSupported = typeof element[eventName] === 'function';
if (typeof element[eventName] !== 'undefined') {
element[eventName] = undefined;
}
element.removeAttribute(eventName);
}
}
return isSupported;
},
getStyle: function(element, styleName) {
var view = element.ownerDocument.defaultView,
style = (view ? view.getComputedStyle(element, null) : element.currentStyle);
return (style || element.style)[styleName];
},
getSupportedPropertyName: function(object, name) {
var vendorName = Ext.browser.getVendorProperyName(name);
if (vendorName in object) {
return vendorName;
} else if (name in object) {
return name;
}
return null;
},
detect: function(isReady) {
var me = this,
doc = document,
toRun = me.toRun || me.tests,
n = toRun.length,
div = doc.createElement('div'),
notRun = [],
supports = Ext.supports,
has = me.has,
name, test, vector, value;
if (!Ext.theme) {
Ext.theme = {
name: 'Default'
};
}
Ext.theme.is = {};
Ext.theme.is[Ext.theme.name] = true;
div.innerHTML = '<div style="height:30px;width:50px;">' + '<div style="height:20px;width:20px;"></div>' + '</div>' + '<div style="width: 200px; height: 200px; position: relative; padding: 5px;">' + '<div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></div>' + '</div>' + '<div style="position: absolute; left: 10%; top: 10%;"></div>' + '<div style="float:left; background-color:transparent;"></div>';
if (isReady) {
doc.body.appendChild(div);
}
vector = me.preDetected[Ext.browser.identity] || [];
while (n--) {
test = toRun[n];
value = vector[n];
name = test.name;
if (value === undefined) {
if (!isReady && test.ready) {
notRun.push(test);
continue;
}
value = test.fn.call(me, doc, div);
}
supports[name] = has[name] = value;
}
if (isReady) {
doc.body.removeChild(div);
}
me.toRun = notRun;
},
report: function() {
var values = [],
len = this.tests.length,
i;
for (i = 0; i < len; ++i) {
values.push(this.has[this.tests[i].name] ? 1 : 0);
}
Ext.log(Ext.browser.identity + ': [' + values.join(',') + ']');
},
preDetected: {},
tests: [
{
name: 'CSSPointerEvents',
fn: function(doc) {
return 'pointerEvents' in doc.documentElement.style;
}
},
{
name: 'CSS3BoxShadow',
fn: function(doc) {
return 'boxShadow' in doc.documentElement.style || 'WebkitBoxShadow' in doc.documentElement.style || 'MozBoxShadow' in doc.documentElement.style;
}
},
{
name: 'ClassList',
fn: function(doc) {
return !!doc.documentElement.classList;
}
},
{
name: 'Canvas',
fn: function() {
var element = this.getTestElement('canvas');
return !!(element && element.getContext && element.getContext('2d'));
}
},
{
name: 'Svg',
fn: function(doc) {
return !!(doc.createElementNS && !!doc.createElementNS("http:/" + "/www.w3.org/2000/svg", "svg").createSVGRect);
}
},
{
name: 'Vml',
fn: function() {
var element = this.getTestElement(),
ret = false;
element.innerHTML = "<!--[if vml]><br><![endif]-->";
ret = (element.childNodes.length === 1);
element.innerHTML = "";
return ret;
}
},
{
name: 'touchScroll',
fn: function() {
var supports = Ext.supports,
touchScroll = 0;
if (navigator.msMaxTouchPoints || (Ext.isWebKit && supports.TouchEvents && Ext.os.is.Desktop)) {
touchScroll = 1;
} else if (supports.Touch) {
touchScroll = 2;
}
return touchScroll;
}
},
{
name: 'Touch',
fn: function() {
var maxTouchPoints = navigator.msMaxTouchPoints || navigator.maxTouchPoints;
return (Ext.supports.TouchEvents && maxTouchPoints !== 1) || maxTouchPoints > 1;
}
},
{
name: 'TouchEvents',
fn: function() {
return this.isEventSupported('touchend');
}
},
{
name: 'PointerEvents',
fn: function() {
return navigator.pointerEnabled;
}
},
{
name: 'MSPointerEvents',
fn: function() {
return navigator.msPointerEnabled;
}
},
{
name: 'Orientation',
fn: function() {
return ('orientation' in window) && this.isEventSupported('orientationchange');
}
},
{
name: 'OrientationChange',
fn: function() {
return this.isEventSupported('orientationchange');
}
},
{
name: 'DeviceMotion',
fn: function() {
return this.isEventSupported('devicemotion');
}
},
{
names: [
'Geolocation',
'GeoLocation'
],
fn: function() {
return 'geolocation' in window.navigator;
}
},
{
name: 'SqlDatabase',
fn: function() {
return 'openDatabase' in window;
}
},
{
name: 'WebSockets',
fn: function() {
return 'WebSocket' in window;
}
},
{
name: 'Range',
fn: function() {
return !!document.createRange;
}
},
{
name: 'CreateContextualFragment',
fn: function() {
var range = !!document.createRange ? document.createRange() : false;
return range && !!range.createContextualFragment;
}
},
{
name: 'History',
fn: function() {
return ('history' in window && 'pushState' in window.history);
}
},
{
name: 'CssTransforms',
fn: function() {
return this.isStyleSupported('transform');
}
},
{
name: 'CssTransformNoPrefix',
fn: function() {
return this.isStyleSupportedWithoutPrefix('transform');
}
},
{
name: 'Css3dTransforms',
fn: function() {
return this.has('CssTransforms') && this.isStyleSupported('perspective') && !Ext.browser.is.AndroidStock2;
}
},
{
name: 'CssAnimations',
fn: function() {
return this.isStyleSupported('animationName');
}
},
{
names: [
'CssTransitions',
'Transitions'
],
fn: function() {
return this.isStyleSupported('transitionProperty');
}
},
{
names: [
'Audio',
'AudioTag'
],
fn: function() {
return !!this.getTestElement('audio').canPlayType;
}
},
{
name: 'Video',
fn: function() {
return !!this.getTestElement('video').canPlayType;
}
},
{
name: 'LocalStorage',
fn: function() {
try {
if ('localStorage' in window && window['localStorage'] !== null) {
localStorage.setItem('sencha-localstorage-test', 'test success');
localStorage.removeItem('sencha-localstorage-test');
return true;
}
} catch (e) {}
return false;
}
},
{
name: 'XHR2',
fn: function() {
return window.ProgressEvent && window.FormData && window.XMLHttpRequest && ('withCredentials' in new XMLHttpRequest());
}
},
{
name: 'XHRUploadProgress',
fn: function() {
if (window.XMLHttpRequest && !Ext.browser.is.AndroidStock) {
var xhr = new XMLHttpRequest();
return xhr && ('upload' in xhr) && ('onprogress' in xhr.upload);
}
return false;
}
},
{
name: 'NumericInputPlaceHolder',
fn: function() {
return !(Ext.browser.is.AndroidStock4 && Ext.os.version.getMinor() < 2);
}
},
{
name: 'ProperHBoxStretching',
ready: true,
fn: function() {
var bodyElement = document.createElement('div'),
innerElement = bodyElement.appendChild(document.createElement('div')),
contentElement = innerElement.appendChild(document.createElement('div')),
innerWidth;
bodyElement.setAttribute('style', 'width: 100px; height: 100px; position: relative;');
innerElement.setAttribute('style', 'position: absolute; display: -ms-flexbox; display: -webkit-flex; display: -moz-flexbox; display: flex; -ms-flex-direction: row; -webkit-flex-direction: row; -moz-flex-direction: row; flex-direction: row; min-width: 100%;');
contentElement.setAttribute('style', 'width: 200px; height: 50px;');
document.body.appendChild(bodyElement);
innerWidth = innerElement.offsetWidth;
document.body.removeChild(bodyElement);
return (innerWidth > 100);
}
},
{
name: 'matchesSelector',
fn: function() {
var el = document.documentElement,
w3 = 'matches',
wk = 'webkitMatchesSelector',
ms = 'msMatchesSelector',
mz = 'mozMatchesSelector';
return el[w3] ? w3 : el[wk] ? wk : el[ms] ? ms : el[mz] ? mz : null;
}
},
{
name: 'RightMargin',
ready: true,
fn: function(doc, div) {
var view = doc.defaultView;
return !(view && view.getComputedStyle(div.firstChild.firstChild, null).marginRight !== '0px');
}
},
{
name: 'DisplayChangeInputSelectionBug',
fn: function() {
var webKitVersion = Ext.webKitVersion;
return 0 < webKitVersion && webKitVersion < 533;
}
},
{
name: 'DisplayChangeTextAreaSelectionBug',
fn: function() {
var webKitVersion = Ext.webKitVersion;
return 0 < webKitVersion && webKitVersion < 534.24;
}
},
{
name: 'TransparentColor',
ready: true,
fn: function(doc, div, view) {
view = doc.defaultView;
return !(view && view.getComputedStyle(div.lastChild, null).backgroundColor !== 'transparent');
}
},
{
name: 'ComputedStyle',
ready: true,
fn: function(doc, div, view) {
view = doc.defaultView;
return view && view.getComputedStyle;
}
},
{
name: 'Float',
fn: function(doc) {
return 'cssFloat' in doc.documentElement.style;
}
},
{
name: 'CSS3BorderRadius',
ready: true,
fn: function(doc) {
var domPrefixes = [
'borderRadius',
'BorderRadius',
'MozBorderRadius',
'WebkitBorderRadius',
'OBorderRadius',
'KhtmlBorderRadius'
],
pass = false,
i;
for (i = 0; i < domPrefixes.length; i++) {
if (doc.documentElement.style[domPrefixes[i]] !== undefined) {
pass = true;
}
}
return pass && !Ext.isIE9;
}
},
{
name: 'CSS3LinearGradient',
fn: function(doc, div) {
var property = 'background-image:',
webkit = '-webkit-gradient(linear, left top, right bottom, from(black), to(white))',
w3c = 'linear-gradient(left top, black, white)',
moz = '-moz-' + w3c,
ms = '-ms-' + w3c,
opera = '-o-' + w3c,
options = [
property + webkit,
property + w3c,
property + moz,
property + ms,
property + opera
];
div.style.cssText = options.join(';');
return (("" + div.style.backgroundImage).indexOf('gradient') !== -1) && !Ext.isIE9;
}
},
{
name: 'MouseEnterLeave',
fn: function(doc) {
return ('onmouseenter' in doc.documentElement && 'onmouseleave' in doc.documentElement);
}
},
{
name: 'MouseWheel',
fn: function(doc) {
return ('onmousewheel' in doc.documentElement);
}
},
{
name: 'Opacity',
fn: function(doc, div) {
if (Ext.isIE8) {
return false;
}
div.firstChild.style.cssText = 'opacity:0.73';
return div.firstChild.style.opacity == '0.73';
}
},
{
name: 'Placeholder',
fn: function(doc) {
return 'placeholder' in doc.createElement('input');
}
},
{
name: 'Direct2DBug',
fn: function(doc) {
return Ext.isString(doc.documentElement.style.msTransformOrigin) && Ext.isIE9m;
}
},
{
name: 'BoundingClientRect',
fn: function(doc) {
return 'getBoundingClientRect' in doc.documentElement;
}
},
{
name: 'RotatedBoundingClientRect',
ready: true,
fn: function(doc) {
var body = doc.body,
supports = false,
el = this.getTestElement(),
style = el.style;
if (el.getBoundingClientRect) {
style.WebkitTransform = style.MozTransform = style.msTransform = style.OTransform = style.transform = 'rotate(90deg)';
style.width = '100px';
style.height = '30px';
body.appendChild(el);
supports = el.getBoundingClientRect().height !== 100;
body.removeChild(el);
}
return supports;
}
},
{
name: 'ChildContentClearedWhenSettingInnerHTML',
ready: true,
fn: function() {
var el = this.getTestElement(),
child;
el.innerHTML = '<div>a</div>';
child = el.firstChild;
el.innerHTML = '<div>b</div>';
return child.innerHTML !== 'a';
}
},
{
name: 'IncludePaddingInWidthCalculation',
ready: true,
fn: function(doc, div) {
return div.childNodes[1].firstChild.offsetWidth === 210;
}
},
{
name: 'IncludePaddingInHeightCalculation',
ready: true,
fn: function(doc, div) {
return div.childNodes[1].firstChild.offsetHeight === 210;
}
},
{
name: 'TextAreaMaxLength',
fn: function(doc) {
return ('maxlength' in doc.createElement('textarea'));
}
},
{
name: 'GetPositionPercentage',
ready: true,
fn: function(doc, div) {
return Ext.feature.getStyle(div.childNodes[2], 'left') === '10%';
}
},
{
name: 'PercentageHeightOverflowBug',
ready: true,
fn: function(doc) {
var hasBug = false,
style, el;
if (Ext.getScrollbarSize().height) {
el = this.getTestElement();
style = el.style;
style.height = '50px';
style.width = '50px';
style.overflow = 'auto';
style.position = 'absolute';
el.innerHTML = [
'<div style="display:table;height:100%;">',
'<div style="width:51px;"></div>',
'</div>'
].join('');
doc.body.appendChild(el);
if (el.firstChild.offsetHeight === 50) {
hasBug = true;
}
doc.body.removeChild(el);
}
return hasBug;
}
},
{
name: 'xOriginBug',
ready: true,
fn: function(doc, div) {
div.innerHTML = '<div id="b1" style="height:100px;width:100px;direction:rtl;position:relative;overflow:scroll">' + '<div id="b2" style="position:relative;width:100%;height:20px;"></div>' + '<div id="b3" style="position:absolute;width:20px;height:20px;top:0px;right:0px"></div>' + '</div>';
var outerBox = document.getElementById('b1').getBoundingClientRect(),
b2 = document.getElementById('b2').getBoundingClientRect(),
b3 = document.getElementById('b3').getBoundingClientRect();
return (b2.left !== outerBox.left && b3.right !== outerBox.right);
}
},
{
name: 'ScrollWidthInlinePaddingBug',
ready: true,
fn: function(doc) {
var hasBug = false,
style, el;
el = doc.createElement('div');
style = el.style;
style.height = '50px';
style.width = '50px';
style.padding = '10px';
style.overflow = 'hidden';
style.position = 'absolute';
el.innerHTML = '<span style="display:inline-block;zoom:1;height:60px;width:60px;"></span>';
doc.body.appendChild(el);
if (el.scrollWidth === 70) {
hasBug = true;
}
doc.body.removeChild(el);
return hasBug;
}
},
{
name: 'rtlVertScrollbarOnRight',
ready: true,
fn: function(doc, div) {
div.innerHTML = '<div style="height:100px;width:100px;direction:rtl;overflow:scroll">' + '<div style="width:20px;height:200px;"></div>' + '</div>';
var outerBox = div.firstChild,
innerBox = outerBox.firstChild;
return (innerBox.offsetLeft + innerBox.offsetWidth !== outerBox.offsetLeft + outerBox.offsetWidth);
}
},
{
name: 'rtlVertScrollbarOverflowBug',
ready: true,
fn: function(doc, div) {
div.innerHTML = '<div style="height:100px;width:100px;direction:rtl;overflow:auto">' + '<div style="width:95px;height:200px;"></div>' + '</div>';
var outerBox = div.firstChild;
return outerBox.clientHeight === outerBox.offsetHeight;
}
},
{
identity: 'defineProperty',
fn: function() {
if (Ext.isIE8m) {
Ext.Object.defineProperty = Ext.emptyFn;
return false;
}
return true;
}
},
{
identify: 'nativeXhr',
fn: function() {
if (typeof XMLHttpRequest !== 'undefined') {
return true;
}
XMLHttpRequest = function() {
try {
return new ActiveXObject('MSXML2.XMLHTTP.3.0');
}
catch (ex) {
return null;
}
};
return false;
}
},
{
name: 'SpecialKeyDownRepeat',
fn: function() {
return Ext.isWebKit ? parseInt(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1], 10) >= 525 : !((Ext.isGecko && !Ext.isWindows) || (Ext.isOpera && Ext.operaVersion < 12));
}
},
{
name: 'EmulatedMouseOver',
fn: function() {
return Ext.os.is.iOS;
}
},
{
name: 'Hashchange',
fn: function() {
var docMode = document.documentMode;
return 'onhashchange' in window && (docMode === undefined || docMode > 7);
}
},
{
name: 'FixedTableWidthBug',
ready: true,
fn: function() {
if (Ext.isIE8) {
return false;
}
var outer = document.createElement('div'),
inner = document.createElement('div'),
width;
outer.setAttribute('style', 'display:table;table-layout:fixed;');
inner.setAttribute('style', 'display:table-cell;min-width:50px;');
outer.appendChild(inner);
document.body.appendChild(outer);
outer.offsetWidth;
outer.style.width = '25px';
width = outer.offsetWidth;
document.body.removeChild(outer);
return width === 50;
}
},
{
name: 'FocusinFocusoutEvents',
fn: function() {
return !Ext.isGecko;
}
},
0
]
};
Ext.feature.tests.pop();
Ext.supports = {};
Ext.feature.detect();
Ext.env.Ready = {
blocks: (location.search || '').indexOf('ext-pauseReadyFire') > 0 ? 1 : 0,
bound: 0,
delay: 1,
events: [],
firing: false,
generation: 0,
listeners: [],
nextId: 0,
sortGeneration: 0,
state: 0,
timer: null,
bind: function() {
var me = Ext.env.Ready,
doc = document;
if (!me.bound) {
if (doc.readyState === 'complete') {
me.onReadyEvent({
type: doc.readyState || 'body'
});
} else {
me.bound = 1;
if (Ext.browser.is.PhoneGap && !Ext.os.is.Desktop) {
me.bound = 2;
doc.addEventListener('deviceready', me.onReadyEvent, false);
}
doc.addEventListener('DOMContentLoaded', me.onReadyEvent, false);
window.addEventListener('load', me.onReadyEvent, false);
}
}
},
block: function() {
++this.blocks;
Ext.isReady = false;
},
fireReady: function() {
var me = Ext.env.Ready;
if (!me.state) {
Ext._readyTime = Ext.now();
Ext.isDomReady = true;
me.state = 1;
Ext.feature.detect(true);
if (!me.delay) {
me.handleReady();
} else if (navigator.standalone) {
me.timer = Ext.defer(function() {
me.timer = null;
me.handleReadySoon();
}, 1);
} else {
me.handleReadySoon();
}
}
},
handleReady: function() {
var me = this;
if (me.state === 1) {
me.state = 2;
Ext._beforeReadyTime = Ext.now();
me.invokeAll();
Ext._afterReadytime = Ext.now();
}
},
handleReadySoon: function(delay) {
var me = this;
if (!me.timer) {
me.timer = Ext.defer(function() {
me.timer = null;
me.handleReady();
}, delay || me.delay);
}
},
invoke: function(listener) {
var delay = listener.delay;
if (delay) {
Ext.defer(listener.fn, delay, listener.scope);
} else {
if (Ext.elevateFunction) {
Ext.elevateFunction(listener.fn, listener.scope);
} else {
listener.fn.call(listener.scope);
}
}
},
invokeAll: function() {
if (Ext.elevateFunction) {
Ext.elevateFunction(this.doInvokeAll, this);
} else {
this.doInvokeAll();
}
},
doInvokeAll: function() {
var me = this,
listeners = me.listeners,
listener;
if (!me.blocks) {
Ext.isReady = true;
}
me.firing = true;
while (listeners.length) {
if (me.sortGeneration !== me.generation) {
me.sortGeneration = me.generation;
listeners.sort(me.sortFn);
}
listener = listeners.pop();
if (me.blocks && !listener.dom) {
listeners.push(listener);
break;
}
me.invoke(listener);
}
me.firing = false;
},
makeListener: function(fn, scope, options) {
var ret = {
fn: fn,
id: ++this.nextId,
scope: scope,
dom: false,
priority: 0
};
if (options) {
Ext.apply(ret, options);
}
ret.phase = ret.dom ? 0 : 1;
return ret;
},
on: function(fn, scope, options) {
var me = Ext.env.Ready,
listener = me.makeListener(fn, scope, options);
if (me.state === 2 && !me.firing && (listener.dom || !me.blocks)) {
me.invoke(listener);
} else {
me.listeners.push(listener);
++me.generation;
if (!me.bound) {
me.bind();
}
}
},
onReadyEvent: function(ev) {
var me = Ext.env.Ready;
if (Ext.elevateFunction) {
Ext.elevateFunction(me.doReadyEvent, me, arguments);
} else {
me.doReadyEvent(ev);
}
},
doReadyEvent: function(ev) {
var me = this;
if (ev && ev.type) {
me.events.push(ev);
}
if (me.bound > 0) {
me.unbind();
me.bound = -1;
}
if (!me.state) {
me.fireReady();
}
},
sortFn: function(a, b) {
return -((a.phase - b.phase) || (b.priority - a.priority) || (a.id - b.id));
},
unblock: function() {
var me = this;
if (me.blocks) {
if (!--me.blocks) {
if (me.state === 2 && !me.firing) {
me.invokeAll();
}
}
}
},
unbind: function() {
var me = this,
doc = document;
if (me.bound > 1) {
doc.removeEventListener('deviceready', me.onReadyEvent, false);
}
doc.removeEventListener('DOMContentLoaded', me.onReadyEvent, false);
window.removeEventListener('load', me.onReadyEvent, false);
}
};
(function() {
var Ready = Ext.env.Ready;
if (Ext.isIE9m) {
Ext.apply(Ready, {
scrollTimer: null,
readyStatesRe: /complete/i,
pollScroll: function() {
var scrollable = true;
try {
document.documentElement.doScroll('left');
} catch (e) {
scrollable = false;
}
if (scrollable && document.body) {
Ready.onReadyEvent({
type: 'doScroll'
});
} else {
Ready.scrollTimer = Ext.defer(Ready.pollScroll, 20);
}
return scrollable;
},
bind: function() {
if (Ready.bound) {
return;
}
var doc = document,
topContext;
try {
topContext = window.frameElement === undefined;
} catch (e) {}
if (!topContext || !doc.documentElement.doScroll) {
Ready.pollScroll = Ext.emptyFn;
}
else if (Ready.pollScroll()) {
return;
}
if (doc.readyState === 'complete') {
Ready.onReadyEvent({
type: 'already ' + (doc.readyState || 'body')
});
} else {
doc.attachEvent('onreadystatechange', Ready.onReadyStateChange);
window.attachEvent('onload', Ready.onReadyEvent);
Ready.bound = 1;
}
},
unbind: function() {
document.detachEvent('onreadystatechange', Ready.onReadyStateChange);
window.detachEvent('onload', Ready.onReadyEvent);
if (Ext.isNumber(Ready.scrollTimer)) {
clearTimeout(Ready.scrollTimer);
Ready.scrollTimer = null;
}
},
onReadyStateChange: function() {
var state = document.readyState;
if (Ready.readyStatesRe.test(state)) {
Ready.onReadyEvent({
type: state
});
}
}
});
}
Ext.onDocumentReady = function(fn, scope, options) {
var opt = {
dom: true
};
if (options) {
Ext.apply(opt, options);
}
Ready.on(fn, scope, opt);
};
Ext.onReady = function(fn, scope, options) {
Ready.on(fn, scope, options);
};
Ext.onInternalReady = function(fn, scope, options) {
Ready.on(fn, scope, Ext.apply({
priority: 1000
}, options));
};
Ready.bind();
}());
Ext.Loader = (new function() {
var Loader = this,
Manager = Ext.ClassManager,
Boot = Ext.Boot,
Class = Ext.Class,
Ready = Ext.env.Ready,
alias = Ext.Function.alias,
dependencyProperties = [
'extend',
'mixins',
'requires'
],
isInHistory = {},
history = [],
readyListeners = [],
usedClasses = [],
_requiresMap = {},
_missingQueue = {},
_config = {
enabled: true,
scriptChainDelay: false,
disableCaching: true,
disableCachingParam: '_dc',
paths: Manager.paths,
preserveScripts: true,
scriptCharset: undefined
},
delegatedConfigs = {
disableCaching: true,
disableCachingParam: true,
preserveScripts: true,
scriptChainDelay: 'loadDelay'
};
Ext.apply(Loader, {
isInHistory: isInHistory,
isLoading: false,
history: history,
config: _config,
readyListeners: readyListeners,
optionalRequires: usedClasses,
requiresMap: _requiresMap,
hasFileLoadError: false,
scriptsLoading: 0,
classesLoading: [],
syncModeEnabled: false,
missingQueue: _missingQueue,
init: function() {
var scripts = document.getElementsByTagName('script'),
src = scripts[scripts.length - 1].src,
path = src.substring(0, src.lastIndexOf('/') + 1),
meta = Ext._classPathMetadata,
microloader = Ext.Microloader,
manifest = Ext.manifest,
loadOrder, baseUrl, loadlen, l, loadItem;
if (src.indexOf("packages/sencha-core/src/") !== -1) {
path = path + "../../";
} else if (src.indexOf("/core/src/class/") !== -1) {
path = path + "../../../";
}
if (!Manager.getPath("Ext")) {
Manager.setPath('Ext', path + 'src');
}
if (meta) {
Ext._classPathMetadata = null;
Loader.addClassPathMappings(meta);
}
if (manifest) {
loadOrder = manifest.loadOrder;
baseUrl = Ext.Boot.baseUrl;
if (loadOrder && manifest.bootRelative) {
for (loadlen = loadOrder.length , l = 0; l < loadlen; l++) {
loadItem = loadOrder[l];
loadItem.path = baseUrl + loadItem.path;
}
}
}
if (microloader) {
Ready.block();
microloader.onMicroloaderReady(function() {
Ready.unblock();
});
}
},
setConfig: Ext.Function.flexSetter(function(name, value) {
if (name === 'paths') {
Loader.setPath(value);
} else {
_config[name] = value;
var delegated = delegatedConfigs[name];
if (delegated) {
Boot.setConfig((delegated === true) ? name : delegated, value);
}
}
return Loader;
}),
getConfig: function(name) {
return name ? _config[name] : _config;
},
setPath: function() {
Manager.setPath.apply(Manager, arguments);
return Loader;
},
addClassPathMappings: function(paths) {
Manager.setPath(paths);
return Loader;
},
addBaseUrlClassPathMappings: function(pathConfig) {
for (var name in pathConfig) {
pathConfig[name] = Boot.baseUrl + pathConfig[name];
}
Ext.Loader.addClassPathMappings(pathConfig);
},
getPath: function(className) {
return Manager.getPath(className);
},
require: function(expressions, fn, scope, excludes) {
if (excludes) {
return Loader.exclude(excludes).require(expressions, fn, scope);
}
var classNames = Manager.getNamesByExpression(expressions);
return Loader.load(classNames, fn, scope);
},
syncRequire: function() {
var wasEnabled = Loader.syncModeEnabled;
Loader.syncModeEnabled = true;
var ret = Loader.require.apply(Loader, arguments);
Loader.syncModeEnabled = wasEnabled;
return ret;
},
exclude: function(excludes) {
var selector = Manager.select({
require: function(classNames, fn, scope) {
return Loader.load(classNames, fn, scope);
},
syncRequire: function(classNames, fn, scope) {
var wasEnabled = Loader.syncModeEnabled;
Loader.syncModeEnabled = true;
var ret = Loader.load(classNames, fn, scope);
Loader.syncModeEnabled = wasEnabled;
return ret;
}
});
selector.exclude(excludes);
return selector;
},
load: function(classNames, callback, scope) {
if (callback) {
if (callback.length) {
callback = Loader.makeLoadCallback(classNames, callback);
}
callback = callback.bind(scope || Ext.global);
}
var missingClassNames = [],
numClasses = classNames.length,
className, i, numMissing,
urls = [],
state = Manager.classState;
for (i = 0; i < numClasses; ++i) {
className = Manager.resolveName(classNames[i]);
if (!Manager.isCreated(className)) {
missingClassNames.push(className);
_missingQueue[className] = Loader.getPath(className);
if (!state[className]) {
urls.push(_missingQueue[className]);
}
}
}
numMissing = missingClassNames.length;
if (numMissing) {
Loader.missingCount += numMissing;
Ext.Array.push(Loader.classesLoading, missingClassNames);
Manager.onCreated(function() {
Ext.Array.remove(Loader.classesLoading, missingClassNames);
Ext.each(missingClassNames, function(name) {
Ext.Array.remove(Loader.classesLoading, name);
});
if (callback) {
Ext.callback(callback, scope, arguments);
}
Loader.checkReady();
}, Loader, missingClassNames);
if (!_config.enabled) {
Ext.Error.raise("Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. " + "Missing required class" + ((missingClassNames.length > 1) ? "es" : "") + ": " + missingClassNames.join(', '));
}
if (urls.length) {
Loader.loadScripts({
url: urls,
_classNames: missingClassNames
});
} else {
Loader.checkReady();
}
} else {
if (callback) {
callback.call(scope);
}
Loader.checkReady();
}
if (Loader.syncModeEnabled) {
if (numClasses === 1) {
return Manager.get(classNames[0]);
}
}
return Loader;
},
makeLoadCallback: function(classNames, callback) {
return function() {
var classes = [],
i = classNames.length;
while (i-- > 0) {
classes[i] = Manager.get(classNames[i]);
}
return callback.apply(this, classes);
};
},
onLoadFailure: function() {
var options = this,
onError = options.onError;
Loader.hasFileLoadError = true;
--Loader.scriptsLoading;
if (onError) {
onError.call(options.userScope, options);
} else {
Ext.log.error("[Ext.Loader] Some requested files failed to load.");
}
Loader.checkReady();
},
onLoadSuccess: function() {
var options = this,
onLoad = options.onLoad;
--Loader.scriptsLoading;
if (onLoad) {
onLoad.call(options.userScope, options);
}
Loader.checkReady();
},
reportMissingClasses: function() {
if (!Loader.syncModeEnabled && !Loader.scriptsLoading && Loader.isLoading && !Loader.hasFileLoadError) {
var missingClasses = [],
missingPaths = [];
for (var missingClassName in _missingQueue) {
missingClasses.push(missingClassName);
missingPaths.push(_missingQueue[missingClassName]);
}
if (missingClasses.length) {
throw new Error("The following classes are not declared even if their files have been " + "loaded: '" + missingClasses.join("', '") + "'. Please check the source code of their " + "corresponding files for possible typos: '" + missingPaths.join("', '"));
}
}
},
onReady: function(fn, scope, withDomReady, options) {
if (withDomReady) {
Ready.on(fn, scope, options);
} else {
var listener = Ready.makeListener(fn, scope, options);
if (Loader.isLoading) {
readyListeners.push(listener);
} else {
Ready.invoke(listener);
}
}
},
addUsedClasses: function(classes) {
var cls, i, ln;
if (classes) {
classes = (typeof classes === 'string') ? [
classes
] : classes;
for (i = 0 , ln = classes.length; i < ln; i++) {
cls = classes[i];
if (typeof cls === 'string' && !Ext.Array.contains(usedClasses, cls)) {
usedClasses.push(cls);
}
}
}
return Loader;
},
triggerReady: function() {
var listener,
refClasses = usedClasses;
if (Loader.isLoading && refClasses.length) {
usedClasses = [];
Loader.require(refClasses);
} else {
Loader.isLoading = false;
readyListeners.sort(Ready.sortFn);
while (readyListeners.length && !Loader.isLoading) {
listener = readyListeners.pop();
Ready.invoke(listener);
}
Ready.unblock();
}
},
historyPush: function(className) {
if (className && !isInHistory[className] && !Manager.overrideMap[className]) {
isInHistory[className] = true;
history.push(className);
}
return Loader;
},
loadScripts: function(params) {
var manifest = Ext.manifest,
loadOrder = manifest && manifest.loadOrder,
loadOrderMap = manifest && manifest.loadOrderMap,
options;
++Loader.scriptsLoading;
if (loadOrder && !loadOrderMap) {
manifest.loadOrderMap = loadOrderMap = Boot.createLoadOrderMap(loadOrder);
}
Loader.checkReady();
options = Ext.apply({
loadOrder: loadOrder,
loadOrderMap: loadOrderMap,
charset: _config.scriptCharset,
success: Loader.onLoadSuccess,
failure: Loader.onLoadFailure,
sync: Loader.syncModeEnabled,
_classNames: []
}, params);
options.userScope = options.scope;
options.scope = options;
Boot.load(options);
},
loadScriptsSync: function(urls) {
var syncwas = Loader.syncModeEnabled;
Loader.syncModeEnabled = true;
Loader.loadScripts({
url: urls
});
Loader.syncModeEnabled = syncwas;
},
loadScriptsSyncBasePrefix: function(urls) {
var syncwas = Loader.syncModeEnabled;
Loader.syncModeEnabled = true;
Loader.loadScripts({
url: urls,
prependBaseUrl: true
});
Loader.syncModeEnabled = syncwas;
},
loadScript: function(options) {
var isString = typeof options === 'string',
isArray = options instanceof Array,
isObject = !isArray && !isString,
url = isObject ? options.url : options,
onError = isObject && options.onError,
onLoad = isObject && options.onLoad,
scope = isObject && options.scope,
request = {
url: url,
scope: scope,
onLoad: onLoad,
onError: onError,
_classNames: []
};
Loader.loadScripts(request);
},
flushMissingQueue: function() {
var name, val,
missingwas = 0,
missing = 0;
for (name in _missingQueue) {
missingwas++;
val = _missingQueue[name];
if (Manager.isCreated(name)) {
delete _missingQueue[name];
} else if (Manager.existCache[name] === 2) {
delete _missingQueue[name];
} else {
++missing;
}
}
this.missingCount = missing;
},
checkReady: function() {
var wasLoading = Loader.isLoading,
isLoading;
Loader.flushMissingQueue();
isLoading = Loader.missingCount + Loader.scriptsLoading;
if (isLoading && !wasLoading) {
Ready.block();
Loader.isLoading = !!isLoading;
} else if (!isLoading && wasLoading) {
Loader.triggerReady();
}
}
});
Ext.require = alias(Loader, 'require');
Ext.syncRequire = alias(Loader, 'syncRequire');
Ext.exclude = alias(Loader, 'exclude');
Class.registerPreprocessor('loader', function(cls, data, hooks, continueFn) {
Ext.classSystemMonitor && Ext.classSystemMonitor(cls, 'Ext.Loader#loaderPreprocessor', arguments);
var me = this,
dependencies = [],
dependency,
className = Manager.getName(cls),
i, j, ln, subLn, value, propertyName, propertyValue, requiredMap;
for (i = 0 , ln = dependencyProperties.length; i < ln; i++) {
propertyName = dependencyProperties[i];
if (data.hasOwnProperty(propertyName)) {
propertyValue = data[propertyName];
if (typeof propertyValue === 'string') {
dependencies.push(propertyValue);
} else if (propertyValue instanceof Array) {
for (j = 0 , subLn = propertyValue.length; j < subLn; j++) {
value = propertyValue[j];
if (typeof value === 'string') {
dependencies.push(value);
}
}
} else if (typeof propertyValue !== 'function') {
for (j in propertyValue) {
if (propertyValue.hasOwnProperty(j)) {
value = propertyValue[j];
if (typeof value === 'string') {
dependencies.push(value);
}
}
}
}
}
}
if (dependencies.length === 0) {
return;
}
if (className) {
_requiresMap[className] = dependencies;
}
var deadlockPath = [],
detectDeadlock;
if (className) {
requiredMap = Loader.requiredByMap || (Loader.requiredByMap = {});
for (i = 0 , ln = dependencies.length; i < ln; i++) {
dependency = dependencies[i];
(requiredMap[dependency] || (requiredMap[dependency] = [])).push(className);
}
detectDeadlock = function(cls) {
deadlockPath.push(cls);
if (_requiresMap[cls]) {
if (Ext.Array.contains(_requiresMap[cls], className)) {
Ext.Error.raise("Circular requirement detected! '" + className + "' and '" + deadlockPath[1] + "' mutually require each other. Path: " + deadlockPath.join(' -> ') + " -> " + deadlockPath[0]);
}
for (i = 0 , ln = _requiresMap[cls].length; i < ln; i++) {
detectDeadlock(_requiresMap[cls][i]);
}
}
};
detectDeadlock(className);
}
(className ? Loader.exclude(className) : Loader).require(dependencies, function() {
for (i = 0 , ln = dependencyProperties.length; i < ln; i++) {
propertyName = dependencyProperties[i];
if (data.hasOwnProperty(propertyName)) {
propertyValue = data[propertyName];
if (typeof propertyValue === 'string') {
data[propertyName] = Manager.get(propertyValue);
} else if (propertyValue instanceof Array) {
for (j = 0 , subLn = propertyValue.length; j < subLn; j++) {
value = propertyValue[j];
if (typeof value === 'string') {
data[propertyName][j] = Manager.get(value);
}
}
} else if (typeof propertyValue !== 'function') {
for (var k in propertyValue) {
if (propertyValue.hasOwnProperty(k)) {
value = propertyValue[k];
if (typeof value === 'string') {
data[propertyName][k] = Manager.get(value);
}
}
}
}
}
}
continueFn.call(me, cls, data, hooks);
});
return false;
}, true, 'after', 'className');
Manager.registerPostprocessor('uses', function(name, cls, data) {
Ext.classSystemMonitor && Ext.classSystemMonitor(cls, 'Ext.Loader#usesPostprocessor', arguments);
var manifest = Ext.manifest,
loadOrder = manifest && manifest.loadOrder,
classes = manifest && manifest.classes,
uses, clazz, item, len, i, indexMap;
if (loadOrder) {
clazz = classes[name];
if (clazz && !isNaN(i = clazz.idx)) {
item = loadOrder[i];
uses = item.uses;
indexMap = {};
for (len = uses.length , i = 0; i < len; i++) {
indexMap[uses[i]] = true;
}
uses = Ext.Boot.getPathsFromIndexes(indexMap, loadOrder, true);
if (uses.length > 0) {
Loader.loadScripts({
url: uses,
sequential: true
});
}
}
}
if (data.uses) {
uses = data.uses;
Loader.addUsedClasses(uses);
}
});
Manager.onCreated(Loader.historyPush);
Loader.init();
}());
Ext._endTime = new Date().getTime();
if (Ext._beforereadyhandler) {
Ext._beforereadyhandler();
}
Ext.define('Ext.overrides.util.Positionable', {
override: 'Ext.util.Positionable',
anchorTo: function(anchorToEl, alignment, offsets, animate, monitorScroll, callback) {
var me = this,
scroll = !Ext.isEmpty(monitorScroll),
action = function() {
me.alignTo(anchorToEl, alignment, offsets, animate);
Ext.callback(callback, me);
},
anchor = me.getAnchor();
me.removeAnchor();
Ext.apply(anchor, {
fn: action,
scroll: scroll
});
Ext.on('resize', action, null);
if (scroll) {
Ext.getWin().on('scroll', action, null, {
buffer: !isNaN(monitorScroll) ? monitorScroll : 50
});
}
action();
return me;
},
getAnchor: function() {
var el = this.el,
data, anchor;
if (!el.dom) {
return;
}
data = el.getData();
anchor = data._anchor;
if (!anchor) {
anchor = data._anchor = {};
}
return anchor;
},
removeAnchor: function() {
var anchor = this.getAnchor();
if (anchor && anchor.fn) {
Ext.un('resize', anchor.fn);
if (anchor.scroll) {
Ext.getWin().on('scroll', anchor.fn);
}
delete anchor.fn;
}
return this;
},
setBox: function(box, animate) {
var me = this;
if (box.isRegion) {
box = {
x: box.left,
y: box.top,
width: box.right - box.left,
height: box.bottom - box.top
};
}
if (animate) {
me.constrainBox(box);
me.animate(Ext.applyIf({
to: box,
listeners: {
afteranimate: Ext.Function.bind(me.afterSetPosition, me, [
box.x,
box.y
])
}
}, animate));
} else {
me.callParent([
box
]);
}
return me;
}
});
Ext.define('Ext.overrides.event.Event', {
override: 'Ext.event.Event',
mousedownEvents: {
mousedown: 1,
pointerdown: 1,
touchstart: 1
},
injectEvent: (function() {
var API,
dispatchers = {},
crazyIEButtons;
if (!Ext.isIE9m && document.createEvent) {
API = {
createHtmlEvent: function(doc, type, bubbles, cancelable) {
var event = doc.createEvent('HTMLEvents');
event.initEvent(type, bubbles, cancelable);
return event;
},
createMouseEvent: function(doc, type, bubbles, cancelable, detail, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget) {
var event = doc.createEvent('MouseEvents'),
view = doc.defaultView || window;
if (event.initMouseEvent) {
event.initMouseEvent(type, bubbles, cancelable, view, detail, clientX, clientY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget);
} else {
event = doc.createEvent('UIEvents');
event.initEvent(type, bubbles, cancelable);
event.view = view;
event.detail = detail;
event.screenX = clientX;
event.screenY = clientY;
event.clientX = clientX;
event.clientY = clientY;
event.ctrlKey = ctrlKey;
event.altKey = altKey;
event.metaKey = metaKey;
event.shiftKey = shiftKey;
event.button = button;
event.relatedTarget = relatedTarget;
}
return event;
},
createUIEvent: function(doc, type, bubbles, cancelable, detail) {
var event = doc.createEvent('UIEvents'),
view = doc.defaultView || window;
event.initUIEvent(type, bubbles, cancelable, view, detail);
return event;
},
fireEvent: function(target, type, event) {
target.dispatchEvent(event);
}
};
} else if (document.createEventObject) {
crazyIEButtons = {
0: 1,
1: 4,
2: 2
};
API = {
createHtmlEvent: function(doc, type, bubbles, cancelable) {
var event = doc.createEventObject();
event.bubbles = bubbles;
event.cancelable = cancelable;
return event;
},
createMouseEvent: function(doc, type, bubbles, cancelable, detail, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget) {
var event = doc.createEventObject();
event.bubbles = bubbles;
event.cancelable = cancelable;
event.detail = detail;
event.screenX = clientX;
event.screenY = clientY;
event.clientX = clientX;
event.clientY = clientY;
event.ctrlKey = ctrlKey;
event.altKey = altKey;
event.shiftKey = shiftKey;
event.metaKey = metaKey;
event.button = crazyIEButtons[button] || button;
event.relatedTarget = relatedTarget;
return event;
},
createUIEvent: function(doc, type, bubbles, cancelable, detail) {
var event = doc.createEventObject();
event.bubbles = bubbles;
event.cancelable = cancelable;
return event;
},
fireEvent: function(target, type, event) {
target.fireEvent('on' + type, event);
}
};
}
Ext.Object.each({
load: [
false,
false
],
unload: [
false,
false
],
select: [
true,
false
],
change: [
true,
false
],
submit: [
true,
true
],
reset: [
true,
false
],
resize: [
true,
false
],
scroll: [
true,
false
]
}, function(name, value) {
var bubbles = value[0],
cancelable = value[1];
dispatchers[name] = function(targetEl, srcEvent) {
var e = API.createHtmlEvent(name, bubbles, cancelable);
API.fireEvent(targetEl, name, e);
};
});
function createMouseEventDispatcher(type, detail) {
var cancelable = (type !== 'mousemove');
return function(targetEl, srcEvent) {
var xy = srcEvent.getXY(),
e = API.createMouseEvent(targetEl.ownerDocument, type, true, cancelable, detail, xy[0], xy[1], srcEvent.ctrlKey, srcEvent.altKey, srcEvent.shiftKey, srcEvent.metaKey, srcEvent.button, srcEvent.relatedTarget);
API.fireEvent(targetEl, type, e);
};
}
Ext.each([
'click',
'dblclick',
'mousedown',
'mouseup',
'mouseover',
'mousemove',
'mouseout'
], function(eventName) {
dispatchers[eventName] = createMouseEventDispatcher(eventName, 1);
});
Ext.Object.each({
focusin: [
true,
false
],
focusout: [
true,
false
],
activate: [
true,
true
],
focus: [
false,
false
],
blur: [
false,
false
]
}, function(name, value) {
var bubbles = value[0],
cancelable = value[1];
dispatchers[name] = function(targetEl, srcEvent) {
var e = API.createUIEvent(targetEl.ownerDocument, name, bubbles, cancelable, 1);
API.fireEvent(targetEl, name, e);
};
});
if (!API) {
dispatchers = {};
API = {};
}
function cannotInject(target, srcEvent) {}
return function(target) {
var me = this,
dispatcher = dispatchers[me.type] || cannotInject,
t = target ? (target.dom || target) : me.getTarget();
dispatcher(t, me);
};
}()),
preventDefault: function() {
var me = this,
event = me.browserEvent,
parentEvent = me.parentEvent,
unselectable, target;
if (typeof event.type !== 'unknown') {
me.defaultPrevented = true;
if (parentEvent) {
parentEvent.defaultPrevented = true;
}
if (event.preventDefault) {
event.preventDefault();
} else {
if (event.type === 'mousedown') {
target = event.target;
unselectable = target.getAttribute('unselectable');
if (unselectable !== 'on') {
target.setAttribute('unselectable', 'on');
Ext.defer(function() {
target.setAttribute('unselectable', unselectable);
}, 1);
}
}
event.returnValue = false;
if (event.ctrlKey || event.keyCode > 111 && event.keyCode < 124) {
event.keyCode = -1;
}
}
}
return me;
},
stopPropagation: function() {
var me = this,
event = me.browserEvent;
if (typeof event.type !== 'unknown') {
if (me.mousedownEvents[me.type]) {
Ext.GlobalEvents.fireMouseDown(me);
}
me.callParent();
}
return me;
},
deprecated: {
'5.0': {
methods: {
clone: function() {
return new this.self(this.browserEvent, this);
}
}
}
}
}, function() {
var Event = this,
btnMap,
onKeyDown = function(e) {
if (e.keyCode === 9) {
Event.forwardTab = !e.shiftKey;
}
},
onKeyUp = function(e) {
if (e.keyCode === 9) {
delete Event.forwardTab;
}
};
if (Ext.isIE9m) {
btnMap = {
0: 0,
1: 0,
4: 1,
2: 2
};
Event.override({
statics: {
enableIEAsync: function(browserEvent) {
var name,
fakeEvent = {};
for (name in browserEvent) {
fakeEvent[name] = browserEvent[name];
}
return fakeEvent;
}
},
constructor: function(event, info, touchesMap, identifiers) {
var me = this;
me.callParent([
event,
info,
touchesMap,
identifiers
]);
me.button = btnMap[event.button];
if (event.type === 'contextmenu') {
me.button = 2;
}
me.toElement = event.toElement;
me.fromElement = event.fromElement;
},
mouseLeaveRe: /(mouseout|mouseleave)/,
mouseEnterRe: /(mouseover|mouseenter)/,
enableIEAsync: function(browserEvent) {
this.browserEvent = this.self.enableIEAsync(browserEvent);
},
getRelatedTarget: function(selector, maxDepth, returnEl) {
var me = this,
type, target;
if (!me.relatedTarget) {
type = me.type;
if (me.mouseLeaveRe.test(type)) {
target = me.toElement;
} else if (me.mouseEnterRe.test(type)) {
target = me.fromElement;
}
if (target) {
me.relatedTarget = me.self.resolveTextNode(target);
}
}
return me.callParent([
selector,
maxDepth,
returnEl
]);
}
});
document.attachEvent('onkeydown', onKeyDown);
document.attachEvent('onkeyup', onKeyUp);
window.attachEvent('onunload', function() {
document.detachEvent('onkeydown', onKeyDown);
document.detachEvent('onkeyup', onKeyUp);
});
} else if (document.addEventListener) {
document.addEventListener('keydown', onKeyDown, true);
document.addEventListener('keyup', onKeyUp, true);
}
});
Ext.define('Ext.overrides.event.publisher.Dom', {
override: 'Ext.event.publisher.Dom'
}, function(DomPublisher) {
if (Ext.isIE9m) {
var docBody = document.body,
prototype = DomPublisher.prototype,
onDirectEvent, onDirectCaptureEvent;
prototype.target = document;
prototype.directBoundListeners = {};
onDirectEvent = function(e, publisher, capture) {
e.target = e.srcElement || window;
e.currentTarget = this;
if (capture) {
publisher.onDirectCaptureEvent(e);
} else {
publisher.onDirectEvent(e);
}
};
onDirectCaptureEvent = function(e, publisher) {
e.target = e.srcElement || window;
e.currentTarget = this;
publisher.onDirectCaptureEvent(e);
};
DomPublisher.override({
addDelegatedListener: function(eventName) {
this.delegatedListeners[eventName] = 1;
this.target.attachEvent('on' + eventName, this.onDelegatedEvent);
},
removeDelegatedListener: function(eventName) {
delete this.delegatedListeners[eventName];
this.target.detachEvent('on' + eventName, this.onDelegatedEvent);
},
addDirectListener: function(eventName, element, capture) {
var me = this,
dom = element.dom,
boundFn = Ext.Function.bind(onDirectEvent, dom, [
me,
capture
], true),
directBoundListeners = me.directBoundListeners,
handlers = directBoundListeners[eventName] || (directBoundListeners[eventName] = {});
handlers[dom.id] = boundFn;
if (dom.attachEvent) {
dom.attachEvent('on' + eventName, boundFn);
} else {
me.callParent(arguments);
}
},
removeDirectListener: function(eventName, element) {
var dom = element.dom;
if (dom.detachEvent) {
dom.detachEvent('on' + eventName, this.directBoundListeners[eventName][dom.id]);
} else {
this.callParent(arguments);
}
},
doDelegatedEvent: function(e, invokeAfter) {
e.target = e.srcElement || window;
if (e.type === 'focusin') {
e.relatedTarget = e.fromElement === docBody ? null : e.fromElement;
} else if (e.type === 'focusout') {
e.relatedTarget = e.toElement === docBody ? null : e.toElement;
}
return this.callParent([
e,
invokeAfter
]);
}
});
Ext.apply(prototype.directEvents, prototype.captureEvents);
prototype.captureEvents = {};
}
});
Ext.define('Ext.overrides.event.publisher.Gesture', {
override: 'Ext.event.publisher.Gesture'
}, function() {
if (Ext.isIE9m) {
this.override({
updateTouches: function(e, isEnd) {
var browserEvent = e.browserEvent,
xy = e.getXY();
browserEvent.pageX = xy[0];
browserEvent.pageY = xy[1];
this.callParent([
e,
isEnd
]);
},
doDelegatedEvent: function(e) {
this.callParent([
Ext.event.Event.enableIEAsync(e)
]);
}
});
}
});
Ext.define('Ext.overrides.dom.Element', (function() {
var Element,
WIN = window,
DOC = document,
HIDDEN = 'hidden',
ISCLIPPED = 'isClipped',
OVERFLOW = 'overflow',
OVERFLOWX = 'overflow-x',
OVERFLOWY = 'overflow-y',
ORIGINALCLIP = 'originalClip',
HEIGHT = 'height',
WIDTH = 'width',
VISIBILITY = 'visibility',
DISPLAY = 'display',
NONE = 'none',
OFFSETS = 'offsets',
ORIGINALDISPLAY = 'originalDisplay',
VISMODE = 'visibilityMode',
ISVISIBLE = 'isVisible',
OFFSETCLASS = Ext.baseCSSPrefix + 'hidden-offsets',
boxMarkup = [
'<div class="{0}-tl" role="presentation">',
'<div class="{0}-tr" role="presentation">',
'<div class="{0}-tc" role="presentation"></div>',
'</div>',
'</div>',
'<div class="{0}-ml" role="presentation">',
'<div class="{0}-mr" role="presentation">',
'<div class="{0}-mc" role="presentation"></div>',
'</div>',
'</div>',
'<div class="{0}-bl" role="presentation">',
'<div class="{0}-br" role="presentation">',
'<div class="{0}-bc" role="presentation"></div>',
'</div>',
'</div>'
].join(''),
scriptTagRe = /(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,
replaceScriptTagRe = /(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,
srcRe = /\ssrc=([\'\"])(.*?)\1/i,
nonSpaceRe = /\S/,
typeRe = /\stype=([\'\"])(.*?)\1/i,
msRe = /^-ms-/,
camelRe = /(-[a-z])/gi,
camelReplaceFn = function(m, a) {
return a.charAt(1).toUpperCase();
},
XMASKED = Ext.baseCSSPrefix + "masked",
XMASKEDRELATIVE = Ext.baseCSSPrefix + "masked-relative",
EXTELMASKMSG = Ext.baseCSSPrefix + "mask-msg",
bodyRe = /^body/i,
propertyCache = {},
getDisplay = function(el) {
var data = el.getData(),
display = data[ORIGINALDISPLAY];
if (display === undefined) {
data[ORIGINALDISPLAY] = display = '';
}
return display;
},
getVisMode = function(el) {
var data = el.getData(),
visMode = data[VISMODE];
if (visMode === undefined) {
data[VISMODE] = visMode = Element.VISIBILITY;
}
return visMode;
},
emptyRange = DOC.createRange ? DOC.createRange() : null,
inputTags = {
INPUT: true,
TEXTAREA: true
};
if (Ext.isIE8) {
var removeNode = Ext.removeNode,
garbageBin = DOC.createElement('div'),
destroyQueue = [],
clearGarbage = Ext.Function.createBuffered(function() {
var len = destroyQueue.length,
i;
for (i = 0; i < len; i++) {
garbageBin.appendChild(destroyQueue[i]);
}
garbageBin.innerHTML = '';
destroyQueue.length = 0;
}, 10);
Ext.removeNode = function(node) {
node = node.dom || node;
removeNode(node);
destroyQueue[destroyQueue.length] = node;
clearGarbage();
};
}
return {
override: 'Ext.dom.Element',
mixins: [
'Ext.util.Animate'
],
uses: [
'Ext.dom.GarbageCollector',
'Ext.dom.Fly',
'Ext.event.publisher.MouseEnterLeave',
'Ext.fx.Manager',
'Ext.fx.Anim'
],
skipGarbageCollection: false,
_init: function(E) {
Element = E;
},
statics: {
selectableCls: Ext.baseCSSPrefix + 'selectable',
unselectableCls: Ext.baseCSSPrefix + 'unselectable',
tabIndexAttributeName: Ext.isIE8 ? 'tabIndex' : 'tabindex',
tabbableSelector: 'a[href],button,iframe,input,select,textarea,[tabindex],[contenteditable="true"]',
naturallyFocusableTags: {
BUTTON: true,
IFRAME: true,
EMBED: true,
INPUT: true,
OBJECT: true,
SELECT: true,
TEXTAREA: true,
HTML: Ext.isIE ? true : false
},
naturallyTabbableTags: {
BUTTON: true,
IFRAME: true,
INPUT: true,
SELECT: true,
TEXTAREA: true,
OBJECT: Ext.isIE8m ? true : false
},
tabbableSavedFlagAttribute: 'data-tabindexsaved',
tabbableSavedAttribute: 'data-savedtabindex',
normalize: function(prop) {
if (prop === 'float') {
prop = Ext.supports.Float ? 'cssFloat' : 'styleFloat';
}
return propertyCache[prop] || (propertyCache[prop] = prop.replace(msRe, 'ms-').replace(camelRe, camelReplaceFn));
},
getViewportHeight: function() {
return Ext.isIE9m ? DOC.documentElement.clientHeight : WIN.innerHeight;
},
getViewportWidth: function() {
return (!Ext.isStrict && !Ext.isOpera) ? document.body.clientWidth : Ext.isIE9m ? DOC.documentElement.clientWidth : WIN.innerWidth;
}
},
addClsOnClick: function(className, testFn, scope) {
var me = this,
dom = me.dom,
hasTest = Ext.isFunction(testFn);
me.on("mousedown", function() {
if (hasTest && testFn.call(scope || me, me) === false) {
return false;
}
Ext.fly(dom).addCls(className);
var d = Ext.getDoc(),
fn = function() {
Ext.fly(dom).removeCls(className);
d.removeListener("mouseup", fn);
};
d.on("mouseup", fn);
});
return me;
},
addClsOnFocus: function(className, testFn, scope) {
var me = this,
dom = me.dom,
hasTest = Ext.isFunction(testFn);
me.on("focus", function() {
if (hasTest && testFn.call(scope || me, me) === false) {
return false;
}
Ext.fly(dom).addCls(className);
});
me.on("blur", function() {
Ext.fly(dom).removeCls(className);
});
return me;
},
addClsOnOver: function(className, testFn, scope) {
var me = this,
dom = me.dom,
hasTest = Ext.isFunction(testFn);
me.hover(function() {
if (hasTest && testFn.call(scope || me, me) === false) {
return;
}
Ext.fly(dom).addCls(className);
}, function() {
Ext.fly(dom).removeCls(className);
});
return me;
},
addKeyListener: function(key, fn, scope) {
var config;
if (typeof key !== 'object' || Ext.isArray(key)) {
config = {
target: this,
key: key,
fn: fn,
scope: scope
};
} else {
config = {
target: this,
key: key.key,
shift: key.shift,
ctrl: key.ctrl,
alt: key.alt,
fn: fn,
scope: scope
};
}
return new Ext.util.KeyMap(config);
},
addKeyMap: function(config) {
return new Ext.util.KeyMap(Ext.apply({
target: this
}, config));
},
afterAnimate: function() {
var shadow = this.shadow;
if (shadow && !shadow.disabled && !shadow.animate) {
shadow.show();
}
},
anchorAnimX: function(anchor) {
var xName = (anchor === 'l') ? 'right' : 'left';
this.dom.style[xName] = '0px';
},
anim: function(config) {
if (!Ext.isObject(config)) {
return (config) ? {} : false;
}
var me = this,
duration = config.duration || Ext.fx.Anim.prototype.duration,
easing = config.easing || 'ease',
animConfig;
if (config.stopAnimation) {
me.stopAnimation();
}
Ext.applyIf(config, Ext.fx.Manager.getFxDefaults(me.id));
Ext.fx.Manager.setFxDefaults(me.id, {
delay: 0
});
animConfig = {
target: me.dom,
remove: config.remove,
alternate: config.alternate || false,
duration: duration,
easing: easing,
callback: config.callback,
listeners: config.listeners,
iterations: config.iterations || 1,
scope: config.scope,
block: config.block,
concurrent: config.concurrent,
delay: config.delay || 0,
paused: true,
keyframes: config.keyframes,
from: config.from || {},
to: Ext.apply({}, config)
};
Ext.apply(animConfig.to, config.to);
delete animConfig.to.to;
delete animConfig.to.from;
delete animConfig.to.remove;
delete animConfig.to.alternate;
delete animConfig.to.keyframes;
delete animConfig.to.iterations;
delete animConfig.to.listeners;
delete animConfig.to.target;
delete animConfig.to.paused;
delete animConfig.to.callback;
delete animConfig.to.scope;
delete animConfig.to.duration;
delete animConfig.to.easing;
delete animConfig.to.concurrent;
delete animConfig.to.block;
delete animConfig.to.stopAnimation;
delete animConfig.to.delay;
return animConfig;
},
animate: function(config) {
var me = this,
animId = me.dom.id || Ext.id(me.dom),
listeners, anim, end;
if (!Ext.fx.Manager.hasFxBlock(animId)) {
if (config.listeners) {
listeners = config.listeners;
delete config.listeners;
}
if (config.internalListeners) {
config.listeners = config.internalListeners;
delete config.internalListeners;
}
end = config.autoEnd;
delete config.autoEnd;
anim = new Ext.fx.Anim(me.anim(config));
anim.on({
afteranimate: 'afterAnimate',
beforeanimate: 'beforeAnimate',
scope: me,
single: true
});
if (listeners) {
anim.on(listeners);
}
Ext.fx.Manager.queueFx(anim);
if (end) {
anim.jumpToEnd();
}
}
return me;
},
beforeAnimate: function() {
var shadow = this.shadow;
if (shadow && !shadow.disabled && !shadow.animate) {
shadow.hide();
}
},
boxWrap: function(cls) {
cls = cls || Ext.baseCSSPrefix + 'box';
var el = Ext.get(this.insertHtml("beforeBegin", "<div class='" + cls + "' role='presentation'>" + Ext.String.format(boxMarkup, cls) + "</div>"));
el.selectNode('.' + cls + '-mc').appendChild(this.dom);
return el;
},
clean: function(forceReclean) {
var me = this,
dom = me.dom,
data = me.getData(),
n = dom.firstChild,
ni = -1,
nx;
if (data.isCleaned && forceReclean !== true) {
return me;
}
while (n) {
nx = n.nextSibling;
if (n.nodeType === 3) {
if (!(nonSpaceRe.test(n.nodeValue))) {
dom.removeChild(n);
}
else if (nx && nx.nodeType === 3) {
n.appendData(Ext.String.trim(nx.data));
dom.removeChild(nx);
nx = n.nextSibling;
n.nodeIndex = ++ni;
}
} else {
Ext.fly(n, '_clean').clean();
n.nodeIndex = ++ni;
}
n = nx;
}
data.isCleaned = true;
return me;
},
empty: emptyRange ? function() {
var dom = this.dom;
if (dom.firstChild) {
emptyRange.setStartBefore(dom.firstChild);
emptyRange.setEndAfter(dom.lastChild);
emptyRange.deleteContents();
}
} : function() {
var dom = this.dom;
while (dom.lastChild) {
dom.removeChild(dom.lastChild);
}
},
clearListeners: function() {
this.removeAnchor();
this.callParent();
},
clearPositioning: function(value) {
value = value || '';
return this.setStyle({
left: value,
right: value,
top: value,
bottom: value,
'z-index': '',
position: 'static'
});
},
createProxy: function(config, renderTo, matchBox) {
config = (typeof config === 'object') ? config : {
tag: "div",
role: 'presentation',
cls: config
};
var me = this,
proxy = renderTo ? Ext.DomHelper.append(renderTo, config, true) : Ext.DomHelper.insertBefore(me.dom, config, true);
proxy.setVisibilityMode(Element.DISPLAY);
proxy.hide();
if (matchBox && me.setBox && me.getBox) {
proxy.setBox(me.getBox());
}
return proxy;
},
clearOpacity: function() {
return this.setOpacity('');
},
clip: function() {
var me = this,
data = me.getData(),
style;
if (!data[ISCLIPPED]) {
data[ISCLIPPED] = true;
style = me.getStyle([
OVERFLOW,
OVERFLOWX,
OVERFLOWY
]);
data[ORIGINALCLIP] = {
o: style[OVERFLOW],
x: style[OVERFLOWX],
y: style[OVERFLOWY]
};
me.setStyle(OVERFLOW, HIDDEN);
me.setStyle(OVERFLOWX, HIDDEN);
me.setStyle(OVERFLOWY, HIDDEN);
}
return me;
},
destroy: function() {
var me = this,
dom = me.dom,
data = me.getData(),
maskEl, maskMsg;
if (dom && me.isAnimate) {
me.stopAnimation();
}
me.callParent();
if (dom && Ext.isIE8 && (dom.window != dom) && (dom.nodeType !== 9) && (dom.tagName !== 'BODY') && (dom.tagName !== 'HTML')) {
destroyQueue[destroyQueue.length] = dom;
clearGarbage();
}
if (data) {
maskEl = data.maskEl;
maskMsg = data.maskMsg;
if (maskEl) {
maskEl.destroy();
}
if (maskMsg) {
maskMsg.destroy();
}
}
},
enableDisplayMode: function(display) {
var me = this;
me.setVisibilityMode(Element.DISPLAY);
if (display !== undefined) {
me.getData()[ORIGINALDISPLAY] = display;
}
return me;
},
fadeIn: function(o) {
var me = this,
dom = me.dom;
me.animate(Ext.apply({}, o, {
opacity: 1,
internalListeners: {
beforeanimate: function(anim) {
var el = Ext.fly(dom, '_anim');
if (el.isStyle('display', 'none')) {
el.setDisplayed('');
} else {
el.show();
}
}
}
}));
return this;
},
fadeOut: function(o) {
var me = this,
dom = me.dom;
o = Ext.apply({
opacity: 0,
internalListeners: {
afteranimate: function(anim) {
if (dom && anim.to.opacity === 0) {
var el = Ext.fly(dom, '_anim');
if (o.useDisplay) {
el.setDisplayed(false);
} else {
el.hide();
}
}
}
}
}, o);
me.animate(o);
return me;
},
fixDisplay: function() {
var me = this;
if (me.isStyle(DISPLAY, NONE)) {
me.setStyle(VISIBILITY, HIDDEN);
me.setStyle(DISPLAY, getDisplay(me));
if (me.isStyle(DISPLAY, NONE)) {
me.setStyle(DISPLAY, "block");
}
}
},
frame: function(color, count, obj) {
var me = this,
dom = me.dom,
beforeAnim;
color = color || '#C3DAF9';
count = count || 1;
obj = obj || {};
beforeAnim = function() {
var el = Ext.fly(dom, '_anim'),
animScope = this,
box, proxy, proxyAnim;
el.show();
box = el.getBox();
proxy = Ext.getBody().createChild({
role: 'presentation',
id: el.dom.id + '-anim-proxy',
style: {
position: 'absolute',
'pointer-events': 'none',
'z-index': 35000,
border: '0px solid ' + color
}
});
proxyAnim = new Ext.fx.Anim({
target: proxy,
duration: obj.duration || 1000,
iterations: count,
from: {
top: box.y,
left: box.x,
borderWidth: 0,
opacity: 1,
height: box.height,
width: box.width
},
to: {
top: box.y - 20,
left: box.x - 20,
borderWidth: 10,
opacity: 0,
height: box.height + 40,
width: box.width + 40
}
});
proxyAnim.on('afteranimate', function() {
proxy.destroy();
animScope.end();
});
};
me.animate({
duration: (Math.max(obj.duration, 500) * 2) || 2000,
listeners: {
beforeanimate: {
fn: beforeAnim
}
},
callback: obj.callback,
scope: obj.scope
});
return me;
},
getColor: function(attr, defaultValue, prefix) {
var v = this.getStyle(attr),
color = prefix || prefix === '' ? prefix : '#',
h, len,
i = 0;
if (!v || (/transparent|inherit/.test(v))) {
return defaultValue;
}
if (/^r/.test(v)) {
v = v.slice(4, v.length - 1).split(',');
len = v.length;
for (; i < len; i++) {
h = parseInt(v[i], 10);
color += (h < 16 ? '0' : '') + h.toString(16);
}
} else {
v = v.replace('#', '');
color += v.length === 3 ? v.replace(/^(\w)(\w)(\w)$/, '$1$1$2$2$3$3') : v;
}
return (color.length > 5 ? color.toLowerCase() : defaultValue);
},
getLoader: function() {
var me = this,
data = me.getData(),
loader = data.loader;
if (!loader) {
data.loader = loader = new Ext.ElementLoader({
target: me
});
}
return loader;
},
getPositioning: function(autoPx) {
var styles = this.getStyle([
'left',
'top',
'position',
'z-index'
]),
dom = this.dom;
if (autoPx) {
if (styles.left === 'auto') {
styles.left = dom.offsetLeft + 'px';
}
if (styles.top === 'auto') {
styles.top = dom.offsetTop + 'px';
}
}
return styles;
},
ghost: function(anchor, obj) {
var me = this,
dom = me.dom,
beforeAnim;
anchor = anchor || "b";
beforeAnim = function() {
var el = Ext.fly(dom, '_anim'),
width = el.getWidth(),
height = el.getHeight(),
xy = el.getXY(),
position = el.getPositioning(),
to = {
opacity: 0
};
switch (anchor) {
case 't':
to.y = xy[1] - height;
break;
case 'l':
to.x = xy[0] - width;
break;
case 'r':
to.x = xy[0] + width;
break;
case 'b':
to.y = xy[1] + height;
break;
case 'tl':
to.x = xy[0] - width;
to.y = xy[1] - height;
break;
case 'bl':
to.x = xy[0] - width;
to.y = xy[1] + height;
break;
case 'br':
to.x = xy[0] + width;
to.y = xy[1] + height;
break;
case 'tr':
to.x = xy[0] + width;
to.y = xy[1] - height;
break;
}
this.to = to;
this.on('afteranimate', function() {
var el = Ext.fly(dom, '_anim');
if (el) {
el.hide();
el.clearOpacity();
el.setPositioning(position);
}
});
};
me.animate(Ext.applyIf(obj || {}, {
duration: 500,
easing: 'ease-out',
listeners: {
beforeanimate: beforeAnim
}
}));
return me;
},
hide: function(animate) {
if (typeof animate === 'string') {
this.setVisible(false, animate);
return this;
}
this.setVisible(false, this.anim(animate));
return this;
},
highlight: function(color, o) {
var me = this,
dom = me.dom,
from = {},
restore, to, attr, lns, event, fn;
o = o || {};
lns = o.listeners || {};
attr = o.attr || 'backgroundColor';
from[attr] = color || 'ffff9c';
if (!o.to) {
to = {};
to[attr] = o.endColor || me.getColor(attr, 'ffffff', '');
} else {
to = o.to;
}
o.listeners = Ext.apply(Ext.apply({}, lns), {
beforeanimate: function() {
restore = dom.style[attr];
var el = Ext.fly(dom, '_anim');
el.clearOpacity();
el.show();
event = lns.beforeanimate;
if (event) {
fn = event.fn || event;
return fn.apply(event.scope || lns.scope || WIN, arguments);
}
},
afteranimate: function() {
if (dom) {
dom.style[attr] = restore;
}
event = lns.afteranimate;
if (event) {
fn = event.fn || event;
fn.apply(event.scope || lns.scope || WIN, arguments);
}
}
});
me.animate(Ext.apply({}, o, {
duration: 1000,
easing: 'ease-in',
from: from,
to: to
}));
return me;
},
hover: function(overFn, outFn, scope, options) {
var me = this;
me.on('mouseenter', overFn, scope || me.dom, options);
me.on('mouseleave', outFn, scope || me.dom, options);
return me;
},
initDD: function(group, config, overrides) {
var dd = new Ext.dd.DD(Ext.id(this.dom), group, config);
return Ext.apply(dd, overrides);
},
initDDProxy: function(group, config, overrides) {
var dd = new Ext.dd.DDProxy(Ext.id(this.dom), group, config);
return Ext.apply(dd, overrides);
},
initDDTarget: function(group, config, overrides) {
var dd = new Ext.dd.DDTarget(Ext.id(this.dom), group, config);
return Ext.apply(dd, overrides);
},
isFocusable: function() {
var dom = this.dom,
focusable = false,
nodeName;
if (dom && !dom.disabled) {
nodeName = dom.nodeName;
focusable = !!Ext.Element.naturallyFocusableTags[nodeName] || ((nodeName === 'A' || nodeName === 'LINK') && !!dom.href) || dom.getAttribute('tabindex') != null || dom.contentEditable === 'true';
if (Ext.isIE8 && nodeName === 'INPUT' && dom.type === 'hidden') {
focusable = false;
}
focusable = focusable && this.isVisible(true);
}
return focusable;
},
isInputField: function() {
var dom = this.dom,
contentEditable = dom.contentEditable;
if ((inputTags[dom.tagName] && dom.type !== 'button') || (contentEditable === '' || contentEditable === 'true')) {
return true;
}
return false;
},
isTabbable: function() {
var dom = this.dom,
tabbable = false,
nodeName, hasIndex, tabIndex;
if (dom && !dom.disabled) {
nodeName = dom.nodeName;
tabIndex = dom.getAttribute('tabindex');
hasIndex = tabIndex != null;
tabIndex -= 0;
if (nodeName === 'A' || nodeName === 'LINK') {
if (dom.href) {
tabbable = hasIndex && tabIndex < 0 ? false : true;
} else
{
if (dom.contentEditable === 'true') {
tabbable = !hasIndex || (hasIndex && tabIndex >= 0) ? true : false;
} else {
tabbable = hasIndex && tabIndex >= 0 ? true : false;
}
}
}
else if (dom.contentEditable === 'true' || Ext.Element.naturallyTabbableTags[nodeName]) {
tabbable = hasIndex && tabIndex < 0 ? false : true;
} else
{
if (hasIndex && tabIndex >= 0) {
tabbable = true;
}
}
if (Ext.isIE8 && nodeName === 'INPUT' && dom.type === 'hidden') {
tabbable = false;
}
tabbable = tabbable && (!this.component || this.component.isVisible(true)) && this.isVisible(true);
}
return tabbable;
},
isMasked: function(deep) {
var me = this,
data = me.getData(),
maskEl = data.maskEl,
maskMsg = data.maskMsg,
hasMask = false,
parent;
if (maskEl && maskEl.isVisible()) {
if (maskMsg) {
maskMsg.center(me);
}
hasMask = true;
} else if (deep) {
parent = me.findParentNode();
if (parent) {
return Ext.fly(parent).isMasked(deep);
}
}
return hasMask;
},
isScrollable: function() {
var dom = this.dom;
return dom.scrollHeight > dom.clientHeight || dom.scrollWidth > dom.clientWidth;
},
load: function(options) {
this.getLoader().load(options);
return this;
},
mask: function(msg, msgCls,
elHeight) {
var me = this,
dom = me.dom,
data = me.getData(),
maskEl = data.maskEl,
maskMsg;
if (!(bodyRe.test(dom.tagName) && me.getStyle('position') === 'static')) {
me.addCls(XMASKEDRELATIVE);
}
if (maskEl) {
maskEl.destroy();
}
maskEl = Ext.DomHelper.append(dom, {
role: 'presentation',
cls: Ext.baseCSSPrefix + "mask " + Ext.baseCSSPrefix + "border-box",
children: {
role: 'presentation',
cls: msgCls ? EXTELMASKMSG + " " + msgCls : EXTELMASKMSG,
cn: {
tag: 'div',
role: 'presentation',
cls: Ext.baseCSSPrefix + 'mask-msg-inner',
cn: {
tag: 'div',
role: 'presentation',
cls: Ext.baseCSSPrefix + 'mask-msg-text',
html: msg || ''
}
}
}
}, true);
maskMsg = Ext.get(maskEl.dom.firstChild);
data.maskEl = maskEl;
me.addCls(XMASKED);
maskEl.setDisplayed(true);
if (typeof msg === 'string') {
maskMsg.setDisplayed(true);
maskMsg.center(me);
} else {
maskMsg.setDisplayed(false);
}
if (dom === DOC.body) {
maskEl.addCls(Ext.baseCSSPrefix + 'mask-fixed');
} else {
me.saveTabbableState();
}
me.saveChildrenTabbableState();
if (Ext.isIE9m && dom !== DOC.body && me.isStyle('height', 'auto')) {
maskEl.setSize(undefined, elHeight || me.getHeight());
}
return maskEl;
},
monitorMouseLeave: function(delay, handler, scope) {
var me = this,
timer,
listeners = {
mouseleave: function(e) {
if (Ext.isIE9m) {
e.enableIEAsync();
}
timer = Ext.defer(handler, delay, scope || me, [
e
]);
},
mouseenter: function() {
clearTimeout(timer);
}
};
me.on(listeners);
return listeners;
},
puff: function(obj) {
var me = this,
dom = me.dom,
beforeAnim,
box = me.getBox(),
originalStyles = me.getStyle([
'width',
'height',
'left',
'right',
'top',
'bottom',
'position',
'z-index',
'font-size',
'opacity'
], true);
obj = Ext.applyIf(obj || {}, {
easing: 'ease-out',
duration: 500,
useDisplay: false
});
beforeAnim = function() {
var el = Ext.fly(dom, '_anim');
el.clearOpacity();
el.show();
this.to = {
width: box.width * 2,
height: box.height * 2,
x: box.x - (box.width / 2),
y: box.y - (box.height / 2),
opacity: 0,
fontSize: '200%'
};
this.on('afteranimate', function() {
var el = Ext.fly(dom, '_anim');
if (el) {
if (obj.useDisplay) {
el.setDisplayed(false);
} else {
el.hide();
}
el.setStyle(originalStyles);
Ext.callback(obj.callback, obj.scope);
}
});
};
me.animate({
duration: obj.duration,
easing: obj.easing,
listeners: {
beforeanimate: {
fn: beforeAnim
}
}
});
return me;
},
selectable: function() {
var me = this;
me.dom.unselectable = '';
me.removeCls(Element.unselectableCls);
me.addCls(Element.selectableCls);
return me;
},
setCapture: function() {
var dom = this.dom;
if (Ext.isIE9m && dom.setCapture) {
dom.setCapture();
}
},
setDisplayed: function(value) {
var me = this;
if (typeof value === "boolean") {
value = value ? getDisplay(me) : NONE;
}
me.setStyle(DISPLAY, value);
if (me.shadow || me.shim) {
me.setUnderlaysVisible(value !== NONE);
}
return me;
},
setHeight: function(height, animate) {
var me = this;
if (!animate || !me.anim) {
me.callParent(arguments);
} else {
if (!Ext.isObject(animate)) {
animate = {};
}
me.animate(Ext.applyIf({
to: {
height: height
}
}, animate));
}
return me;
},
setHorizontal: function() {
var me = this,
cls = me.verticalCls;
delete me.vertical;
if (cls) {
delete me.verticalCls;
me.removeCls(cls);
}
delete me.setWidth;
delete me.setHeight;
if (!Ext.isIE8) {
delete me.getWidth;
delete me.getHeight;
}
delete me.styleHooks;
},
updateText: function(text) {
var me = this,
dom, textNode;
if (dom) {
textNode = dom.firstChild;
if (!textNode || (textNode.nodeType !== 3 || textNode.nextSibling)) {
textNode = DOC.createTextNode();
me.empty();
dom.appendChild(textNode);
}
if (text) {
textNode.data = text;
}
}
},
setHtml: function(html, loadScripts, callback) {
var me = this,
id, dom, interval;
if (!me.dom) {
return me;
}
html = html || '';
dom = me.dom;
if (loadScripts !== true) {
dom.innerHTML = html;
Ext.callback(callback, me);
return me;
}
id = Ext.id();
html += '<span id="' + id + '" role="presentation"></span>';
interval = Ext.interval(function() {
var hd, match, attrs, srcMatch, typeMatch, el, s;
if (!(el = DOC.getElementById(id))) {
return false;
}
clearInterval(interval);
Ext.removeNode(el);
hd = Ext.getHead().dom;
while ((match = scriptTagRe.exec(html))) {
attrs = match[1];
srcMatch = attrs ? attrs.match(srcRe) : false;
if (srcMatch && srcMatch[2]) {
s = DOC.createElement("script");
s.src = srcMatch[2];
typeMatch = attrs.match(typeRe);
if (typeMatch && typeMatch[2]) {
s.type = typeMatch[2];
}
hd.appendChild(s);
} else if (match[2] && match[2].length > 0) {
(WIN.execScript || WIN.eval)(match[2]);
}
}
Ext.callback(callback, me);
}, 20);
dom.innerHTML = html.replace(replaceScriptTagRe, '');
return me;
},
setOpacity: function(opacity, animate) {
var me = this;
if (!me.dom) {
return me;
}
if (!animate || !me.anim) {
me.setStyle('opacity', opacity);
} else {
if (typeof animate != 'object') {
animate = {
duration: 350,
easing: 'ease-in'
};
}
me.animate(Ext.applyIf({
to: {
opacity: opacity
}
}, animate));
}
return me;
},
setPositioning: function(pc) {
return this.setStyle(pc);
},
setVertical: function(angle, cls) {
var me = this,
proto = Element.prototype;
me.vertical = true;
if (cls) {
me.addCls(me.verticalCls = cls);
}
me.setWidth = proto.setHeight;
me.setHeight = proto.setWidth;
if (!Ext.isIE8) {
me.getWidth = proto.getHeight;
me.getHeight = proto.getWidth;
}
me.styleHooks = (angle === 270) ? proto.verticalStyleHooks270 : proto.verticalStyleHooks90;
},
setSize: function(width, height, animate) {
var me = this;
if (Ext.isObject(width)) {
animate = height;
height = width.height;
width = width.width;
}
if (!animate || !me.anim) {
me.dom.style.width = Element.addUnits(width);
me.dom.style.height = Element.addUnits(height);
if (me.shadow || me.shim) {
me.syncUnderlays();
}
} else {
if (animate === true) {
animate = {};
}
me.animate(Ext.applyIf({
to: {
width: width,
height: height
}
}, animate));
}
return me;
},
setVisible: function(visible, animate) {
var me = this,
dom = me.dom,
visMode = getVisMode(me);
if (typeof animate === 'string') {
switch (animate) {
case DISPLAY:
visMode = Element.DISPLAY;
break;
case VISIBILITY:
visMode = Element.VISIBILITY;
break;
case OFFSETS:
visMode = Element.OFFSETS;
break;
}
me.setVisibilityMode(visMode);
animate = false;
}
if (!animate || !me.anim) {
if (visMode === Element.DISPLAY) {
return me.setDisplayed(visible);
} else if (visMode === Element.OFFSETS) {
me[visible ? 'removeCls' : 'addCls'](OFFSETCLASS);
} else if (visMode === Element.VISIBILITY) {
me.fixDisplay();
dom.style.visibility = visible ? '' : HIDDEN;
}
} else {
if (visible) {
me.setOpacity(0.01);
me.setVisible(true);
}
if (!Ext.isObject(animate)) {
animate = {
duration: 350,
easing: 'ease-in'
};
}
me.animate(Ext.applyIf({
callback: function() {
if (!visible) {
Ext.fly(dom).setVisible(false).setOpacity(1);
}
},
to: {
opacity: (visible) ? 1 : 0
}
}, animate));
}
me.getData()[ISVISIBLE] = visible;
if (me.shadow || me.shim) {
me.setUnderlaysVisible(visible);
}
return me;
},
setWidth: function(width, animate) {
var me = this;
if (!animate || !me.anim) {
me.callParent(arguments);
} else {
if (!Ext.isObject(animate)) {
animate = {};
}
me.animate(Ext.applyIf({
to: {
width: width
}
}, animate));
}
return me;
},
setX: function(x, animate) {
return this.setXY([
x,
this.getY()
], animate);
},
setXY: function(xy, animate) {
var me = this;
if (!animate || !me.anim) {
me.callParent([
xy
]);
} else {
if (!Ext.isObject(animate)) {
animate = {};
}
me.animate(Ext.applyIf({
to: {
x: xy[0],
y: xy[1]
}
}, animate));
}
return this;
},
setY: function(y, animate) {
return this.setXY([
this.getX(),
y
], animate);
},
show: function(animate) {
if (typeof animate === 'string') {
this.setVisible(true, animate);
return this;
}
this.setVisible(true, this.anim(animate));
return this;
},
slideIn: function(anchor, obj, slideOut) {
var me = this,
dom = me.dom,
elStyle = dom.style,
beforeAnim, wrapAnim, restoreScroll, wrapDomParentNode;
anchor = anchor || "t";
obj = obj || {};
beforeAnim = function() {
var animScope = this,
listeners = obj.listeners,
el = Ext.fly(dom, '_anim'),
box, originalStyles, anim, wrap;
if (!slideOut) {
el.fixDisplay();
}
box = el.getBox();
if ((anchor == 't' || anchor == 'b') && box.height === 0) {
box.height = dom.scrollHeight;
} else if ((anchor == 'l' || anchor == 'r') && box.width === 0) {
box.width = dom.scrollWidth;
}
originalStyles = el.getStyle([
'width',
'height',
'left',
'right',
'top',
'bottom',
'position',
'z-index'
], true);
el.setSize(box.width, box.height);
if (obj.preserveScroll) {
restoreScroll = el.cacheScrollValues();
}
wrap = el.wrap({
role: 'presentation',
id: Ext.id() + '-anim-wrap-for-' + el.dom.id,
style: {
visibility: slideOut ? 'visible' : 'hidden'
}
});
wrapDomParentNode = wrap.dom.parentNode;
wrap.setPositioning(el.getPositioning());
if (wrap.isStyle('position', 'static')) {
wrap.position('relative');
}
el.clearPositioning('auto');
wrap.clip();
if (restoreScroll) {
restoreScroll();
}
el.setStyle({
visibility: '',
position: 'absolute'
});
if (slideOut) {
wrap.setSize(box.width, box.height);
}
switch (anchor) {
case 't':
anim = {
from: {
width: box.width + 'px',
height: '0px'
},
to: {
width: box.width + 'px',
height: box.height + 'px'
}
};
elStyle.bottom = '0px';
break;
case 'l':
anim = {
from: {
width: '0px',
height: box.height + 'px'
},
to: {
width: box.width + 'px',
height: box.height + 'px'
}
};
me.anchorAnimX(anchor);
break;
case 'r':
anim = {
from: {
x: box.x + box.width,
width: '0px',
height: box.height + 'px'
},
to: {
x: box.x,
width: box.width + 'px',
height: box.height + 'px'
}
};
me.anchorAnimX(anchor);
break;
case 'b':
anim = {
from: {
y: box.y + box.height,
width: box.width + 'px',
height: '0px'
},
to: {
y: box.y,
width: box.width + 'px',
height: box.height + 'px'
}
};
break;
case 'tl':
anim = {
from: {
x: box.x,
y: box.y,
width: '0px',
height: '0px'
},
to: {
width: box.width + 'px',
height: box.height + 'px'
}
};
elStyle.bottom = '0px';
me.anchorAnimX('l');
break;
case 'bl':
anim = {
from: {
y: box.y + box.height,
width: '0px',
height: '0px'
},
to: {
y: box.y,
width: box.width + 'px',
height: box.height + 'px'
}
};
me.anchorAnimX('l');
break;
case 'br':
anim = {
from: {
x: box.x + box.width,
y: box.y + box.height,
width: '0px',
height: '0px'
},
to: {
x: box.x,
y: box.y,
width: box.width + 'px',
height: box.height + 'px'
}
};
me.anchorAnimX('r');
break;
case 'tr':
anim = {
from: {
x: box.x + box.width,
width: '0px',
height: '0px'
},
to: {
x: box.x,
width: box.width + 'px',
height: box.height + 'px'
}
};
elStyle.bottom = '0px';
me.anchorAnimX('r');
break;
}
wrap.show();
wrapAnim = Ext.apply({}, obj);
delete wrapAnim.listeners;
wrapAnim = new Ext.fx.Anim(Ext.applyIf(wrapAnim, {
target: wrap,
duration: 500,
easing: 'ease-out',
from: slideOut ? anim.to : anim.from,
to: slideOut ? anim.from : anim.to
}));
wrapAnim.on('afteranimate', function() {
var el = Ext.fly(dom, '_anim');
el.setStyle(originalStyles);
if (slideOut) {
if (obj.useDisplay) {
el.setDisplayed(false);
} else {
el.hide();
}
}
if (wrap.dom) {
if (wrap.dom.parentNode) {
wrap.dom.parentNode.insertBefore(el.dom, wrap.dom);
} else {
wrapDomParentNode.appendChild(el.dom);
}
wrap.destroy();
}
if (restoreScroll) {
restoreScroll();
}
animScope.end();
});
if (listeners) {
wrapAnim.on(listeners);
}
};
me.animate({
duration: obj.duration ? Math.max(obj.duration, 500) * 2 : 1000,
listeners: {
beforeanimate: beforeAnim
}
});
return me;
},
slideOut: function(anchor, o) {
return this.slideIn(anchor, o, true);
},
swallowEvent: function(eventName, preventDefault) {
var me = this,
e, eLen,
fn = function(e) {
e.stopPropagation();
if (preventDefault) {
e.preventDefault();
}
};
if (Ext.isArray(eventName)) {
eLen = eventName.length;
for (e = 0; e < eLen; e++) {
me.on(eventName[e], fn);
}
return me;
}
me.on(eventName, fn);
return me;
},
switchOff: function(obj) {
var me = this,
dom = me.dom,
beforeAnim;
obj = Ext.applyIf(obj || {}, {
easing: 'ease-in',
duration: 500,
remove: false,
useDisplay: false
});
beforeAnim = function() {
var el = Ext.fly(dom, '_anim'),
animScope = this,
size = el.getSize(),
xy = el.getXY(),
keyframe, position;
el.clearOpacity();
el.clip();
position = el.getPositioning();
keyframe = new Ext.fx.Animator({
target: dom,
duration: obj.duration,
easing: obj.easing,
keyframes: {
33: {
opacity: 0.3
},
66: {
height: 1,
y: xy[1] + size.height / 2
},
100: {
width: 1,
x: xy[0] + size.width / 2
}
}
});
keyframe.on('afteranimate', function() {
var el = Ext.fly(dom, '_anim');
if (obj.useDisplay) {
el.setDisplayed(false);
} else {
el.hide();
}
el.clearOpacity();
el.setPositioning(position);
el.setSize(size);
animScope.end();
});
};
me.animate({
duration: (Math.max(obj.duration, 500) * 2),
listeners: {
beforeanimate: {
fn: beforeAnim
}
},
callback: obj.callback,
scope: obj.scope
});
return me;
},
syncContent: function(source) {
source = Ext.getDom(source);
var sourceNodes = source.childNodes,
sourceLen = sourceNodes.length,
dest = this.dom,
destNodes = dest.childNodes,
destLen = destNodes.length,
i, destNode, sourceNode, nodeType, newAttrs, attLen, attName,
elData = dest._extData;
if (Ext.isIE9m && dest.mergeAttributes) {
dest.mergeAttributes(source, true);
dest.src = source.src;
} else {
newAttrs = source.attributes;
attLen = newAttrs.length;
for (i = 0; i < attLen; i++) {
attName = newAttrs[i].name;
if (attName !== 'id') {
dest.setAttribute(attName, newAttrs[i].value);
}
}
}
if (elData) {
elData.isSynchronized = false;
}
if (sourceLen !== destLen) {
dest.innerHTML = source.innerHTML;
return;
}
for (i = 0; i < sourceLen; i++) {
sourceNode = sourceNodes[i];
destNode = destNodes[i];
nodeType = sourceNode.nodeType;
if (nodeType !== destNode.nodeType || (nodeType === 1 && sourceNode.tagName !== destNode.tagName)) {
dest.innerHTML = source.innerHTML;
return;
}
if (nodeType === 3) {
destNode.data = sourceNode.data;
} else
{
if (sourceNode.id && destNode.id !== sourceNode.id) {
destNode.id = sourceNode.id;
}
destNode.style.cssText = sourceNode.style.cssText;
destNode.className = sourceNode.className;
Ext.fly(destNode, '_syncContent').syncContent(sourceNode);
}
}
},
toggle: function(animate) {
var me = this;
me.setVisible(!me.isVisible(), me.anim(animate));
return me;
},
unmask: function() {
var me = this,
data = me.getData(),
maskEl = data.maskEl,
style;
if (maskEl) {
style = maskEl.dom.style;
if (style.clearExpression) {
style.clearExpression('width');
style.clearExpression('height');
}
if (maskEl) {
maskEl.destroy();
delete data.maskEl;
}
me.removeCls([
XMASKED,
XMASKEDRELATIVE
]);
}
me.restoreChildrenTabbableState();
if (me.dom !== DOC.body) {
me.restoreTabbableState();
}
},
unclip: function() {
var me = this,
data = me.getData(),
clip;
if (data[ISCLIPPED]) {
data[ISCLIPPED] = false;
clip = data[ORIGINALCLIP];
if (clip.o) {
me.setStyle(OVERFLOW, clip.o);
}
if (clip.x) {
me.setStyle(OVERFLOWX, clip.x);
}
if (clip.y) {
me.setStyle(OVERFLOWY, clip.y);
}
}
return me;
},
translate: function(x, y, z) {
if (Ext.supports.CssTransforms && !Ext.isIE9m) {
this.callParent(arguments);
} else {
if (x != null) {
this.dom.style.left = x + 'px';
}
if (y != null) {
this.dom.style.top = y + 'px';
}
}
},
unselectable: function() {
var me = this;
if (Ext.isOpera) {
me.dom.unselectable = 'on';
}
me.removeCls(Element.selectableCls);
me.addCls(Element.unselectableCls);
return me;
},
privates: {
needsTabIndex: function() {
var dom = this.dom,
nodeName, isFocusable;
if (dom) {
nodeName = dom.nodeName;
isFocusable = !!Ext.Element.naturallyFocusableTags[nodeName] || ((nodeName === 'A' || nodeName === 'LINK') && !!dom.href) || dom.getAttribute('tabindex') != null || dom.contentEditable === 'true';
return !isFocusable;
}
},
findTabbableElements: function(asDom, selector,
limit, backward) {
asDom = asDom != undefined ? asDom : true;
var me = this,
selection;
selection = me.selectTabbableElements(asDom, selector, limit, backward);
if (me.isTabbable()) {
selection.unshift(asDom ? me.dom : me);
}
return selection;
},
selectTabbableElements: function(asDom, selector,
limit, backward) {
var selection = [],
nodes, node, el, i, len, to, step, tabIndex;
asDom = asDom != undefined ? asDom : true;
nodes = this.dom.querySelectorAll(selector || Ext.Element.tabbableSelector);
len = nodes.length;
if (!len) {
return selection;
}
if (backward) {
i = len - 1;
to = 0;
step = -1;
} else {
i = 0;
to = len - 1;
step = 1;
}
for (; ; i += step) {
if ((step > 0 && i > to) || (step < 0 && i < to)) {
break;
}
node = nodes[i];
tabIndex = node.getAttribute('tabindex') - 0;
if (!(tabIndex < 0)) {
el = asDom ? Ext.fly(node) : Ext.get(node);
if (el.isTabbable()) {
selection.push(asDom ? node : el);
}
}
if (selection.length >= limit) {
return selection;
}
}
return selection;
},
selectFirstTabbableElement: function(asDom, selector) {
var els = this.selectTabbableElements(asDom, selector, 1, false);
return els[0];
},
selectLastTabbableElement: function(asDom, selector) {
var el = this.selectTabbableElements(true, selector, 1, true)[0];
return (asDom !== false) ? el : Ext.get(el);
},
saveTabbableState: function(attribute) {
var tabbableSavedFlagAttribute = Ext.Element.tabbableSavedFlagAttribute,
dom = this.dom;
if (dom.hasAttribute(tabbableSavedFlagAttribute)) {
return;
}
attribute = attribute || Ext.Element.tabbableSavedAttribute;
if (dom.hasAttribute('tabindex')) {
dom.setAttribute(attribute, dom.getAttribute('tabindex'));
} else
{
dom.setAttribute(attribute, 'none');
}
dom.setAttribute('tabindex', -1);
dom.setAttribute(tabbableSavedFlagAttribute, true);
return this;
},
restoreTabbableState: function(attribute) {
var tabbableSavedFlagAttribute = Ext.Element.tabbableSavedFlagAttribute,
dom = this.dom,
idx;
attribute = attribute || Ext.Element.tabbableSavedAttribute;
if (!dom.hasAttribute(tabbableSavedFlagAttribute) || !dom.hasAttribute(attribute)) {
return;
}
idx = dom.getAttribute(attribute);
if (idx === 'none') {
dom.removeAttribute('tabindex');
} else {
dom.setAttribute('tabindex', idx);
}
dom.removeAttribute(attribute);
dom.removeAttribute(tabbableSavedFlagAttribute);
return this;
},
saveChildrenTabbableState: function(attribute) {
var children, child, i, len;
if (this.dom) {
children = this.selectTabbableElements();
for (i = 0 , len = children.length; i < len; i++) {
child = Ext.fly(children[i]);
child.saveTabbableState(attribute);
}
}
return children;
},
restoreChildrenTabbableState: function(attribute, children) {
var child, i, len;
if (this.dom) {
attribute = attribute || Ext.Element.tabbableSavedAttribute;
children = children || this.dom.querySelectorAll('[' + attribute + ']');
for (i = 0 , len = children.length; i < len; i++) {
child = Ext.fly(children[i]);
child.restoreTabbableState(attribute);
}
}
return children;
}
},
deprecated: {
'4.0': {
methods: {
pause: function(ms) {
var me = this;
Ext.fx.Manager.setFxDefaults(me.id, {
delay: ms
});
return me;
},
scale: function(w, h, o) {
this.animate(Ext.apply({}, o, {
width: w,
height: h
}));
return this;
},
shift: function(config) {
this.animate(config);
return this;
}
}
},
'4.2': {
methods: {
moveTo: function(x, y, animate) {
return this.setXY([
x,
y
], animate);
},
setBounds: function(x, y, width, height, animate) {
return this.setBox({
x: x,
y: y,
width: width,
height: height
}, animate);
},
setLeftTop: function(left, top) {
var me = this,
style = me.dom.style;
style.left = Element.addUnits(left);
style.top = Element.addUnits(top);
if (me.shadow || me.shim) {
me.syncUnderlays();
}
return me;
},
setLocation: function(x, y, animate) {
return this.setXY([
x,
y
], animate);
}
}
},
'5.0': {
methods: {
getAttributeNS: function(namespace, name) {
return this.getAttribute(name, namespace);
},
getCenterXY: function() {
return this.getAlignToXY(DOC, 'c-c');
},
getComputedHeight: function() {
return Math.max(this.dom.offsetHeight, this.dom.clientHeight) || parseFloat(this.getStyle(HEIGHT)) || 0;
},
getComputedWidth: function() {
return Math.max(this.dom.offsetWidth, this.dom.clientWidth) || parseFloat(this.getStyle(WIDTH)) || 0;
},
getStyleSize: function() {
var me = this,
d = this.dom,
isDoc = (d === DOC || d === DOC.body),
s, w, h;
if (isDoc) {
return {
width: Element.getViewportWidth(),
height: Element.getViewportHeight()
};
}
s = me.getStyle([
'height',
'width'
], true);
if (s.width && s.width !== 'auto') {
w = parseFloat(s.width);
}
if (s.height && s.height !== 'auto') {
h = parseFloat(s.height);
}
return {
width: w || me.getWidth(true),
height: h || me.getHeight(true)
};
},
isBorderBox: function() {
return true;
},
isDisplayed: function() {
return !this.isStyle('display', 'none');
},
focusable: 'isFocusable'
}
}
}
};
})(), function() {
var Element = Ext.dom.Element,
proto = Element.prototype,
useDocForId = !Ext.isIE8,
DOC = document,
view = DOC.defaultView,
opacityRe = /alpha\(opacity=(.*)\)/i,
trimRe = /^\s+|\s+$/g,
styleHooks = proto.styleHooks,
supports = Ext.supports,
verticalStyleHooks90, verticalStyleHooks270, edges, k, edge, borderWidth, getBorderWidth;
proto._init(Element);
delete proto._init;
Ext.plainTableCls = Ext.baseCSSPrefix + 'table-plain';
Ext.plainListCls = Ext.baseCSSPrefix + 'list-plain';
if (Ext.CompositeElementLite) {
Ext.CompositeElementLite.importElementMethods();
}
styleHooks.opacity = {
name: 'opacity',
afterSet: function(dom, value, el) {
var shadow = el.shadow;
if (shadow) {
shadow.setOpacity(value);
}
}
};
if (!supports.Opacity && Ext.isIE) {
Ext.apply(styleHooks.opacity, {
get: function(dom) {
var filter = dom.style.filter,
match, opacity;
if (filter.match) {
match = filter.match(opacityRe);
if (match) {
opacity = parseFloat(match[1]);
if (!isNaN(opacity)) {
return opacity ? opacity / 100 : 0;
}
}
}
return 1;
},
set: function(dom, value) {
var style = dom.style,
val = style.filter.replace(opacityRe, '').replace(trimRe, '');
style.zoom = 1;
if (typeof (value) === 'number' && value >= 0 && value < 1) {
value *= 100;
style.filter = val + (val.length ? ' ' : '') + 'alpha(opacity=' + value + ')';
} else {
style.filter = val;
}
}
});
}
if (!supports.matchesSelector) {
var simpleSelectorRe = /^([a-z]+|\*)?(?:\.([a-z][a-z\-_0-9]*))?$/i,
dashRe = /\-/g,
fragment,
classMatcher = function(tag, cls) {
var classRe = new RegExp('(?:^|\\s+)' + cls.replace(dashRe, '\\-') + '(?:\\s+|$)');
if (tag && tag !== '*') {
tag = tag.toUpperCase();
return function(el) {
return el.tagName === tag && classRe.test(el.className);
};
}
return function(el) {
return classRe.test(el.className);
};
},
tagMatcher = function(tag) {
tag = tag.toUpperCase();
return function(el) {
return el.tagName === tag;
};
},
cache = {};
proto.matcherCache = cache;
proto.is = function(selector) {
if (!selector) {
return true;
}
var dom = this.dom,
cls, match, testFn, root, isOrphan, is, tag;
if (dom.nodeType !== 1) {
return false;
}
if (!(testFn = Ext.isFunction(selector) ? selector : cache[selector])) {
if (!(match = selector.match(simpleSelectorRe))) {
root = dom.parentNode;
if (!root) {
isOrphan = true;
root = fragment || (fragment = DOC.createDocumentFragment());
fragment.appendChild(dom);
}
is = Ext.Array.indexOf(Ext.fly(root, '_is').query(selector), dom) !== -1;
if (isOrphan) {
fragment.removeChild(dom);
}
return is;
}
tag = match[1];
cls = match[2];
cache[selector] = testFn = cls ? classMatcher(tag, cls) : tagMatcher(tag);
}
return testFn(dom);
};
}
if (!view || !view.getComputedStyle) {
proto.getStyle = function(property, inline) {
var me = this,
dom = me.dom,
multiple = typeof property !== 'string',
prop = property,
props = prop,
len = 1,
isInline = inline,
styleHooks = me.styleHooks,
camel, domStyle, values, hook, out, style, i;
if (multiple) {
values = {};
prop = props[0];
i = 0;
if (!(len = props.length)) {
return values;
}
}
if (!dom || dom.documentElement) {
return values || '';
}
domStyle = dom.style;
if (inline) {
style = domStyle;
} else {
style = dom.currentStyle;
if (!style) {
isInline = true;
style = domStyle;
}
}
do {
hook = styleHooks[prop];
if (!hook) {
styleHooks[prop] = hook = {
name: Element.normalize(prop)
};
}
if (hook.get) {
out = hook.get(dom, me, isInline, style);
} else {
camel = hook.name;
out = style[camel];
}
if (!multiple) {
return out;
}
values[prop] = out;
prop = props[++i];
} while (i < len);
return values;
};
}
if (Ext.isIE8) {
getBorderWidth = function(dom, el, inline, style) {
if (style[this.styleName] === 'none') {
return '0px';
}
return style[this.name];
};
edges = [
'Top',
'Right',
'Bottom',
'Left'
];
k = edges.length;
while (k--) {
edge = edges[k];
borderWidth = 'border' + edge + 'Width';
styleHooks['border-' + edge.toLowerCase() + '-width'] = styleHooks[borderWidth] = {
name: borderWidth,
styleName: 'border' + edge + 'Style',
get: getBorderWidth
};
}
}
Ext.apply(Ext, {
enableGarbageCollector: true,
isBorderBox: true,
useShims: false,
getDetachedBody: function() {
var detachedEl = Ext.detachedBodyEl;
if (!detachedEl) {
detachedEl = DOC.createElement('div');
Ext.detachedBodyEl = detachedEl = new Ext.dom.Fly(detachedEl);
detachedEl.isDetachedBody = true;
}
return detachedEl;
},
getElementById: function(id) {
var el = DOC.getElementById(id),
detachedBodyEl;
if (!el && (detachedBodyEl = Ext.detachedBodyEl)) {
el = detachedBodyEl.dom.querySelector(Ext.makeIdSelector(id));
}
return el;
},
addBehaviors: function(o) {
if (!Ext.isReady) {
Ext.onInternalReady(function() {
Ext.addBehaviors(o);
});
} else {
var cache = {},
parts, b, s;
for (b in o) {
if ((parts = b.split('@'))[1]) {
s = parts[0];
if (!cache[s]) {
cache[s] = Ext.fly(document).select(s, true);
}
cache[s].on(parts[1], o[b]);
}
}
cache = null;
}
}
});
if (Ext.isIE9m) {
Ext.getElementById = function(id) {
var el = DOC.getElementById(id),
detachedBodyEl;
if (!el && (detachedBodyEl = Ext.detachedBodyEl)) {
el = detachedBodyEl.dom.all[id];
}
return el;
};
proto.getById = function(id, asDom) {
var dom = this.dom,
ret = null,
entry, el;
if (dom) {
el = (useDocForId && DOC.getElementById(id)) || dom.all[id];
if (el) {
if (asDom) {
ret = el;
} else {
entry = Ext.cache[id];
if (entry) {
if (entry.skipGarbageCollection || !Ext.isGarbage(entry.dom)) {
ret = entry;
} else {
Ext.Error.raise("Stale Element with id '" + el.id + "' found in Element cache. " + "Make sure to clean up Element instances using destroy()");
entry.destroy();
}
}
ret = ret || new Ext.Element(el);
}
}
}
return ret;
};
} else if (!DOC.querySelector) {
Ext.getDetachedBody = Ext.getBody;
Ext.getElementById = function(id) {
return DOC.getElementById(id);
};
proto.getById = function(id, asDom) {
var dom = DOC.getElementById(id);
return asDom ? dom : (dom ? Ext.get(dom) : null);
};
}
if (Ext.isIE && !(Ext.isIE9p && DOC.documentMode >= 9)) {
proto.getAttribute = function(name, ns) {
var d = this.dom,
type;
if (ns) {
type = typeof d[ns + ":" + name];
if (type !== 'undefined' && type !== 'unknown') {
return d[ns + ":" + name] || null;
}
return null;
}
if (name === "for") {
name = "htmlFor";
}
return d[name] || null;
};
}
Ext.onInternalReady(function() {
var transparentRe = /^(?:transparent|(?:rgba[(](?:\s*\d+\s*[,]){3}\s*0\s*[)]))$/i,
bodyCls = [],
origSetWidth = proto.setWidth,
origSetHeight = proto.setHeight,
origSetSize = proto.setSize,
pxRe = /^\d+(?:\.\d*)?px$/i,
colorStyles, i, name, camel;
if (supports.FixedTableWidthBug) {
styleHooks.width = {
name: 'width',
set: function(dom, value, el) {
var style = dom.style,
needsFix = el._needsTableWidthFix,
origDisplay = style.display;
if (needsFix) {
style.display = 'none';
}
style.width = value;
if (needsFix) {
dom.scrollWidth;
style.display = origDisplay;
}
}
};
proto.setWidth = function(width, animate) {
var me = this,
dom = me.dom,
style = dom.style,
needsFix = me._needsTableWidthFix,
origDisplay = style.display;
if (needsFix && !animate) {
style.display = 'none';
}
origSetWidth.call(me, width, animate);
if (needsFix && !animate) {
dom.scrollWidth;
style.display = origDisplay;
}
return me;
};
proto.setSize = function(width, height, animate) {
var me = this,
dom = me.dom,
style = dom.style,
needsFix = me._needsTableWidthFix,
origDisplay = style.display;
if (needsFix && !animate) {
style.display = 'none';
}
origSetSize.call(me, width, height, animate);
if (needsFix && !animate) {
dom.scrollWidth;
style.display = origDisplay;
}
return me;
};
}
if (Ext.isIE8) {
styleHooks.height = {
name: 'height',
set: function(dom, value, el) {
var component = el.component,
frameInfo, frameBodyStyle;
if (component && component._syncFrameHeight && this === component.el) {
frameBodyStyle = component.frameBody.dom.style;
if (pxRe.test(value)) {
frameInfo = component.getFrameInfo();
if (frameInfo) {
frameBodyStyle.height = (parseInt(value, 10) - frameInfo.height) + 'px';
}
} else if (!value || value === 'auto') {
frameBodyStyle.height = '';
}
}
dom.style.height = value;
}
};
proto.setHeight = function(height, animate) {
var component = this.component,
frameInfo, frameBodyStyle;
if (component && component._syncFrameHeight && this === component.el) {
frameBodyStyle = component.frameBody.dom.style;
if (!height || height === 'auto') {
frameBodyStyle.height = '';
} else {
frameInfo = component.getFrameInfo();
if (frameInfo) {
frameBodyStyle.height = (height - frameInfo.height) + 'px';
}
}
}
return origSetHeight.call(this, height, animate);
};
proto.setSize = function(width, height, animate) {
var component = this.component,
frameInfo, frameBodyStyle;
if (component && component._syncFrameHeight && this === component.el) {
frameBodyStyle = component.frameBody.dom.style;
if (!height || height === 'auto') {
frameBodyStyle.height = '';
} else {
frameInfo = component.getFrameInfo();
if (frameInfo) {
frameBodyStyle.height = (height - frameInfo.height) + 'px';
}
}
}
return origSetSize.call(this, width, height, animate);
};
}
Ext.getDoc().on('selectstart', function(ev, dom) {
var selectableCls = Element.selectableCls,
unselectableCls = Element.unselectableCls,
tagName = dom && dom.tagName;
tagName = tagName && tagName.toLowerCase();
if (tagName === 'input' || tagName === 'textarea') {
return;
}
while (dom && dom.nodeType === 1 && dom !== DOC.documentElement) {
var el = Ext.fly(dom);
if (el.hasCls(selectableCls)) {
return;
}
if (el.hasCls(unselectableCls)) {
ev.stopEvent();
return;
}
dom = dom.parentNode;
}
});
function fixTransparent(dom, el, inline, style) {
var value = style[this.name] || '';
return transparentRe.test(value) ? 'transparent' : value;
}
function makeSelectionRestoreFn(activeEl, start, end) {
return function() {
activeEl.selectionStart = start;
activeEl.selectionEnd = end;
};
}
function getRightMarginFixCleaner(target) {
var hasInputBug = supports.DisplayChangeInputSelectionBug,
hasTextAreaBug = supports.DisplayChangeTextAreaSelectionBug,
activeEl, tag, start, end;
if (hasInputBug || hasTextAreaBug) {
activeEl = Element.getActiveElement();
tag = activeEl && activeEl.tagName;
if ((hasTextAreaBug && tag === 'TEXTAREA') || (hasInputBug && tag === 'INPUT' && activeEl.type === 'text')) {
if (Ext.fly(target).isAncestor(activeEl)) {
start = activeEl.selectionStart;
end = activeEl.selectionEnd;
if (Ext.isNumber(start) && Ext.isNumber(end)) {
return makeSelectionRestoreFn(activeEl, start, end);
}
}
}
}
return Ext.emptyFn;
}
function fixRightMargin(dom, el, inline, style) {
var result = style.marginRight,
domStyle, display;
if (result !== '0px') {
domStyle = dom.style;
display = domStyle.display;
domStyle.display = 'inline-block';
result = (inline ? style : dom.ownerDocument.defaultView.getComputedStyle(dom, null)).marginRight;
domStyle.display = display;
}
return result;
}
function fixRightMarginAndInputFocus(dom, el, inline, style) {
var result = style.marginRight,
domStyle, cleaner, display;
if (result !== '0px') {
domStyle = dom.style;
cleaner = getRightMarginFixCleaner(dom);
display = domStyle.display;
domStyle.display = 'inline-block';
result = (inline ? style : dom.ownerDocument.defaultView.getComputedStyle(dom, '')).marginRight;
domStyle.display = display;
cleaner();
}
return result;
}
if (!supports.RightMargin) {
styleHooks.marginRight = styleHooks['margin-right'] = {
name: 'marginRight',
get: (supports.DisplayChangeInputSelectionBug || supports.DisplayChangeTextAreaSelectionBug) ? fixRightMarginAndInputFocus : fixRightMargin
};
}
if (!supports.TransparentColor) {
colorStyles = [
'background-color',
'border-color',
'color',
'outline-color'
];
for (i = colorStyles.length; i--; ) {
name = colorStyles[i];
camel = Element.normalize(name);
styleHooks[name] = styleHooks[camel] = {
name: camel,
get: fixTransparent
};
}
}
proto.verticalStyleHooks90 = verticalStyleHooks90 = Ext.Object.chain(styleHooks);
proto.verticalStyleHooks270 = verticalStyleHooks270 = Ext.Object.chain(styleHooks);
verticalStyleHooks90.width = styleHooks.height || {
name: 'height'
};
verticalStyleHooks90.height = styleHooks.width || {
name: 'width'
};
verticalStyleHooks90['margin-top'] = {
name: 'marginLeft'
};
verticalStyleHooks90['margin-right'] = {
name: 'marginTop'
};
verticalStyleHooks90['margin-bottom'] = {
name: 'marginRight'
};
verticalStyleHooks90['margin-left'] = {
name: 'marginBottom'
};
verticalStyleHooks90['padding-top'] = {
name: 'paddingLeft'
};
verticalStyleHooks90['padding-right'] = {
name: 'paddingTop'
};
verticalStyleHooks90['padding-bottom'] = {
name: 'paddingRight'
};
verticalStyleHooks90['padding-left'] = {
name: 'paddingBottom'
};
verticalStyleHooks90['border-top'] = {
name: 'borderLeft'
};
verticalStyleHooks90['border-right'] = {
name: 'borderTop'
};
verticalStyleHooks90['border-bottom'] = {
name: 'borderRight'
};
verticalStyleHooks90['border-left'] = {
name: 'borderBottom'
};
verticalStyleHooks270.width = styleHooks.height || {
name: 'height'
};
verticalStyleHooks270.height = styleHooks.width || {
name: 'width'
};
verticalStyleHooks270['margin-top'] = {
name: 'marginRight'
};
verticalStyleHooks270['margin-right'] = {
name: 'marginBottom'
};
verticalStyleHooks270['margin-bottom'] = {
name: 'marginLeft'
};
verticalStyleHooks270['margin-left'] = {
name: 'marginTop'
};
verticalStyleHooks270['padding-top'] = {
name: 'paddingRight'
};
verticalStyleHooks270['padding-right'] = {
name: 'paddingBottom'
};
verticalStyleHooks270['padding-bottom'] = {
name: 'paddingLeft'
};
verticalStyleHooks270['padding-left'] = {
name: 'paddingTop'
};
verticalStyleHooks270['border-top'] = {
name: 'borderRight'
};
verticalStyleHooks270['border-right'] = {
name: 'borderBottom'
};
verticalStyleHooks270['border-bottom'] = {
name: 'borderLeft'
};
verticalStyleHooks270['border-left'] = {
name: 'borderTop'
};
if (!Ext.scopeCss) {
bodyCls.push(Ext.baseCSSPrefix + 'body');
}
if (supports.Touch) {
bodyCls.push(Ext.baseCSSPrefix + 'touch');
}
if (Ext.isIE && Ext.isIE9m) {
bodyCls.push(Ext.baseCSSPrefix + 'ie', Ext.baseCSSPrefix + 'ie9m');
bodyCls.push(Ext.baseCSSPrefix + 'ie8p');
if (Ext.isIE8) {
bodyCls.push(Ext.baseCSSPrefix + 'ie8');
} else {
bodyCls.push(Ext.baseCSSPrefix + 'ie9', Ext.baseCSSPrefix + 'ie9p');
}
if (Ext.isIE8m) {
bodyCls.push(Ext.baseCSSPrefix + 'ie8m');
}
}
if (Ext.isIE10) {
bodyCls.push(Ext.baseCSSPrefix + 'ie10');
}
if (Ext.isIE11) {
bodyCls.push(Ext.baseCSSPrefix + 'ie11');
}
if (Ext.isGecko) {
bodyCls.push(Ext.baseCSSPrefix + 'gecko');
}
if (Ext.isOpera) {
bodyCls.push(Ext.baseCSSPrefix + 'opera');
}
if (Ext.isOpera12m) {
bodyCls.push(Ext.baseCSSPrefix + 'opera12m');
}
if (Ext.isWebKit) {
bodyCls.push(Ext.baseCSSPrefix + 'webkit');
}
if (Ext.isSafari) {
bodyCls.push(Ext.baseCSSPrefix + 'safari');
}
if (Ext.isChrome) {
bodyCls.push(Ext.baseCSSPrefix + 'chrome');
}
if (Ext.isMac) {
bodyCls.push(Ext.baseCSSPrefix + 'mac');
}
if (Ext.isLinux) {
bodyCls.push(Ext.baseCSSPrefix + 'linux');
}
if (!supports.CSS3BorderRadius) {
bodyCls.push(Ext.baseCSSPrefix + 'nbr');
}
if (!supports.CSS3LinearGradient) {
bodyCls.push(Ext.baseCSSPrefix + 'nlg');
}
if (supports.Touch) {
bodyCls.push(Ext.baseCSSPrefix + 'touch');
}
Ext.getBody().addCls(bodyCls);
}, null, {
priority: 1500
});
});
Ext.define('Ext.overrides.GlobalEvents', {
override: 'Ext.GlobalEvents',
attachListeners: function() {
this.callParent();
Ext.getDoc().on('mousedown', this.fireMouseDown, this);
},
fireMouseDown: function(e) {
this.fireEvent('mousedown', e);
},
deprecated: {
5: {
methods: {
addListener: function(ename, fn, scope, options, order, caller, eventOptions) {
var name, readyFn;
if (ename === 'ready') {
readyFn = fn;
} else if (typeof ename !== 'string') {
for (name in ename) {
if (name === 'ready') {
readyFn = ename[name];
}
}
}
if (readyFn) {
Ext.log.warn("Ext.on('ready', fn) is deprecated. Please use Ext.onReady(fn) instead.");
Ext.onReady(readyFn);
}
this.callParent([
ename,
fn,
scope,
options,
order,
caller,
eventOptions
]);
}
}
}
}
});
Ext.define('Ext.overrides.Widget', {
override: 'Ext.Widget',
uses: [
'Ext.Component'
],
$configStrict: false,
isComponent: true,
liquidLayout: true,
rendered: true,
rendering: true,
config: {
renderTo: null
},
cachedConfig: {
baseCls: Ext.baseCSSPrefix + 'widget'
},
constructor: function(config) {
var me = this,
renderTo;
me.callParent([
config
]);
me.getComponentLayout();
renderTo = me.getRenderTo();
if (renderTo) {
me.render(renderTo);
}
},
addCls: function(cls) {
this.el.addCls(cls);
},
addClsWithUI: function(cls) {
this.el.addCls(cls);
},
afterComponentLayout: Ext.emptyFn,
finishRender: function() {
this.rendering = false;
this.initBindable();
},
getComponentLayout: function() {
var me = this,
layout = me.componentLayout;
if (!layout) {
layout = me.componentLayout = new Ext.layout.component.Auto();
layout.setOwner(me);
}
return layout;
},
getTdCls: function() {
return Ext.baseCSSPrefix + this.getTdType() + '-' + (this.ui || 'default') + '-cell';
},
getTdType: function() {
return this.xtype;
},
getItemId: function() {
return this.itemId || this.id;
},
getSizeModel: function() {
return Ext.Component.prototype.getSizeModel.apply(this, arguments);
},
onAdded: function(container, pos, instanced) {
var me = this,
inheritedState = me.inheritedState;
me.ownerCt = container;
if (inheritedState && instanced) {
me.invalidateInheritedState();
}
if (me.reference) {
me.fixReference();
}
},
onRemoved: function(destroying) {
var me = this,
refHolder;
if (me.reference) {
refHolder = me.lookupReferenceHolder();
if (refHolder) {
refHolder.clearReference(me);
}
}
if (!destroying) {
me.removeBindings();
}
if (me.inheritedState && !destroying) {
me.invalidateInheritedState();
}
me.ownerCt = me.ownerLayout = null;
},
parseBox: function(box) {
return Ext.Element.parseBox(box);
},
removeCls: function(cls) {
this.el.removeCls(cls);
},
removeClsWithUI: function(cls) {
this.el.removeCls(cls);
},
render: function(container, position) {
var me = this,
element = me.element,
proto = Ext.Component.prototype,
nextSibling;
if (!me.ownerCt || me.floating) {
if (Ext.scopeCss) {
element.addCls(proto.rootCls);
}
element.addCls(proto.borderBoxCls);
}
if (position) {
nextSibling = container.childNodes[position];
if (nextSibling) {
Ext.fly(container).insertBefore(element, nextSibling);
return;
}
}
Ext.fly(container).appendChild(element);
},
setPosition: function(x, y) {
this.el.setLocalXY(x, y);
},
up: function() {
return Ext.Component.prototype.up.apply(this, arguments);
},
isAncestor: function() {
return Ext.Component.prototype.isAncestor.apply(this, arguments);
},
onFocusEnter: function() {
return Ext.Component.prototype.onFocusEnter.apply(this, arguments);
},
onFocusLeave: function() {
return Ext.Component.prototype.onFocusLeave.apply(this, arguments);
},
focus: Ext.emptyFn,
isFocusable: Ext.emptyFn
}, function(Cls) {
var prototype = Cls.prototype;
if (Ext.isIE8) {
prototype.addElementReferenceOnDemand = prototype.addElementReference;
}
});
Ext.define('Ext.overrides.app.domain.Component', {
override: 'Ext.app.domain.Component',
requires: [
'Ext.Component'
]
}, function(ComponentDomain) {
ComponentDomain.monitor(Ext.Component);
});
Ext.application = function(config) {
var createApp = function(App) {
Ext.onReady(function() {
Ext.app.Application.instance = new App();
});
},
paths = config.paths,
ns;
if (typeof config === "string") {
Ext.require(config, function() {
createApp(Ext.ClassManager.get(config));
});
} else {
config = Ext.apply({
extend: 'Ext.app.Application'
},
config);
Ext.Loader.setPath(config.name, config.appFolder || 'app');
if (paths) {
for (ns in paths) {
if (paths.hasOwnProperty(ns)) {
Ext.Loader.setPath(ns, paths[ns]);
}
}
}
config['paths processed'] = true;
Ext.define(config.name + ".$application", config, function() {
createApp(this);
});
}
};
Ext.define('Ext.overrides.app.Application', {
override: 'Ext.app.Application',
uses: [
'Ext.tip.QuickTipManager'
],
autoCreateViewport: false,
config: {
enableQuickTips: true
},
applyMainView: function(value) {
var view = this.getView(value),
proto = view.prototype,
config, plugins;
if (!proto.isViewport) {
plugins = proto.plugins;
plugins = [
'viewport'
].concat(plugins ? Ext.Array.from(plugins, true) : []);
config = {
plugins: plugins
};
}
return view.create(config);
},
getDependencies: function(cls, data, requires) {
var Controller = Ext.app.Controller,
proto = cls.prototype,
namespace = data.$namespace,
viewportClass = data.autoCreateViewport;
if (viewportClass) {
if (!namespace) {
Ext.Error.raise("[Ext.app.Application] Can't resolve namespace for " + data.$className + ", did you forget to specify 'name' property?");
}
if (viewportClass === true) {
viewportClass = 'Viewport';
} else {
requires.push('Ext.plugin.Viewport');
}
Controller.processDependencies(proto, requires, namespace, 'view', viewportClass);
}
},
onBeforeLaunch: function() {
var me = this,
autoCreateViewport = me.autoCreateViewport;
if (me.getEnableQuickTips()) {
me.initQuickTips();
}
if (autoCreateViewport) {
me.initViewport();
}
this.callParent(arguments);
},
getViewportName: function() {
var name = null,
autoCreate = this.autoCreateViewport;
if (autoCreate) {
name = (autoCreate === true) ? 'Viewport' : autoCreate;
}
return name;
},
initViewport: function() {
this.setMainView(this.getViewportName());
},
initQuickTips: function() {
Ext.tip.QuickTipManager.init();
}
});
Ext.define('Ext.overrides.dom.Helper', (function() {
var tableRe = /^(?:table|thead|tbody|tr|td)$/i,
tableElRe = /td|tr|tbody|thead/i,
ts = '<table>',
te = '</table>',
tbs = ts + '<tbody>',
tbe = '</tbody>' + te,
trs = tbs + '<tr>',
tre = '</tr>' + tbe;
return {
override: 'Ext.dom.Helper',
ieInsertHtml: function(where, el, html) {
var frag = null;
if (Ext.isIE9m && tableRe.test(el.tagName)) {
frag = this.insertIntoTable(el.tagName.toLowerCase(), where, el, html);
}
return frag;
},
ieOverwrite: function(el, html) {
if (Ext.isIE9m && tableRe.test(el.tagName)) {
while (el.firstChild) {
el.removeChild(el.firstChild);
}
if (html) {
return this.insertHtml('afterbegin', el, html);
}
}
},
ieTable: function(depth, openingTags, htmlContent, closingTags) {
var i = -1,
el = this.detachedDiv,
ns, nx;
el.innerHTML = [
openingTags,
htmlContent,
closingTags
].join('');
while (++i < depth) {
el = el.firstChild;
}
ns = el.nextSibling;
if (ns) {
ns = el;
el = document.createDocumentFragment();
while (ns) {
nx = ns.nextSibling;
el.appendChild(ns);
ns = nx;
}
}
return el;
},
insertIntoTable: function(tag, where, destinationEl, html) {
var node, before,
bb = where === 'beforebegin',
ab = where === 'afterbegin',
be = where === 'beforeend',
ae = where === 'afterend';
if (tag === 'td' && (ab || be) || !tableElRe.test(tag) && (bb || ae)) {
return null;
}
before = bb ? destinationEl : ae ? destinationEl.nextSibling : ab ? destinationEl.firstChild : null;
if (bb || ae) {
destinationEl = destinationEl.parentNode;
}
if (tag === 'td' || (tag === 'tr' && (be || ab))) {
node = this.ieTable(4, trs, html, tre);
} else if (((tag === 'tbody' || tag === 'thead') && (be || ab)) || (tag === 'tr' && (bb || ae))) {
node = this.ieTable(3, tbs, html, tbe);
} else {
node = this.ieTable(2, ts, html, te);
}
destinationEl.insertBefore(node, before);
return node;
}
};
})());
Ext.define('Ext.overrides.plugin.Abstract', {
override: 'Ext.plugin.Abstract',
$configStrict: false,
$configPrefixed: false,
disabled: false,
getState: null,
applyState: null,
enable: function() {
this.disabled = false;
},
disable: function() {
this.disabled = true;
}
});