'use strict';
exports.__esModule = true;
exports.enqueueRender = enqueueRender;
exports.rerender = rerender;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _options = require('./options');
var _options2 = _interopRequireDefault(_options);
var _util = require('./util');
var _vdomComponent = require('./vdom/component');
/** Managed queue of dirty components to be re-rendered */
// items/itemsOffline swap on each rerender() call (just a simple pool technique)
var items = [],
itemsOffline = [];
function enqueueRender(component) {
Iif (items.push(component) !== 1) return;
(_options2['default'].debounceRendering || _util.setImmediate)(rerender);
}
function rerender() {
if (!items.length) return;
var currentItems = items,
p = undefined;
// swap online & offline
items = itemsOffline;
itemsOffline = currentItems;
while (p = currentItems.pop()) {
Eif (p._dirty) _vdomComponent.renderComponent(p);
}
}
|