X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/3789b528d8dd8aad4558e38e22d775bcab1cbd36..f562e4c6e5fac7bcb445985b99acbea4d706e6f0:/ext-all-debug.js diff --git a/ext-all-debug.js b/ext-all-debug.js index e5db5769..8fc6dc00 100644 --- a/ext-all-debug.js +++ b/ext-all-debug.js @@ -1,15 +1,23 @@ /* -Ext JS - JavaScript Library -Copyright (c) 2006-2011, Sencha Inc. -All rights reserved. -licensing@sencha.com + +This file is part of Ext JS 4 + +Copyright (c) 2011 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. + */ (function() { var global = this, objectPrototype = Object.prototype, - toString = Object.prototype.toString, + toString = objectPrototype.toString, enumerables = true, enumerablesTest = { toString: 1 }, i; @@ -128,13 +136,6 @@ licensing@sencha.com }; } - 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() {}, @@ -228,11 +229,6 @@ licensing@sencha.com return 'object'; } - Ext.Error.raise({ - sourceClass: 'Ext', - sourceMethod: 'typeOf', - msg: 'Failed to determine the type of the specified value "' + value + '". This is most likely a bug.' - }); }, @@ -253,7 +249,8 @@ licensing@sencha.com isObject: (toString.call(null) === '[object Object]') ? function(value) { - return value !== null && value !== undefined && toString.call(value) === '[object Object]' && value.nodeType === undefined; + + return value !== null && value !== undefined && toString.call(value) === '[object Object]' && value.ownerDocument === undefined; } : function(value) { return toString.call(value) === '[object Object]'; @@ -378,7 +375,7 @@ licensing@sencha.com var i = 0; do { - uniqueGlobalNamespace = 'ExtSandbox' + (++i); + uniqueGlobalNamespace = 'ExtBox' + (++i); } while (Ext.global[uniqueGlobalNamespace] !== undefined); Ext.global[uniqueGlobalNamespace] = Ext; @@ -410,7 +407,7 @@ licensing@sencha.com (function() { -var version = '4.0.1', Version; +var version = '4.0.7', Version; Ext.Version = Version = Ext.extend(Object, { @@ -595,7 +592,7 @@ Ext.String = { escapeRegexRe: /([-.*+?^${}()|[\]\/\\])/g, /** - * Convert certain characters (&, <, >, and ') to their HTML character equivalents for literal display in web pages. + * Convert certain characters (&, <, >, and ") to their HTML character equivalents for literal display in web pages. * @param {String} value The string to encode * @return {String} The encoded text * @method @@ -621,7 +618,12 @@ Ext.String = { }; })(), - + /** + * Convert certain characters (&, <, >, and ") from their HTML character equivalents. + * @param {String} value The string to decode + * @return {String} The decoded text + * @method + */ htmlDecode: (function() { var entities = { '&': '&', @@ -712,6 +714,14 @@ Ext.String = { return format.replace(Ext.String.formatRe, function(m, i) { return args[i]; }); + }, + + + repeat: function(pattern, count, sep) { + for (var buf = [], i = count; i--; ) { + buf.push(pattern); + } + return buf.join(sep || ''); } }; @@ -736,6 +746,26 @@ Ext.Number = { }, + snap : function(value, increment, minValue, maxValue) { + var newValue = value, + m; + + if (!(increment && value)) { + return value; + } + m = value % increment; + if (m !== 0) { + newValue -= m; + if (m * 2 >= increment) { + newValue += increment; + } else if (m * 2 < -increment) { + newValue -= increment; + } + } + return Ext.Number.constrain(newValue, minValue, maxValue); + }, + + toFixed: function(value, precision) { if (isToFixedBroken) { precision = precision || 0; @@ -767,6 +797,34 @@ Ext.num = 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; + }(), supportsForEach = 'forEach' in arrayPrototype, supportsMap = 'map' in arrayPrototype, supportsIndexOf = 'indexOf' in arrayPrototype, @@ -779,6 +837,7 @@ Ext.num = function() { }(), supportsSliceOnNodeList = true, ExtArray; + try { if (typeof document !== 'undefined') { @@ -788,6 +847,99 @@ Ext.num = function() { supportsSliceOnNodeList = false; } + function fixArrayIndex (array, index) { + return (index < 0) ? Math.max(0, array.length + index) + : Math.min(array.length, index); + } + + + function replaceSim (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; + } + + function replaceNative (array, index, removeCount, insert) { + if (insert && insert.length) { + 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; + } + + function eraseSim (array, index, removeCount) { + return replaceSim(array, index, removeCount); + } + + function eraseNative (array, index, removeCount) { + array.splice(index, removeCount); + return array; + } + + function spliceSim (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; + } + + function spliceNative (array) { + return array.splice.apply(array, slice.call(arguments, 1)); + } + + var erase = supportsSplice ? eraseNative : eraseSim, + replace = supportsSplice ? replaceNative : replaceSim, + splice = supportsSplice ? spliceNative : spliceSim; + + + ExtArray = Ext.Array = { each: function(array, fn, scope, reverse) { @@ -922,9 +1074,6 @@ Ext.num = function() { every: function(array, fn, scope) { - if (!fn) { - Ext.Error.raise('Ext.Array.every must have a callback function passed as second argument.'); - } if (supportsEvery) { return array.every(fn, scope); } @@ -943,9 +1092,6 @@ Ext.num = function() { some: function(array, fn, scope) { - if (!fn) { - Ext.Error.raise('Ext.Array.some must have a callback function passed as second argument.'); - } if (supportsSome) { return array.some(fn, scope); } @@ -1039,7 +1185,7 @@ Ext.num = function() { var index = ExtArray.indexOf(array, item); if (index !== -1) { - array.splice(index, 1); + erase(array, index, 1); } return array; @@ -1088,8 +1234,8 @@ Ext.num = function() { } } - minArray = Ext.Array.unique(minArray); - arrays.splice(x, 1); + minArray = ExtArray.unique(minArray); + erase(arrays, x, 1); @@ -1123,7 +1269,7 @@ Ext.num = function() { for (i = 0,lnB = arrayB.length; i < lnB; i++) { for (j = 0; j < ln; j++) { if (clone[j] === arrayB[i]) { - clone.splice(j, 1); + erase(clone, j, 1); j--; ln--; } @@ -1134,6 +1280,26 @@ Ext.num = function() { }, + + 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) { if (supportsSort) { if (sortFn) { @@ -1256,48 +1422,61 @@ Ext.num = function() { } return sum; - } + }, + + + erase: erase, + + + insert: function (array, index, items) { + return replace(array, index, 0, items); + }, + + + replace: replace, + + + splice: splice }; - Ext.each = Ext.Array.each; + Ext.each = ExtArray.each; - Ext.Array.union = Ext.Array.merge; + ExtArray.union = ExtArray.merge; - Ext.min = Ext.Array.min; + Ext.min = ExtArray.min; - Ext.max = Ext.Array.max; + Ext.max = ExtArray.max; - Ext.sum = Ext.Array.sum; + Ext.sum = ExtArray.sum; - Ext.mean = Ext.Array.mean; + Ext.mean = ExtArray.mean; - Ext.flatten = Ext.Array.flatten; + Ext.flatten = ExtArray.flatten; - Ext.clean = Ext.Array.clean; + Ext.clean = ExtArray.clean; - Ext.unique = Ext.Array.unique; + Ext.unique = ExtArray.unique; - Ext.pluck = Ext.Array.pluck; + Ext.pluck = ExtArray.pluck; Ext.toArray = function() { return ExtArray.toArray.apply(ExtArray, arguments); - } + }; })(); - Ext.Function = { @@ -1332,22 +1511,27 @@ Ext.Function = { }; }, - + bind: function(fn, scope, args, appendArgs) { + if (arguments.length === 2) { + return function() { + return fn.apply(scope, arguments); + } + } + var method = fn, - applyArgs; + slice = Array.prototype.slice; return function() { var callArgs = args || arguments; if (appendArgs === true) { - callArgs = Array.prototype.slice.call(arguments, 0); + callArgs = slice.call(arguments, 0); callArgs = callArgs.concat(args); } - else if (Ext.isNumber(appendArgs)) { - callArgs = Array.prototype.slice.call(arguments, 0); - applyArgs = [appendArgs, 0].concat(args); - Array.prototype.splice.apply(callArgs, applyArgs); + else if (typeof appendArgs == 'number') { + callArgs = slice.call(arguments, 0); + Ext.Array.insert(callArgs, appendArgs, args); } return method.apply(scope || window, callArgs); @@ -1433,7 +1617,7 @@ Ext.Function = { return function() { var me = this; if (timerId) { - clearInterval(timerId); + clearTimeout(timerId); timerId = null; } timerId = setTimeout(function(){ @@ -1461,6 +1645,28 @@ Ext.Function = { timer = setTimeout(execute, interval - elapsed); } }; + }, + + + interceptBefore: function(object, methodName, fn) { + var method = object[methodName] || Ext.emptyFn; + + return object[methodName] = function() { + var ret = fn.apply(this, arguments); + method.apply(this, arguments); + + return ret; + }; + }, + + + interceptAfter: function(object, methodName, fn) { + var method = object[methodName] || Ext.emptyFn; + + return object[methodName] = function() { + method.apply(this, arguments); + return fn.apply(this, arguments); + }; } }; @@ -1584,15 +1790,6 @@ var ExtObject = Ext.Object = { matchedKeys = name.match(/(\[):?([^\]]*)\]/g); matchedName = name.match(/^([^\[]+)/); - if (!matchedName) { - Ext.Error.raise({ - sourceClass: "Ext.Object", - sourceMethod: "fromQueryString", - queryString: queryString, - recursive: recursive, - msg: 'Malformed query string given, failed parsing name from "' + part + '"' - }); - } name = matchedName[0]; keys = []; @@ -2645,6 +2842,7 @@ var Base = Ext.Base = function() {}; }, + initConfig: function(config) { if (!this.$configInited) { this.config = Ext.Object.merge({}, this.config || {}, config || {}); @@ -2674,6 +2872,7 @@ var Base = Ext.Base = function() {}; return this; }), + callParent: function(args) { @@ -2681,13 +2880,6 @@ var Base = Ext.Base = function() {}; parentClass, methodName; if (!method.$owner) { - if (!method.caller) { - Ext.Error.raise({ - sourceClass: Ext.getClassName(this), - sourceMethod: "callParent", - msg: "Attempting to call a protected method from the public scope, which is not allowed" - }); - } method = method.caller; } @@ -2695,14 +2887,6 @@ var Base = Ext.Base = function() {}; parentClass = method.$owner.superclass; methodName = method.$name; - if (!(methodName in parentClass)) { - Ext.Error.raise({ - sourceClass: Ext.getClassName(this), - sourceMethod: methodName, - msg: "this.callParent() was called but there's no such method (" + methodName + - ") found in the parent class (" + (Ext.getClassName(parentClass) || 'Object') + ")" - }); - } return parentClass[methodName].apply(this, args || []); }, @@ -2724,22 +2908,6 @@ var Base = Ext.Base = function() {}; callOverridden: function(args) { var method = this.callOverridden.caller; - if (!method.$owner) { - Ext.Error.raise({ - sourceClass: Ext.getClassName(this), - sourceMethod: "callOverridden", - msg: "Attempting to call a protected method from the public scope, which is not allowed" - }); - } - - if (!method.$previous) { - Ext.Error.raise({ - sourceClass: Ext.getClassName(this), - sourceMethod: "callOverridden", - msg: "this.callOverridden was called in '" + method.$name + - "' but this method has never been overridden" - }); - } return method.$previous.apply(this, args || []); }, @@ -2755,20 +2923,20 @@ var Base = Ext.Base = function() {}; }, - own: flexSetter(function(name, value) { - if (typeof value === 'function') { + own: function(name, value) { + if (typeof value == 'function') { this.ownMethod(name, value); } else { this.prototype[name] = value; } - }), + }, ownMethod: function(name, fn) { var originalFn; - if (fn.$owner !== undefined && fn !== Ext.emptyFn) { + if (typeof fn.$owner !== 'undefined' && fn !== Ext.emptyFn) { originalFn = fn; fn = function() { @@ -2776,11 +2944,6 @@ var Base = Ext.Base = function() {}; }; } - var className; - className = Ext.getClassName(this); - if (className) { - fn.displayName = className + '#' + name; - } fn.$owner = this; fn.$name = name; @@ -2799,10 +2962,41 @@ var Base = Ext.Base = function() {}; }, + 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 = {}; + } + + + for (name in members) { + if (members.hasOwnProperty(name)) { + member = members[name]; + this[name] = member; + + if (!hasInheritableStatics[name]) { + hasInheritableStatics[name] = true; + inheritableStatics.push(name); + } + } + } + + return this; + }, + + implement: function(members) { var prototype = this.prototype, - name, i, member, previous; - var className = Ext.getClassName(this); + enumerables = Ext.enumerables, + name, i, member; for (name in members) { if (members.hasOwnProperty(name)) { member = members[name]; @@ -2810,18 +3004,13 @@ var Base = Ext.Base = function() {}; if (typeof member === 'function') { member.$owner = this; member.$name = name; - if (className) { - member.displayName = className + '#' + name; - } } prototype[name] = member; } } - if (Ext.enumerables) { - var enumerables = Ext.enumerables; - + if (enumerables) { for (i = enumerables.length; i--;) { name = enumerables[i]; @@ -2854,8 +3043,28 @@ var Base = Ext.Base = function() {}; override: function(members) { var prototype = this.prototype, + enumerables = Ext.enumerables, name, i, member, previous; + if (arguments.length === 2) { + name = members; + member = arguments[1]; + + if (typeof member == 'function') { + if (typeof prototype[name] == 'function') { + previous = prototype[name]; + member.$previous = previous; + } + + this.ownMethod(name, member); + } + else { + prototype[name] = member; + } + + return this; + } + for (name in members) { if (members.hasOwnProperty(name)) { member = members[name]; @@ -2874,14 +3083,12 @@ var Base = Ext.Base = function() {}; } } - if (Ext.enumerables) { - var enumerables = Ext.enumerables; - + if (enumerables) { for (i = enumerables.length; i--;) { name = enumerables[i]; if (members.hasOwnProperty(name)) { - if (prototype[name] !== undefined) { + if (typeof prototype[name] !== 'undefined') { previous = prototype[name]; members[name].$previous = previous; } @@ -2895,40 +3102,53 @@ var Base = Ext.Base = function() {}; }, - mixin: flexSetter(function(name, cls) { + + mixin: function(name, cls) { var mixin = cls.prototype, my = this.prototype, - i, fn; + key, fn; - for (i in mixin) { - if (mixin.hasOwnProperty(i)) { - if (my[i] === undefined) { - if (typeof mixin[i] === 'function') { - fn = mixin[i]; + for (key in mixin) { + if (mixin.hasOwnProperty(key)) { + if (typeof my[key] === 'undefined' && key !== 'mixins' && key !== 'mixinId') { + if (typeof mixin[key] === 'function') { + fn = mixin[key]; - if (fn.$owner === undefined) { - this.ownMethod(i, fn); + if (typeof fn.$owner === 'undefined') { + this.ownMethod(key, fn); } else { - my[i] = fn; + my[key] = fn; } } else { - my[i] = mixin[i]; + my[key] = mixin[key]; } } - else if (i === 'config' && my.config && mixin.config) { + + else if (key === 'config' && my.config && mixin.config) { Ext.Object.merge(my.config, mixin.config); } + } } - if (my.mixins === undefined) { - my.mixins = {}; + if (typeof mixin.onClassMixedIn !== 'undefined') { + mixin.onClassMixedIn.call(cls, this); + } + + if (!my.hasOwnProperty('mixins')) { + if ('mixins' in my) { + my.mixins = Ext.Object.merge({}, my.mixins); + } + else { + my.mixins = {}; + } } my.mixins[name] = mixin; - }), + }, + getName: function() { @@ -2937,7 +3157,9 @@ var Base = Ext.Base = function() {}; createAlias: flexSetter(function(alias, origin) { - this.prototype[alias] = this.prototype[origin]; + this.prototype[alias] = function() { + return this[origin].apply(this, arguments); + } }) }); @@ -2959,7 +3181,7 @@ var Base = Ext.Base = function() {}; Ext.Class = Class = function(newClass, classData, onClassCreated) { - if (typeof newClass !== 'function') { + if (typeof newClass != 'function') { onClassCreated = classData; classData = newClass; newClass = function() { @@ -2975,7 +3197,7 @@ var Base = Ext.Base = function() {}; registeredPreprocessors = Class.getPreprocessors(), index = 0, preprocessors = [], - preprocessor, preprocessors, staticPropertyName, process, i, j, ln; + preprocessor, staticPropertyName, process, i, j, ln; for (i = 0, ln = baseStaticProperties.length; i < ln; i++) { staticPropertyName = baseStaticProperties[i]; @@ -2987,7 +3209,7 @@ var Base = Ext.Base = function() {}; for (j = 0, ln = preprocessorStack.length; j < ln; j++) { preprocessor = preprocessorStack[j]; - if (typeof preprocessor === 'string') { + if (typeof preprocessor == 'string') { preprocessor = registeredPreprocessors[preprocessor]; if (!preprocessor.always) { @@ -3004,7 +3226,7 @@ var Base = Ext.Base = function() {}; } } - classData.onClassCreated = onClassCreated; + classData.onClassCreated = onClassCreated || Ext.emptyFn; classData.onBeforeClassCreated = function(cls, data) { onClassCreated = data.onClassCreated; @@ -3014,9 +3236,7 @@ var Base = Ext.Base = function() {}; cls.implement(data); - if (onClassCreated) { - onClassCreated.call(cls, cls); - } + onClassCreated.call(cls, cls); }; process = function(cls, data) { @@ -3079,7 +3299,7 @@ var Base = Ext.Base = function() {}; var defaultPreprocessors = this.defaultPreprocessors, index; - if (typeof offset === 'string') { + if (typeof offset == 'string') { if (offset === 'first') { defaultPreprocessors.unshift(name); @@ -3097,13 +3317,14 @@ var Base = Ext.Base = function() {}; index = Ext.Array.indexOf(defaultPreprocessors, relativeName); if (index !== -1) { - defaultPreprocessors.splice(Math.max(0, index + offset), 0, name); + Ext.Array.splice(defaultPreprocessors, Math.max(0, index + offset), 0, name); } return this; } }); + Class.registerPreprocessor('extend', function(cls, data) { var extend = data.extend, base = Ext.Base, @@ -3139,6 +3360,7 @@ var Base = Ext.Base = function() {}; delete data.extend; + parentStatics = parentPrototype.$inheritableStatics; if (parentStatics) { @@ -3150,15 +3372,19 @@ var Base = Ext.Base = function() {}; } } } + + if (parentPrototype.config) { clsPrototype.config = Ext.Object.merge({}, parentPrototype.config); } else { clsPrototype.config = {}; } + + if (clsPrototype.$onExtended) { clsPrototype.$onExtended.call(cls, cls, data); } @@ -3167,50 +3393,30 @@ var Base = Ext.Base = function() {}; clsPrototype.$onExtended = data.onClassExtended; delete data.onClassExtended; } + }, true); + + Class.registerPreprocessor('statics', function(cls, data) { - var statics = data.statics, - name; - - for (name in statics) { - if (statics.hasOwnProperty(name)) { - cls[name] = statics[name]; - } - } + cls.addStatics(data.statics); delete data.statics; }); + + + Class.registerPreprocessor('inheritableStatics', function(cls, data) { - var statics = data.inheritableStatics, - inheritableStatics, - prototype = cls.prototype, - name; - - inheritableStatics = prototype.$inheritableStatics; - - if (!inheritableStatics) { - inheritableStatics = prototype.$inheritableStatics = []; - } - - for (name in statics) { - if (statics.hasOwnProperty(name)) { - cls[name] = statics[name]; - inheritableStatics.push(name); - } - } + cls.addInheritableStatics(data.inheritableStatics); delete data.inheritableStatics; }); + - Class.registerPreprocessor('mixins', function(cls, data) { - cls.mixin(data.mixins); - - delete data.mixins; - }); - + + Class.registerPreprocessor('config', function(cls, data) { var prototype = cls.prototype; @@ -3231,7 +3437,7 @@ var Base = Ext.Base = function() {}; data[setter] = function(val) { var ret = this[apply].call(this, val, this[pName]); - if (ret !== undefined) { + if (typeof ret != 'undefined') { this[pName] = ret; } @@ -3249,10 +3455,55 @@ var Base = Ext.Base = function() {}; Ext.Object.merge(prototype.config, data.config); delete data.config; }); + + + + + Class.registerPreprocessor('mixins', function(cls, data) { + var mixins = data.mixins, + name, mixin, i, ln; + + delete data.mixins; + + Ext.Function.interceptBefore(data, 'onClassCreated', function(cls) { + if (mixins instanceof Array) { + for (i = 0,ln = mixins.length; i < ln; i++) { + mixin = mixins[i]; + name = mixin.prototype.mixinId || mixin.$className; + + cls.mixin(name, mixin); + } + } + else { + for (name in mixins) { + if (mixins.hasOwnProperty(name)) { + cls.mixin(name, mixins[name]); + } + } + } + }); + }); - Class.setDefaultPreprocessors(['extend', 'statics', 'inheritableStatics', 'mixins', 'config']); + + + Class.setDefaultPreprocessors([ + 'extend' + + ,'statics' + + + ,'inheritableStatics' + + + ,'config' + + + ,'mixins' + + ]); + Ext.extend = function(subclass, superclass, members) { if (arguments.length === 2 && Ext.isObject(superclass)) { members = superclass; @@ -3267,7 +3518,21 @@ var Base = Ext.Base = function() {}; } members.extend = superclass; - members.preprocessors = ['extend', 'mixins', 'config', 'statics']; + members.preprocessors = [ + 'extend' + + ,'statics' + + + ,'inheritableStatics' + + + ,'mixins' + + + ,'config' + + ]; if (subclass) { cls = new Class(subclass, members); @@ -3286,6 +3551,7 @@ var Base = Ext.Base = function() {}; return cls; }; + })(); @@ -3324,20 +3590,11 @@ var Base = Ext.Base = function() {}; instantiators: [], - - instantiationCounts: {}, isCreated: function(className) { var i, ln, part, root, parts; - if (typeof className !== 'string' || className.length < 1) { - Ext.Error.raise({ - sourceClass: "Ext.ClassManager", - sourceMethod: "exist", - msg: "Invalid classname, must be a string and must not be empty" - }); - } if (this.classes.hasOwnProperty(className) || this.existCache.hasOwnProperty(className)) { return true; @@ -3369,13 +3626,6 @@ var Base = Ext.Base = function() {}; parseNamespace: function(namespace) { - if (typeof namespace !== 'string') { - Ext.Error.raise({ - sourceClass: "Ext.ClassManager", - sourceMethod: "parseNamespace", - msg: "Invalid namespace, must be a string" - }); - } var cache = this.namespaceParseCache; @@ -3422,10 +3672,11 @@ var Base = Ext.Base = function() {}; setNamespace: function(name, value) { var root = Ext.global, parts = this.parseNamespace(name), - leaf = parts.pop(), - i, ln, part; + ln = parts.length - 1, + leaf = parts[ln], + i, part; - for (i = 0, ln = parts.length; i < ln; i++) { + for (i = 0; i < ln; i++) { part = parts[i]; if (typeof part !== 'string') { @@ -3523,10 +3774,6 @@ var Base = Ext.Base = function() {}; } if (alias && aliasToNameMap[alias] !== className) { - if (aliasToNameMap.hasOwnProperty(alias) && Ext.isDefined(Ext.global.console)) { - Ext.global.console.log("[Ext.ClassManager] Overriding existing alias: '" + alias + "' " + - "of: '" + aliasToNameMap[alias] + "' with: '" + className + "'. Be sure it's intentional."); - } aliasToNameMap[alias] = className; } @@ -3576,13 +3823,6 @@ var Base = Ext.Base = function() {}; create: function(className, data, createdFn) { var manager = this; - if (typeof className !== 'string') { - Ext.Error.raise({ - sourceClass: "Ext", - sourceMethod: "define", - msg: "Invalid class name '" + className + "' specified, must be a non-empty string" - }); - } data.$className = className; @@ -3591,7 +3831,7 @@ var Base = Ext.Base = function() {}; registeredPostprocessors = manager.postprocessors, index = 0, postprocessors = [], - postprocessor, postprocessors, process, i, ln; + postprocessor, process, i, ln; delete data.postprocessors; @@ -3648,18 +3888,7 @@ var Base = Ext.Base = function() {}; if (!className) { className = this.maps.aliasToName[alias]; - if (!className) { - Ext.Error.raise({ - sourceClass: "Ext", - sourceMethod: "createByAlias", - msg: "Cannot create an instance of unrecognized alias: " + alias - }); - } - if (Ext.global.console) { - Ext.global.console.warn("[Ext.Loader] Synchronously loading '" + className + "'; consider adding " + - "Ext.require('" + alias + "') above Ext.onReady"); - } Ext.syncRequire(className); } @@ -3677,13 +3906,6 @@ var Base = Ext.Base = function() {}; possibleName, cls; if (typeof name !== 'function') { - if ((typeof name !== 'string' || name.length < 1)) { - Ext.Error.raise({ - sourceClass: "Ext", - sourceMethod: "create", - msg: "Invalid class name or alias '" + name + "' specified, must be a non-empty string" - }); - } cls = this.get(name); } @@ -3715,37 +3937,13 @@ var Base = Ext.Base = function() {}; if (!cls) { - if (Ext.global.console) { - Ext.global.console.warn("[Ext.Loader] Synchronously loading '" + name + "'; consider adding " + - "Ext.require('" + ((possibleName) ? alias : name) + "') above Ext.onReady"); - } Ext.syncRequire(name); cls = this.get(name); } - if (!cls) { - Ext.Error.raise({ - sourceClass: "Ext", - sourceMethod: "create", - msg: "Cannot create an instance of unrecognized class name / alias: " + alias - }); - } - - if (typeof cls !== 'function') { - Ext.Error.raise({ - sourceClass: "Ext", - sourceMethod: "create", - msg: "'" + name + "' is a singleton and cannot be instantiated" - }); - } - - if (!this.instantiationCounts[name]) { - this.instantiationCounts[name] = 0; - } - this.instantiationCounts[name]++; return this.getInstantiator(args.length)(cls, args); }, @@ -3821,7 +4019,7 @@ var Base = Ext.Base = function() {}; index = Ext.Array.indexOf(defaultPostprocessors, relativeName); if (index !== -1) { - defaultPostprocessors.splice(Math.max(0, index + offset), 0, name); + Ext.Array.splice(defaultPostprocessors, Math.max(0, index + offset), 0, name); } return this; @@ -3833,13 +4031,6 @@ var Base = Ext.Base = function() {}; names = [], name, alias, aliases, possibleName, regex, i, ln; - if (typeof expression !== 'string' || expression.length < 1) { - Ext.Error.raise({ - sourceClass: "Ext.ClassManager", - sourceMethod: "getNamesByExpression", - msg: "Expression " + expression + " is invalid, must be a non-empty string" - }); - } if (expression.indexOf('*') !== -1) { expression = expression.replace(/\*/g, '(.*?)'); @@ -3885,46 +4076,30 @@ var Base = Ext.Base = function() {}; } }; + var defaultPostprocessors = Manager.defaultPostprocessors; + + + Manager.registerPostprocessor('alias', function(name, cls, data) { var aliases = data.alias, - widgetPrefix = 'widget.', - i, ln, alias; + i, ln; - if (!(aliases instanceof Array)) { - aliases = [aliases]; - } + delete data.alias; for (i = 0, ln = aliases.length; i < ln; i++) { alias = aliases[i]; - if (typeof alias !== 'string') { - Ext.Error.raise({ - sourceClass: "Ext", - sourceMethod: "define", - msg: "Invalid alias of: '" + alias + "' for class: '" + name + "'; must be a valid string" - }); - } - this.setAlias(cls, alias); } - - - for (i = 0, ln = aliases.length; i < ln; i++) { - alias = aliases[i]; - - if (alias.substring(0, widgetPrefix.length) === widgetPrefix) { - - cls.xtype = cls.$xtype = alias.substring(widgetPrefix.length); - break; - } - } }); + Manager.registerPostprocessor('singleton', function(name, cls, data, fn) { fn.call(this, name, new cls(), data); return false; }); + Manager.registerPostprocessor('alternateClassName', function(name, cls, data) { var alternates = data.alternateClassName, i, ln, alternate; @@ -3936,13 +4111,6 @@ var Base = Ext.Base = function() {}; for (i = 0, ln = alternates.length; i < ln; i++) { alternate = alternates[i]; - if (typeof alternate !== 'string') { - Ext.Error.raise({ - sourceClass: "Ext", - sourceMethod: "define", - msg: "Invalid alternate of: '" + alternate + "' for class: '" + name + "'; must be a valid string" - }); - } this.set(alternate, cls); } @@ -4006,7 +4174,71 @@ var Base = Ext.Base = function() {}; createByAlias: alias(Manager, 'instantiateByAlias'), - define: alias(Manager, 'create'), + + + define: function (className, data, createdFn) { + if (!data.override) { + return Manager.create.apply(Manager, arguments); + } + + var requires = data.requires, + uses = data.uses, + overrideName = className; + + className = data.override; + + + data = Ext.apply({}, data); + delete data.requires; + delete data.uses; + delete data.override; + + + if (typeof requires == 'string') { + requires = [ className, requires ]; + } else if (requires) { + requires = requires.slice(0); + requires.unshift(className); + } else { + requires = [ className ]; + } + + + + + + + + + + + + + + + + return Manager.create(overrideName, { + requires: requires, + uses: uses, + isPartial: true, + constructor: function () { + } + }, function () { + var cls = Manager.get(className); + if (cls.override) { + cls.override(data); + } else { + cls.self.override(data); + } + + if (createdFn) { + + + + createdFn.call(cls); + } + }); + }, getClassName: alias(Manager, 'getName'), @@ -4035,6 +4267,7 @@ var Base = Ext.Base = function() {}; namespace: alias(Manager, 'createNamespaces') }); + Ext.createWidget = Ext.widget; @@ -4043,14 +4276,62 @@ var Base = Ext.Base = function() {}; Class.registerPreprocessor('className', function(cls, data) { if (data.$className) { cls.$className = data.$className; - cls.displayName = cls.$className; } }, true); Class.setDefaultPreprocessorPosition('className', 'first'); -})(Ext.Class, Ext.Function.alias); + Class.registerPreprocessor('xtype', function(cls, data) { + var xtypes = Ext.Array.from(data.xtype), + widgetPrefix = 'widget.', + aliases = Ext.Array.from(data.alias), + i, ln, xtype; + + data.xtype = xtypes[0]; + data.xtypes = xtypes; + aliases = data.alias = Ext.Array.from(data.alias); + + for (i = 0,ln = xtypes.length; i < ln; i++) { + xtype = xtypes[i]; + + + aliases.push(widgetPrefix + xtype); + } + + data.alias = aliases; + }); + + Class.setDefaultPreprocessorPosition('xtype', 'last'); + + Class.registerPreprocessor('alias', function(cls, data) { + var aliases = Ext.Array.from(data.alias), + xtypes = Ext.Array.from(data.xtypes), + widgetPrefix = 'widget.', + widgetPrefixLength = widgetPrefix.length, + i, ln, alias, xtype; + + for (i = 0, ln = aliases.length; i < ln; i++) { + alias = aliases[i]; + + + if (alias.substring(0, widgetPrefixLength) === widgetPrefix) { + xtype = alias.substring(widgetPrefixLength); + Ext.Array.include(xtypes, xtype); + + if (!cls.xtype) { + cls.xtype = data.xtype = xtype; + } + } + } + + data.alias = aliases; + data.xtypes = xtypes; + }); + + Class.setDefaultPreprocessorPosition('alias', 'last'); + +})(Ext.Class, Ext.Function.alias); (function(Manager, Class, flexSetter, alias) { @@ -4210,7 +4491,7 @@ var Base = Ext.Base = function() {}; do { if (Manager.isCreated(requires[j])) { - requires.splice(j, 1); + Ext.Array.erase(requires, j, 1); } else { j++; @@ -4218,7 +4499,7 @@ var Base = Ext.Base = function() {}; } while (j < requires.length); if (item.requires.length === 0) { - this.queue.splice(i, 1); + Ext.Array.erase(this.queue, i, 1); item.callback.call(item.scope); this.refreshQueue(); break; @@ -4466,48 +4747,7 @@ var Base = Ext.Base = function() {}; this.refreshQueue(); } - if (this.numPendingFiles <= 1) { - window.status = "Finished loading all dependencies, onReady fired!"; - } - else { - window.status = "Loading dependencies, " + this.numPendingFiles + " files left..."; - } - if (!this.syncModeEnabled && this.numPendingFiles === 0 && this.isLoading && !this.hasFileLoadError) { - var queue = this.queue, - requires, - i, ln, j, subLn, missingClasses = [], missingPaths = []; - - for (i = 0, ln = queue.length; i < ln; i++) { - requires = queue[i].requires; - - for (j = 0, subLn = requires.length; j < ln; j++) { - if (this.isFileLoaded[requires[j]]) { - missingClasses.push(requires[j]); - } - } - } - - if (missingClasses.length < 1) { - return; - } - - missingClasses = Ext.Array.filter(missingClasses, function(item) { - return !this.requiresMap.hasOwnProperty(item); - }, this); - - for (i = 0,ln = missingClasses.length; i < ln; i++) { - missingPaths.push(this.classNameToFilePathMap[missingClasses[i]]); - } - - Ext.Error.raise({ - sourceClass: "Ext.Loader", - sourceMethod: "onFileLoaded", - msg: "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("', '") + "'" - }); - } }, @@ -4515,13 +4755,6 @@ var Base = Ext.Base = function() {}; this.numPendingFiles--; this.hasFileLoadError = true; - Ext.Error.raise({ - sourceClass: "Ext.Loader", - classToLoad: className, - loadPath: filePath, - loadingType: isSynchronous ? 'synchronous' : 'async', - msg: errorMessage - }); }, @@ -4619,6 +4852,7 @@ var Base = Ext.Base = function() {}; Loader.onReady(fn, scope, true, options); }; + Class.registerPreprocessor('loader', function(cls, data, continueFn) { var me = this, dependencies = [], @@ -4645,7 +4879,7 @@ var Base = Ext.Base = function() {}; } } } - else { + else if (typeof propertyValue != 'function') { for (j in propertyValue) { if (propertyValue.hasOwnProperty(j)) { value = propertyValue[j]; @@ -4664,37 +4898,6 @@ var Base = Ext.Base = function() {}; return; } - var deadlockPath = [], - requiresMap = Loader.requiresMap, - detectDeadlock; - - - - if (className) { - requiresMap[className] = dependencies; - - detectDeadlock = function(cls) { - deadlockPath.push(cls); - - if (requiresMap[cls]) { - if (Ext.Array.contains(requiresMap[cls], className)) { - Ext.Error.raise({ - sourceClass: "Ext.Loader", - msg: "Deadlock detected while loading dependencies! '" + 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); - } - Loader.require(dependencies, function() { for (i = 0, ln = dependencyProperties.length; i < ln; i++) { @@ -4715,7 +4918,7 @@ var Base = Ext.Base = function() {}; } } } - else { + else if (typeof propertyValue != 'function') { for (var k in propertyValue) { if (propertyValue.hasOwnProperty(k)) { value = propertyValue[k]; @@ -4737,6 +4940,7 @@ var Base = Ext.Base = function() {}; Class.setDefaultPreprocessorPosition('loader', 'after', 'className'); + Manager.registerPostprocessor('uses', function(name, cls, data) { var uses = Ext.Array.from(data.uses), items = [], @@ -4833,73 +5037,6 @@ Ext.Error = Ext.extend(Error, { }); -(function () { - var prevOnError, timer, errors = 0, - extraordinarilyBad = /(out of stack)|(too much recursion)|(stack overflow)|(out of memory)/i, - win = Ext.global; - - if (typeof window === 'undefined') { - return; - } - - - function notify () { - var counters = Ext.log.counters, - supports = Ext.supports, - hasOnError = supports && supports.WindowOnError; - - - if (counters && (counters.error + counters.warn + counters.info + counters.log)) { - var msg = [ 'Logged Errors:',counters.error, 'Warnings:',counters.warn, - 'Info:',counters.info, 'Log:',counters.log].join(' '); - if (errors) { - msg = '*** Errors: ' + errors + ' - ' + msg; - } else if (counters.error) { - msg = '*** ' + msg; - } - win.status = msg; - } - - - if (!Ext.isDefined(Ext.Error.notify)) { - Ext.Error.notify = Ext.isIE6 || Ext.isIE7; - } - if (Ext.Error.notify && (hasOnError ? errors : (counters && counters.error))) { - Ext.Error.notify = false; - - if (timer) { - win.clearInterval(timer); - timer = null; - } - - alert('Unhandled error on page: See console or log'); - poll(); - } - } - - - - - function poll () { - timer = win.setInterval(notify, 1000); - } - - - - prevOnError = win.onerror || Ext.emptyFn; - win.onerror = function (message) { - ++errors; - - if (!extraordinarilyBad.test(message)) { - - - notify(); - } - - return prevOnError.apply(this, arguments); - }; - poll(); -})(); @@ -4990,7 +5127,7 @@ Ext.JSON = new(function() { this.encodeDate = function(o) { - return '"' + o.getFullYear() + "-" + return '"' + o.getFullYear() + "-" + pad(o.getMonth() + 1) + "-" + pad(o.getDate()) + "T" + pad(o.getHours()) + ":" @@ -5028,7 +5165,7 @@ Ext.JSON = new(function() { Ext.Error.raise({ sourceClass: "Ext.JSON", sourceMethod: "decode", - msg: "You're trying to decode and invalid JSON String: " + json + msg: "You're trying to decode an invalid JSON String: " + json }); } }; @@ -5046,8 +5183,6 @@ Ext.apply(Ext, { userAgent: navigator.userAgent.toLowerCase(), cache: {}, idSeed: 1000, - BLANK_IMAGE_URL : 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', - isStrict: document.compatMode == "CSS1Compat", windowId: 'ext-window', documentId: 'ext-document', @@ -5062,15 +5197,23 @@ Ext.apply(Ext, { id: function(el, prefix) { + var me = this, + sandboxPrefix = ''; el = Ext.getDom(el, true) || {}; if (el === document) { - el.id = this.documentId; + el.id = me.documentId; } else if (el === window) { - el.id = this.windowId; + el.id = me.windowId; } if (!el.id) { - el.id = (prefix || "ext-gen") + (++Ext.idSeed); + if (me.isSandboxed) { + if (!me.uniqueGlobalNamespace) { + me.getUniqueGlobalNamespace(); + } + sandboxPrefix = me.uniqueGlobalNamespace + '-'; + } + el.id = sandboxPrefix + (prefix || "ext-gen") + (++Ext.idSeed); } return el.id; }, @@ -5169,9 +5312,15 @@ window.undefined = window.undefined; (function(){ + var check = function(regex){ return regex.test(Ext.userAgent); }, + isStrict = document.compatMode == "CSS1Compat", + version = function (is, regex) { + var m; + return (is && (m = regex.exec(Ext.userAgent))) ? parseFloat(m[1]) : 0; + }, docMode = document.documentMode, isOpera = check(/opera/), isOpera10_5 = isOpera && check(/version\/10\.5/), @@ -5181,6 +5330,7 @@ window.undefined = window.undefined; isSafari2 = isSafari && check(/applewebkit\/4/), isSafari3 = isSafari && check(/version\/3/), isSafari4 = isSafari && check(/version\/4/), + isSafari5 = isSafari && check(/version\/5/), isIE = !isOpera && check(/msie/), isIE7 = isIE && (check(/msie 7/) || docMode == 7), isIE8 = isIE && (check(/msie 8/) && docMode != 7 && docMode != 9 || docMode == 8), @@ -5189,24 +5339,32 @@ window.undefined = window.undefined; isGecko = !isWebKit && check(/gecko/), isGecko3 = isGecko && check(/rv:1\.9/), isGecko4 = isGecko && check(/rv:2\.0/), + isGecko5 = isGecko && check(/rv:5\./), isFF3_0 = isGecko3 && check(/rv:1\.9\.0/), isFF3_5 = isGecko3 && check(/rv:1\.9\.1/), isFF3_6 = isGecko3 && check(/rv:1\.9\.2/), isWindows = check(/windows|win32/), isMac = check(/macintosh|mac os x/), isLinux = check(/linux/), - scrollWidth = null, - webKitVersion = isWebKit && (/webkit\/(\d+\.\d+)/.exec(Ext.userAgent)); + scrollbarSize = null, + chromeVersion = version(true, /\bchrome\/(\d+\.\d+)/), + firefoxVersion = version(true, /\bfirefox\/(\d+\.\d+)/), + ieVersion = version(isIE, /msie (\d+\.\d+)/), + operaVersion = version(isOpera, /version\/(\d+\.\d+)/), + safariVersion = version(isSafari, /version\/(\d+\.\d+)/), + webKitVersion = version(isWebKit, /webkit\/(\d+\.\d+)/), + isSecure = /^https/i.test(window.location.protocol); try { document.execCommand("BackgroundImageCache", false, true); } catch(e) {} - Ext.setVersion('extjs', '4.0.1'); + + Ext.setVersion('extjs', '4.0.7'); Ext.apply(Ext, { - SSL_SECURE_URL : Ext.isSecure && isIE ? 'javascript:""' : 'about:blank', + SSL_SECURE_URL : isSecure && isIE ? 'javascript:""' : 'about:blank', @@ -5265,6 +5423,10 @@ window.undefined = window.undefined; } }, + isStrict: isStrict, + + isIEQuirks: isIE && !isStrict, + isOpera : isOpera, @@ -5287,6 +5449,9 @@ window.undefined = window.undefined; isSafari4 : isSafari4, + isSafari5 : isSafari5, + + isSafari2 : isSafari2, @@ -5314,15 +5479,24 @@ window.undefined = window.undefined; isGecko4 : isGecko4, + isGecko5 : isGecko5, - isFF3_0 : isFF3_0, + isFF3_0 : isFF3_0, + isFF3_5 : isFF3_5, + isFF3_6 : isFF3_6, + isFF4 : 4 <= firefoxVersion && firefoxVersion < 5, + + + isFF5 : 5 <= firefoxVersion && firefoxVersion < 6, + + isLinux : isLinux, @@ -5332,10 +5506,28 @@ window.undefined = window.undefined; isMac : isMac, - webKitVersion: webKitVersion ? parseFloat(webKitVersion[1]) : -1, + chromeVersion: chromeVersion, + + + firefoxVersion: firefoxVersion, + + + ieVersion: ieVersion, + + + operaVersion: operaVersion, + + + safariVersion: safariVersion, + + + webKitVersion: webKitVersion, - BLANK_IMAGE_URL : (isIE6 || isIE7) ? 'http:/' + '/www.sencha.com/s.gif' : 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', + isSecure: isSecure, + + + BLANK_IMAGE_URL : (isIE6 || isIE7) ? '/' + '/www.sencha.com/s.gif' : 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', value : function(v, defaultValue, allowBlank){ @@ -5372,27 +5564,37 @@ window.undefined = window.undefined; }, - getScrollBarWidth: function(force){ + getScrollbarSize: function (force) { if(!Ext.isReady){ return 0; } - if(force === true || scrollWidth === null){ + if(force === true || scrollbarSize === null){ - var cssClass = Ext.isIE9 ? '' : Ext.baseCSSPrefix + 'hide-offsets'; + var cssClass = Ext.isIE9 ? '' : Ext.baseCSSPrefix + 'hide-offsets', - var div = Ext.getBody().createChild('
'), - child = div.child('div', true); - var w1 = child.offsetWidth; + div = Ext.getBody().createChild(' '), + child = div.child('div', true), + w1 = child.offsetWidth; + div.setStyle('overflow', (Ext.isWebKit || Ext.isGecko) ? 'auto' : 'scroll'); - var w2 = child.offsetWidth; + + var w2 = child.offsetWidth, width = w1 - w2; div.remove(); + - scrollWidth = w1 - w2 + 2; + scrollbarSize = { width: width, height: width }; } - return scrollWidth; + + return scrollbarSize; + }, + + + getScrollBarWidth: function(force){ + var size = Ext.getScrollbarSize(force); + return size.width + 2; }, @@ -5409,7 +5611,7 @@ window.undefined = window.undefined; }, - destroyMembers : function(o, arg1, arg2, etc){ + destroyMembers : function(o){ for (var i = 1, a = arguments, len = a.length; i < len; i++) { Ext.destroy(o[a[i]]); delete o[a[i]]; @@ -5417,106 +5619,8 @@ window.undefined = window.undefined; }, - log : function (message) { - var options, dump, - con = Ext.global.console, - log = Ext.log, - level = 'log', - stack, - members, - member; - - if (!Ext.isString(message)) { - options = message; - message = options.msg || ''; - level = options.level || level; - dump = options.dump; - stack = options.stack; - - if (dump && !(con && con.dir)) { - members = []; - - - - Ext.Object.each(dump, function (name, value) { - if (typeof(value) === "function") { - return; - } - - if (!Ext.isDefined(value) || value === null || - Ext.isDate(value) || - Ext.isString(value) || (typeof(value) == "number") || - Ext.isBoolean(value)) { - member = Ext.encode(value); - } else if (Ext.isArray(value)) { - member = '[ ]'; - } else if (Ext.isObject(value)) { - member = '{ }'; - } else { - member = 'undefined'; - } - members.push(Ext.encode(name) + ': ' + member); - }); - - if (members.length) { - message += ' \nData: {\n ' + members.join(',\n ') + '\n}'; - } - dump = null; - } - } - - if (arguments.length > 1) { - message += Array.prototype.slice.call(arguments, 1).join(''); - } - - - - - 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 (level != 'log') { - message = level.toUpperCase() + ': ' + message; - } - - if (Ext.isOpera) { - opera.postError(message); - } else { - var out = log.out || (log.out = []), - max = log.max || (log.max = 100); - - if (out.length >= max) { - - - out.splice(0, out.length - 3 * Math.floor(max / 4)); - } - - out.push(message); - } - } - - - var counters = log.counters || - (log.counters = { error: 0, warn: 0, info: 0, log: 0 }); - - ++counters[level]; - }, + log : + Ext.emptyFn, partition : function(arr, truth){ @@ -5668,7 +5772,7 @@ Ext.application = function(config) { for (; i < decimals; i++) { format += '0'; } - v = UtilFormat.number(v, format); + v = UtilFormat.number(v, format); if ((end || UtilFormat.currencyAtEnd) === true) { return Ext.String.format("{0}{1}{2}", negativeSign, v, currencySign || UtilFormat.currencySign); } else { @@ -5738,8 +5842,7 @@ Ext.application = function(config) { }, - number: - function(v, formatString) { + number: function(v, formatString) { if (!formatString) { return v; } @@ -5776,13 +5879,6 @@ Ext.application = function(config) { if (1 < psplit.length) { v = v.toFixed(psplit[1].length); } else if(2 < psplit.length) { - Ext.Error.raise({ - sourceClass: "Ext.util.Format", - sourceMethod: "number", - value: v, - formatString: formatString, - msg: "Invalid number format, should have no more than 1 decimal" - }); } else { v = v.toFixed(0); } @@ -5817,6 +5913,11 @@ Ext.application = function(config) { } } + if (neg) { + + neg = fnum.replace(/[^1-9]/g, '') !== ''; + } + return (neg ? '-' : '') + formatString.replace(/[\d,?\.?]+/, fnum); }, @@ -6411,7 +6512,7 @@ Ext.supports = { Ext.ns('Ext.core'); -Ext.core.DomHelper = function(){ +Ext.core.DomHelper = Ext.DomHelper = function(){ var tempTableEl = null, emptyTags = /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i, tableRe = /^table|tbody|tr|td$/i, @@ -6443,11 +6544,11 @@ Ext.core.DomHelper = function(){ (sibling == 'firstChild' ? el : el.parentNode).insertBefore(newNode, el[sibling] || el); } } else { - newNode = Ext.core.DomHelper.insertHtml(pos, el, Ext.core.DomHelper.createHtml(o)); + newNode = Ext.DomHelper.insertHtml(pos, el, Ext.DomHelper.createHtml(o)); } return returnElement ? Ext.get(newNode, true) : newNode; } - + function createDom(o, parentNode){ var el, doc = document, @@ -6480,7 +6581,7 @@ Ext.core.DomHelper = function(){ } } } - Ext.core.DomHelper.applyStyles(el, o.style); + Ext.DomHelper.applyStyles(el, o.style); if ((cn = o.children || o.cn)) { createDom(cn, el); @@ -6595,14 +6696,14 @@ Ext.core.DomHelper = function(){ el.insertBefore(node, before); return node; } + - function createContextualFragment(html){ var div = document.createElement("div"), fragment = document.createDocumentFragment(), i = 0, length, childNodes; - + div.innerHTML = html; childNodes = div.childNodes; length = childNodes.length; @@ -6613,7 +6714,7 @@ Ext.core.DomHelper = function(){ return fragment; } - + pub = { markup : function(o){ @@ -6628,7 +6729,7 @@ Ext.core.DomHelper = function(){ styles = styles.call(); } if (typeof styles == "string") { - styles = Ext.core.Element.parseStyles(styles); + styles = Ext.Element.parseStyles(styles); } if (typeof styles == "object") { el.setStyle(styles); @@ -6650,13 +6751,13 @@ Ext.core.DomHelper = function(){ hash[beforebegin] = ['BeforeBegin', 'previousSibling']; hash[afterend] = ['AfterEnd', 'nextSibling']; - + if (el.insertAdjacentHTML) { if(tableRe.test(el.tagName) && (rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html))){ return rs; } - + hash[afterbegin] = ['AfterBegin', 'firstChild']; hash[beforeend] = ['BeforeEnd', 'lastChild']; @@ -6668,7 +6769,7 @@ Ext.core.DomHelper = function(){ } else { if (Ext.isTextNode(el)) { - where = where === 'afterbegin' ? 'beforebegin' : where; + where = where === 'afterbegin' ? 'beforebegin' : where; where = where === 'beforeend' ? 'afterend' : where; } range = Ext.supports.CreateContextualFragment ? el.ownerDocument.createRange() : undefined; @@ -6691,7 +6792,7 @@ Ext.core.DomHelper = function(){ } else { frag = createContextualFragment(html); } - + if(where == afterbegin){ el.insertBefore(frag, el.firstChild); }else{ @@ -6703,13 +6804,6 @@ Ext.core.DomHelper = function(){ return el[rangeEl]; } } - Ext.Error.raise({ - sourceClass: 'Ext.core.DomHelper', - sourceMethod: 'insertHtml', - htmlToInsert: html, - targetElement: el, - msg: 'Illegal insertion point reached: "' + where + '"' - }); }, @@ -6740,16 +6834,16 @@ Ext.core.DomHelper = function(){ }, createHtml : createHtml, - + createDom: createDom, - + useDom : false, - + createTemplate : function(o){ - var html = Ext.core.DomHelper.createHtml(o); + var html = Ext.DomHelper.createHtml(o); return Ext.create('Ext.Template', html); } }; @@ -6771,6 +6865,7 @@ Ext.core.DomQuery = Ext.DomQuery = function(){ tagTokenRe = /^(#)?([\w-\*]+)/, nthRe = /(\d*)n\+?(\d*)/, nthRe2 = /\D/, + startIdRe = /^\s*\#/, @@ -7188,11 +7283,6 @@ Ext.core.DomQuery = Ext.DomQuery = function(){ } if(!matched){ - Ext.Error.raise({ - sourceClass: 'Ext.DomQuery', - sourceMethod: 'compile', - msg: 'Error parsing selector. Parsing failed at "' + path + '"' - }); } } if(modeMatch[1]){ @@ -7226,11 +7316,6 @@ Ext.core.DomQuery = Ext.DomQuery = function(){ if(!cache[subPath]){ cache[subPath] = Ext.DomQuery.compile(subPath); if(!cache[subPath]){ - Ext.Error.raise({ - sourceClass: 'Ext.DomQuery', - sourceMethod: 'jsSelect', - msg: subPath + ' is not a valid selector' - }); } } var result = cache[subPath](root); @@ -7255,12 +7340,22 @@ Ext.core.DomQuery = Ext.DomQuery = function(){ select : document.querySelectorAll ? function(path, root, type) { root = root || document; - if (!Ext.DomQuery.isXml(root)) { - try { - var cs = root.querySelectorAll(path); - return Ext.Array.toArray(cs); - } - catch (ex) {} + + if (!Ext.DomQuery.isXml(root) && !(Ext.isSafari3 && !Ext.isStrict)) { + try { + + var isDocumentRoot = root.nodeType === 9, + _path = path, + _root = root; + + if (!isDocumentRoot && path.indexOf(',') === -1 && !startIdRe.test(path)) { + _path = '#' + Ext.id(root) + ' ' + path; + _root = root.parentNode; + } + return Ext.Array.toArray(_root.querySelectorAll(_path)); + } + catch (e) { + } } return Ext.DomQuery.jsSelect.call(this, path, root, type); } : function(path, root, type) { @@ -7579,8 +7674,8 @@ Ext.query = Ext.DomQuery.select; this.id = id || Ext.id(dom); }; - var DH = Ext.core.DomHelper, - El = Ext.core.Element; + var DH = Ext.DomHelper, + El = Ext.Element; El.prototype = { @@ -7727,15 +7822,12 @@ Ext.query = Ext.DomQuery.select; } - if (size === "" || size == "auto" || size === undefined || size === null) { + if (size === "" || size == "auto" || size == null) { return size || ''; } if (!unitPattern.test(size)) { - if (Ext.isDefined(Ext.global.console)) { - Ext.global.console.warn("Warning, size detected as NaN on Element.addUnits."); - } return size || ''; } return size; @@ -7767,7 +7859,7 @@ Ext.query = Ext.DomQuery.select; contains: function(el) { - return ! el ? false: Ext.core.Element.isAncestor(this.dom, el.dom ? el.dom: el); + return ! el ? false: Ext.Element.isAncestor(this.dom, el.dom ? el.dom: el); }, @@ -7894,6 +7986,31 @@ Ext.query = Ext.DomQuery.select; return null; }; + + ep.getById = (!Ext.isIE6 && !Ext.isIE7 && !Ext.isIE8) ? El.get : + function (id) { + var dom = this.dom, + cached, el, ret; + + if (dom) { + el = dom.all[id]; + if (el) { + + + cached = EC[id]; + if (cached && cached.el) { + ret = cached.el; + ret.dom = el; + } else { + ret = El.addToCache(new El(el)); + } + return ret; + } + } + + return El.get(id); + }; + El.addToCache = function(el, id) { if (el) { id = id || el.id; @@ -8025,7 +8142,7 @@ Ext.query = Ext.DomQuery.select; })(); -Ext.core.Element.addMethods({ +Ext.Element.addMethods({ findParent : function(simpleSelector, maxDepth, returnEl) { var p = this.dom, @@ -8047,7 +8164,7 @@ Ext.core.Element.addMethods({ } return null; }, - + findParentNode : function(simpleSelector, maxDepth, returnEl) { var p = Ext.fly(this.dom.parentNode, '_internal'); @@ -8061,7 +8178,7 @@ Ext.core.Element.addMethods({ select : function(selector) { - return Ext.core.Element.select(selector, false, this.dom); + return Ext.Element.select(selector, false, this.dom); }, @@ -8117,7 +8234,7 @@ Ext.core.Element.addMethods({ if (!this.dom) { return null; } - + var n = this.dom[start]; while (n) { if (n.nodeType == 1 && (!selector || Ext.DomQuery.is(n, selector))) { @@ -8130,7 +8247,7 @@ Ext.core.Element.addMethods({ }); -Ext.core.Element.addMethods({ +Ext.Element.addMethods({ appendChild : function(el) { return Ext.get(el).appendTo(this); @@ -8195,9 +8312,9 @@ Ext.core.Element.addMethods({ } }else{ if (isAfter && !me.dom.nextSibling) { - rt = Ext.core.DomHelper.append(me.dom.parentNode, el, !returnDom); + rt = Ext.DomHelper.append(me.dom.parentNode, el, !returnDom); } else { - rt = Ext.core.DomHelper[isAfter ? 'insertAfter' : 'insertBefore'](me.dom, el, !returnDom); + rt = Ext.DomHelper[isAfter ? 'insertAfter' : 'insertBefore'](me.dom, el, !returnDom); } } return rt; @@ -8219,13 +8336,13 @@ Ext.core.Element.addMethods({ el = Ext.get(el); me.dom.parentNode.insertBefore(el, me.dom); }else{ - el = Ext.core.DomHelper.insertBefore(me.dom, el); + el = Ext.DomHelper.insertBefore(me.dom, el); } delete Ext.cache[me.id]; Ext.removeNode(me.dom); me.id = Ext.id(me.dom = el); - Ext.core.Element.addToCache(me.isFlyweight ? new Ext.core.Element(me.dom) : me); + Ext.Element.addToCache(me.isFlyweight ? new Ext.Element(me.dom) : me); return me; }, @@ -8233,16 +8350,16 @@ Ext.core.Element.addMethods({ createChild : function(config, insertBefore, returnDom) { config = config || {tag:'div'}; if (insertBefore) { - return Ext.core.DomHelper.insertBefore(insertBefore, config, returnDom !== true); + return Ext.DomHelper.insertBefore(insertBefore, config, returnDom !== true); } else { - return Ext.core.DomHelper[!this.dom.firstChild ? 'insertFirst' : 'append'](this.dom, config, returnDom !== true); + return Ext.DomHelper[!this.dom.firstChild ? 'insertFirst' : 'append'](this.dom, config, returnDom !== true); } }, wrap : function(config, returnDom) { - var newEl = Ext.core.DomHelper.insertBefore(this.dom, config || {tag: "div"}, !returnDom), + var newEl = Ext.DomHelper.insertBefore(this.dom, config || {tag: "div"}, !returnDom), d = newEl.dom || newEl; d.appendChild(this.dom); @@ -8251,16 +8368,16 @@ Ext.core.Element.addMethods({ insertHtml : function(where, html, returnEl) { - var el = Ext.core.DomHelper.insertHtml(where, this.dom, html); + var el = Ext.DomHelper.insertHtml(where, this.dom, html); return returnEl ? Ext.get(el) : el; } }); (function(){ - Ext.core.Element.boxMarkup = '