messengercustom-servicesmacoslinuxwindowsinboxwhatsappicloudtweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplaceoutlookemailmicrosoft-teamsdiscord
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.
58 lines
1.4 KiB
58 lines
1.4 KiB
9 years ago
|
/**
|
||
|
* Private utility class that manages the internal cache for {@link Ext.dom.Shadow Underlays}
|
||
|
* and {@link Ext.dom.Shim Shims}.
|
||
|
* @private
|
||
|
*/
|
||
|
Ext.define('Ext.dom.UnderlayPool', {
|
||
|
|
||
|
/**
|
||
|
* @constructor
|
||
|
* @param {Object} elementConfig A {@link Ext.dom.Helper DomHelper} config object to
|
||
|
* use for generating elements in the pool.
|
||
|
*/
|
||
|
constructor: function(elementConfig) {
|
||
|
this.elementConfig = elementConfig;
|
||
|
this.cache = [];
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Checks an element out of the pool.
|
||
|
* @return {Ext.dom.Element}
|
||
|
*/
|
||
|
checkOut: function() {
|
||
|
var el = this.cache.shift();
|
||
|
|
||
|
if (!el) {
|
||
|
el = Ext.Element.create(this.elementConfig);
|
||
|
el.setVisibilityMode(2);
|
||
|
//<debug>
|
||
|
// tell the spec runner to ignore this element when checking if the dom is clean
|
||
|
el.dom.setAttribute('data-sticky', true);
|
||
|
//</debug>
|
||
|
}
|
||
|
|
||
|
return el;
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Checks an element back into the pool for future reuse
|
||
|
* @param {Ext.dom.Element} el
|
||
|
*/
|
||
|
checkIn: function(el) {
|
||
|
this.cache.push(el);
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Reset the pool by emptying the cache and destroying all its elements
|
||
|
*/
|
||
|
reset: function() {
|
||
|
var cache = this.cache,
|
||
|
i = cache.length;
|
||
|
|
||
|
while (i--) {
|
||
|
cache[i].destroy();
|
||
|
}
|
||
|
|
||
|
this.cache = [];
|
||
|
}
|
||
|
});
|