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(); 
 | 
            } 
 | 
        } 
 | 
    }); 
 | 
} 
 |