Skip to content

Commit 8526c0d

Browse files
committed
Run distinguishable in sync as only runs on dev mode (dojo#547)
1 parent 7c7d17a commit 8526c0d

File tree

1 file changed

+11
-42
lines changed

1 file changed

+11
-42
lines changed

src/core/vdom.ts

+11-42
Original file line numberDiff line numberDiff line change
@@ -841,7 +841,6 @@ export function renderer(renderer: () => RenderResult): Renderer {
841841
let _insertBeforeMap: undefined | WeakMap<DNodeWrapper, Node> = new WeakMap<DNodeWrapper, Node>();
842842
let _nodeToWrapperMap = new WeakMap<VNode | WNode<any>, WNodeWrapper>();
843843
let _renderScheduled: number | undefined;
844-
let _idleCallbacks: Function[] = [];
845844
let _deferredRenderCallbacks: Function[] = [];
846845
let parentInvalidate: () => void;
847846
let _allMergedNodes: Node[] = [];
@@ -1197,7 +1196,7 @@ export function renderer(renderer: () => RenderResult): Renderer {
11971196
}
11981197
}
11991198

1200-
function runDeferredRenderCallbacks() {
1199+
function _runDeferredRenderCallbacks() {
12011200
const { sync } = _mountOptions;
12021201
const callbacks = _deferredRenderCallbacks;
12031202
_deferredRenderCallbacks = [];
@@ -1216,29 +1215,6 @@ export function renderer(renderer: () => RenderResult): Renderer {
12161215
}
12171216
}
12181217

1219-
function runAfterRenderCallbacks() {
1220-
const { sync } = _mountOptions;
1221-
const callbacks = _idleCallbacks;
1222-
_idleCallbacks = [];
1223-
if (callbacks.length) {
1224-
const run = () => {
1225-
let callback: Function | undefined;
1226-
while ((callback = callbacks.shift())) {
1227-
callback();
1228-
}
1229-
};
1230-
if (sync) {
1231-
run();
1232-
} else {
1233-
if (global.requestIdleCallback) {
1234-
global.requestIdleCallback(run);
1235-
} else {
1236-
setTimeout(run);
1237-
}
1238-
}
1239-
}
1240-
}
1241-
12421218
function processProperties(next: VNodeWrapper, previousProperties: PreviousProperties) {
12431219
if (next.node.attributes && next.node.events) {
12441220
updateAttributes(
@@ -1298,7 +1274,7 @@ export function renderer(renderer: () => RenderResult): Renderer {
12981274
_runDomInstructionQueue();
12991275
_cleanUpMergedNodes();
13001276
_insertBeforeMap = undefined;
1301-
_runCallbacks();
1277+
_runDeferredRenderCallbacks();
13021278
}
13031279

13041280
function invalidate() {
@@ -1380,7 +1356,7 @@ export function renderer(renderer: () => RenderResult): Renderer {
13801356
}
13811357
_runDomInstructionQueue();
13821358
_cleanUpMergedNodes();
1383-
_runCallbacks();
1359+
_runDeferredRenderCallbacks();
13841360
}
13851361

13861362
function _cleanUpMergedNodes() {
@@ -1492,11 +1468,6 @@ export function renderer(renderer: () => RenderResult): Renderer {
14921468
}
14931469
}
14941470

1495-
function _runCallbacks() {
1496-
runAfterRenderCallbacks();
1497-
runDeferredRenderCallbacks();
1498-
}
1499-
15001471
function _processMergeNodes(next: DNodeWrapper, mergeNodes: Node[]) {
15011472
const { merge } = _mountOptions;
15021473
if (merge && mergeNodes.length) {
@@ -1523,11 +1494,9 @@ export function renderer(renderer: () => RenderResult): Renderer {
15231494
}
15241495
}
15251496

1526-
function registerDistinguishableCallback(childNodes: DNodeWrapper[], index: number) {
1527-
_idleCallbacks.push(() => {
1528-
const parentWNodeWrapper = getWNodeWrapper(childNodes[index].owningId);
1529-
checkDistinguishable(childNodes, index, parentWNodeWrapper);
1530-
});
1497+
function distinguishableCheck(childNodes: DNodeWrapper[], index: number) {
1498+
const parentWNodeWrapper = getWNodeWrapper(childNodes[index].owningId);
1499+
checkDistinguishable(childNodes, index, parentWNodeWrapper);
15311500
}
15321501

15331502
function createKeyMap(wrappers: DNodeWrapper[]): (string | number)[] | false {
@@ -1588,16 +1557,16 @@ export function renderer(renderer: () => RenderResult): Renderer {
15881557
}
15891558
instructions.push({ current: currentWrapper, next: nextWrapper });
15901559
} else if (!currentWrapper || findIndexOfChild(current, nextWrapper, oldIndex + 1) === -1) {
1591-
has('dojo-debug') && current.length && registerDistinguishableCallback(next, newIndex);
1560+
has('dojo-debug') && current.length && distinguishableCheck(next, newIndex);
15921561
instructions.push({ current: undefined, next: nextWrapper });
15931562
newIndex++;
15941563
} else if (findIndexOfChild(next, currentWrapper, newIndex + 1) === -1) {
1595-
has('dojo-debug') && registerDistinguishableCallback(current, oldIndex);
1564+
has('dojo-debug') && distinguishableCheck(current, oldIndex);
15961565
instructions.push({ current: currentWrapper, next: undefined });
15971566
oldIndex++;
15981567
} else {
1599-
has('dojo-debug') && registerDistinguishableCallback(next, newIndex);
1600-
has('dojo-debug') && registerDistinguishableCallback(current, oldIndex);
1568+
has('dojo-debug') && distinguishableCheck(next, newIndex);
1569+
has('dojo-debug') && distinguishableCheck(current, oldIndex);
16011570
instructions.push({ current: currentWrapper, next: undefined });
16021571
instructions.push({ current: undefined, next: nextWrapper });
16031572
oldIndex++;
@@ -1609,7 +1578,7 @@ export function renderer(renderer: () => RenderResult): Renderer {
16091578
}
16101579
if (currentLength > oldIndex && newIndex >= nextLength) {
16111580
for (let i = oldIndex; i < currentLength; i++) {
1612-
has('dojo-debug') && registerDistinguishableCallback(current, i);
1581+
has('dojo-debug') && distinguishableCheck(current, i);
16131582
instructions.push({ current: current[i], next: undefined });
16141583
}
16151584
}

0 commit comments

Comments
 (0)