| import { extend } from '../core/util.js'; | 
| var DebugRect = (function () { | 
|     function DebugRect(style) { | 
|         var dom = this.dom = document.createElement('div'); | 
|         dom.className = 'ec-debug-dirty-rect'; | 
|         style = extend({}, style); | 
|         extend(style, { | 
|             backgroundColor: 'rgba(0, 0, 255, 0.2)', | 
|             border: '1px solid #00f' | 
|         }); | 
|         dom.style.cssText = "\nposition: absolute;\nopacity: 0;\ntransition: opacity 0.5s linear;\npointer-events: none;\n"; | 
|         for (var key in style) { | 
|             if (style.hasOwnProperty(key)) { | 
|                 dom.style[key] = style[key]; | 
|             } | 
|         } | 
|     } | 
|     DebugRect.prototype.update = function (rect) { | 
|         var domStyle = this.dom.style; | 
|         domStyle.width = rect.width + 'px'; | 
|         domStyle.height = rect.height + 'px'; | 
|         domStyle.left = rect.x + 'px'; | 
|         domStyle.top = rect.y + 'px'; | 
|     }; | 
|     DebugRect.prototype.hide = function () { | 
|         this.dom.style.opacity = '0'; | 
|     }; | 
|     DebugRect.prototype.show = function (autoHideDelay) { | 
|         var _this = this; | 
|         clearTimeout(this._hideTimeout); | 
|         this.dom.style.opacity = '1'; | 
|         this._hideTimeout = setTimeout(function () { | 
|             _this.hide(); | 
|         }, autoHideDelay || 1000); | 
|     }; | 
|     return DebugRect; | 
| }()); | 
| export default function showDebugDirtyRect(zr, opts) { | 
|     opts = opts || {}; | 
|     var painter = zr.painter; | 
|     if (!painter.getLayers) { | 
|         throw new Error('Debug dirty rect can only been used on canvas renderer.'); | 
|     } | 
|     if (painter.isSingleCanvas()) { | 
|         throw new Error('Debug dirty rect can only been used on zrender inited with container.'); | 
|     } | 
|     var debugViewRoot = document.createElement('div'); | 
|     debugViewRoot.style.cssText = "\nposition:absolute;\nleft:0;\ntop:0;\nright:0;\nbottom:0;\npointer-events:none;\n"; | 
|     debugViewRoot.className = 'ec-debug-dirty-rect-container'; | 
|     var debugRects = []; | 
|     var dom = zr.dom; | 
|     dom.appendChild(debugViewRoot); | 
|     var computedStyle = getComputedStyle(dom); | 
|     if (computedStyle.position === 'static') { | 
|         dom.style.position = 'relative'; | 
|     } | 
|     zr.on('rendered', function () { | 
|         if (painter.getLayers) { | 
|             var idx_1 = 0; | 
|             painter.eachBuiltinLayer(function (layer) { | 
|                 if (!layer.debugGetPaintRects) { | 
|                     return; | 
|                 } | 
|                 var paintRects = layer.debugGetPaintRects(); | 
|                 for (var i = 0; i < paintRects.length; i++) { | 
|                     if (!paintRects[i].width || !paintRects[i].height) { | 
|                         continue; | 
|                     } | 
|                     if (!debugRects[idx_1]) { | 
|                         debugRects[idx_1] = new DebugRect(opts.style); | 
|                         debugViewRoot.appendChild(debugRects[idx_1].dom); | 
|                     } | 
|                     debugRects[idx_1].show(opts.autoHideDelay); | 
|                     debugRects[idx_1].update(paintRects[i]); | 
|                     idx_1++; | 
|                 } | 
|             }); | 
|             for (var i = idx_1; i < debugRects.length; i++) { | 
|                 debugRects[i].hide(); | 
|             } | 
|         } | 
|     }); | 
| } |