diff --git a/src/component/component_node.ts b/src/component/component_node.ts
index 1b6605c2..5e441ec2 100644
--- a/src/component/component_node.ts
+++ b/src/component/component_node.ts
@@ -334,6 +334,7 @@ export class ComponentNode
implements VNode= 0) {
+ root.willPatch[index] = fiber;
+ }
+ }
+ if (node.patched.length) {
+ let index = root.patched.indexOf(current);
+ if (index >= 0) {
+ root.patched[index] = fiber;
+ }
+ }
+
+ return fiber;
}
- if (fibersInError.has(current)) {
- fibersInError.delete(current);
- fibersInError.delete(root);
- current.appliedToDom = false;
- }
- return current;
+ // let parent = current.parent;
+ // let fiber = new Fiber(node);
+ // return fiber;
+
+ // cancelFibers(current.children);
+ // current.root = null;
+ // let root = current.root!;
+ // root.setCounter(root.counter + 1 - cancelFibers(current.children));
+ // current.children = [];
+ // current.bdom = null;
+ // if (current === root) {
+ // root.reachedChildren = new WeakSet();
+ // }
+ // if (fibersInError.has(current)) {
+ // fibersInError.delete(current);
+ // fibersInError.delete(root);
+ // current.appliedToDom = false;
+ // }
+ // return current;
}
const fiber = new RootFiber(node);
fiber.root = fiber;
@@ -70,6 +107,8 @@ function cancelFibers(fibers: Fiber[]): number {
return result;
}
+(window as any).fibers = [];
+
export class Fiber {
node: ComponentNode;
bdom: BDom | null = null;
@@ -81,6 +120,7 @@ export class Fiber {
constructor(node: ComponentNode) {
this.node = node;
+ (window as any).fibers.push(this);
}
render() {
@@ -190,6 +230,7 @@ export class RootFiber extends Fiber {
}
setCounter(newValue: number) {
+ debugger;
this.counter = newValue;
if (newValue === 0) {
this.node.app.scheduler.flush();
diff --git a/tests/components/concurrency.test.ts b/tests/components/concurrency.test.ts
index daefa896..8df8d9cd 100644
--- a/tests/components/concurrency.test.ts
+++ b/tests/components/concurrency.test.ts
@@ -870,6 +870,7 @@ test("concurrent renderings scenario 2", async () => {
"ComponentB:rendered",
]).toBeLogged();
+ debugger;
stateB.fromB = "c";
await nextTick();
expect(fixture.innerHTML).toBe("");
@@ -881,7 +882,7 @@ test("concurrent renderings scenario 2", async () => {
defs[1].resolve(); // resolve rendering initiated in B
await nextTick();
- expect(fixture.innerHTML).toBe("");
+ debugger
expect([
"ComponentC:willRender",
"ComponentC:rendered",
@@ -892,6 +893,7 @@ test("concurrent renderings scenario 2", async () => {
"ComponentB:patched",
"ComponentA:patched",
]).toBeLogged();
+ expect(fixture.innerHTML).toBe("");
defs[0].resolve(); // resolve rendering initiated in A
await nextTick();