/**
* Private utility class that manages the internal Shadow cache.
* @private
*/
Ext.define('Ext.ShadowPool', {
singleton: true,
requires: ['Ext.DomHelper'],
markup: function() {
if (Ext.supports.CSS3BoxShadow) {
return '<div class="' + Ext.baseCSSPrefix + 'css-shadow" role="presentation"></div>';
} else if (Ext.isIE) {
return '<div class="' + Ext.baseCSSPrefix + 'ie-shadow" role="presentation"></div>';
} else {
return '<div class="' + Ext.baseCSSPrefix + 'frame-shadow" role="presentation">' +
'<div class="xst" role="presentation">' +
'<div class="xstl" role="presentation"></div>' +
'<div class="xstc" role="presentation"></div>' +
'<div class="xstr" role="presentation"></div>' +
'</div>' +
'<div class="xsc" role="presentation">' +
'<div class="xsml" role="presentation"></div>' +
'<div class="xsmc" role="presentation"></div>' +
'<div class="xsmr" role="presentation"></div>' +
'</div>' +
'<div class="xsb" role="presentation">' +
'<div class="xsbl" role="presentation"></div>' +
'<div class="xsbc" role="presentation"></div>' +
'<div class="xsbr" role="presentation"></div>' +
'</div>' +
'</div>';
}
}(),
shadows: [],
pull: function() {
var sh = this.shadows.shift();
if (!sh) {
sh = Ext.get(Ext.DomHelper.insertHtml("beforeBegin", document.body.firstChild, this.markup));
sh.autoBoxAdjust = false;
}
return sh;
},
push: function(sh) {
this.shadows.push(sh);
},
reset: function() {
var shadows = [].concat(this.shadows),
s,
sLen = shadows.length;
for (s = 0; s < sLen; s++) {
shadows[s].remove();
}
this.shadows = [];
}
});