/** * @class Ext.ShadowPool * @extends Object * Private utility class that manages the internal Shadow cache * @private */ Ext.define('Ext.ShadowPool', { singleton: true, requires: ['Ext.core.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.core.DomHelper.insertHtml("beforeBegin", document.body.firstChild, this.markup)); sh.autoBoxAdjust = false; } return sh; }, push: function(sh) { this.shadows.push(sh); }, reset: function() { Ext.Array.each(this.shadows, function(shadow) { shadow.remove(); }); this.shadows = []; } });