1 | import options from './options';
|
2 | import { defer } from './util';
|
3 | import { renderComponent } from './vdom/component';
|
4 |
|
5 | /** Managed queue of dirty components to be re-rendered */
|
6 |
|
7 | // items/itemsOffline swap on each rerender() call (just a simple pool technique)
|
8 | let items = [];
|
9 |
|
10 | export function enqueueRender(component) {
|
11 | if (!component._dirty && (component._dirty = true) && items.push(component)==1) {
|
12 | (options.debounceRendering || defer)(rerender);
|
13 | }
|
14 | }
|
15 |
|
16 |
|
17 | export function rerender() {
|
18 | let p, list = items;
|
19 | items = [];
|
20 | while ( (p = list.pop()) ) {
|
21 | if (p._dirty) renderComponent(p);
|
22 | }
|
23 | }
|