1
1
import { commitRoot } from './diff/commit' ;
2
2
import options from './options' ;
3
- import { createVNode , Fragment } from './create-element' ;
3
+ import { createElement , Fragment } from './create-element' ;
4
4
import { patch } from './diff/patch' ;
5
5
import { DIRTY_BIT , FORCE_UPDATE , MODE_UNMOUNTING } from './constants' ;
6
6
import { getParentDom } from './tree' ;
@@ -91,26 +91,25 @@ Component.prototype.render = Fragment;
91
91
/**
92
92
* @param {import('./internal').Internal } internal The internal to rerender
93
93
*/
94
- function rerender ( internal ) {
95
- if ( ~ internal . flags & MODE_UNMOUNTING && internal . flags & DIRTY_BIT ) {
96
- const vnode = createVNode (
97
- internal . type ,
98
- internal . props ,
99
- internal . key , // @TODO we shouldn't need to actually pass these
100
- internal . ref , // since the mode flag should bypass key/ref handling
101
- 0
102
- ) ;
103
-
104
- patch ( internal , vnode , getParentDom ( internal ) ) ;
105
- commitRoot ( internal ) ;
106
- }
94
+ function renderQueuedInternal ( internal ) {
95
+ // Don't render unmounting/unmounted trees:
96
+ if ( internal . flags & MODE_UNMOUNTING ) return ;
97
+
98
+ // Don't render trees already rendered in this pass:
99
+ if ( ! ( internal . flags & DIRTY_BIT ) ) return ;
100
+
101
+ const vnode = createElement ( internal . type , internal . props ) ;
102
+ vnode . props = internal . props ;
103
+
104
+ patch ( internal , vnode , getParentDom ( internal ) ) ;
105
+ commitRoot ( internal ) ;
107
106
}
108
107
109
108
/**
110
109
* The render queue
111
110
* @type {Array<import('./internal').Internal> }
112
111
*/
113
- let rerenderQueue = [ ] ;
112
+ let renderQueue = [ ] ;
114
113
115
114
/*
116
115
* The value of `Component.debounce` must asynchronously invoke the passed in callback. It is
@@ -131,22 +130,22 @@ export function enqueueRender(internal) {
131
130
if (
132
131
( ! ( internal . flags & DIRTY_BIT ) &&
133
132
( internal . flags |= DIRTY_BIT ) &&
134
- rerenderQueue . push ( internal ) &&
135
- ! process . _rerenderCount ++ ) ||
133
+ renderQueue . push ( internal ) &&
134
+ ! processRenderQueue . _rerenderCount ++ ) ||
136
135
prevDebounce !== options . debounceRendering
137
136
) {
138
137
prevDebounce = options . debounceRendering ;
139
- ( prevDebounce || setTimeout ) ( process ) ;
138
+ ( prevDebounce || setTimeout ) ( processRenderQueue ) ;
140
139
}
141
140
}
142
141
143
142
/** Flush the render queue by rerendering all queued components */
144
- function process ( ) {
145
- while ( ( len = process . _rerenderCount = rerenderQueue . length ) ) {
146
- rerenderQueue . sort ( ( a , b ) => a . _depth - b . _depth ) ;
143
+ function processRenderQueue ( ) {
144
+ while ( ( len = processRenderQueue . _rerenderCount = renderQueue . length ) ) {
145
+ renderQueue . sort ( ( a , b ) => a . _depth - b . _depth ) ;
147
146
while ( len -- ) {
148
- rerender ( rerenderQueue . shift ( ) ) ;
147
+ renderQueuedInternal ( renderQueue . shift ( ) ) ;
149
148
}
150
149
}
151
150
}
152
- let len = ( process . _rerenderCount = 0 ) ;
151
+ let len = ( processRenderQueue . _rerenderCount = 0 ) ;
0 commit comments