Skip to content

Commit b070315

Browse files
committed
+
1 parent 75d718e commit b070315

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

src/utils/glimmer-validator.ts

+36-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1-
import { Cell, cellFor, cellsMap, getTracker } from './reactive';
1+
import {
2+
type Cell,
3+
cellFor,
4+
cellsMap,
5+
getTracker,
6+
isRendering,
7+
setIsRendering,
8+
} from './reactive';
29

310
export { cellFor as tagFor } from '@lifeart/gxt';
411

@@ -55,3 +62,31 @@ export function trackedData<T extends object, K extends keyof T>(
5562

5663
return { getter, setter };
5764
}
65+
66+
let renderingStateBeforeBegin = isRendering();
67+
68+
export function beginTrackFrame() {
69+
renderingStateBeforeBegin = isRendering();
70+
if (!isRendering()) {
71+
setIsRendering(true);
72+
}
73+
}
74+
75+
export function endTrackFrame() {
76+
if (isRendering() !== renderingStateBeforeBegin) {
77+
setIsRendering(renderingStateBeforeBegin);
78+
}
79+
}
80+
81+
export function beginUntrackFrame() {
82+
renderingStateBeforeBegin = isRendering();
83+
if (renderingStateBeforeBegin) {
84+
setIsRendering(false);
85+
}
86+
}
87+
88+
export function endUntrackFrame() {
89+
if (isRendering() !== renderingStateBeforeBegin) {
90+
setIsRendering(renderingStateBeforeBegin);
91+
}
92+
}

src/utils/reactive.ts

+3
Original file line numberDiff line numberDiff line change
@@ -329,4 +329,7 @@ export function inNewTrackingFrame(callback: () => void) {
329329

330330
export function getTracker() {
331331
return currentTracker;
332+
}
333+
export function setTracker(tracker: Set<Cell> | null) {
334+
currentTracker = tracker;
332335
}

0 commit comments

Comments
 (0)