feat: base
This commit is contained in:
78
frontend/node_modules/computeds/out/tracker.js
generated
vendored
Normal file
78
frontend/node_modules/computeds/out/tracker.js
generated
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Tracker = void 0;
|
||||
const system_1 = require("./system");
|
||||
class Tracker {
|
||||
constructor(spread, effect) {
|
||||
this.spread = spread;
|
||||
this.effect = effect;
|
||||
this.dirtyLevel = 3 /* DirtyLevels.Dirty */;
|
||||
this.trackId = 0;
|
||||
this.runnings = 0;
|
||||
this.queryings = 0;
|
||||
this.depsLength = 0;
|
||||
}
|
||||
get dirty() {
|
||||
if (this.dirtyLevel === 1 /* DirtyLevels.ComputedValueMaybeDirty */) {
|
||||
this.dirtyLevel = 0 /* DirtyLevels.NotDirty */;
|
||||
if (this.trackToken) {
|
||||
const deps = system_1.depsMap.get(this.trackToken);
|
||||
if (deps) {
|
||||
this.queryings++;
|
||||
(0, system_1.pauseTracking)();
|
||||
for (const dep of deps) {
|
||||
if (dep.computed) {
|
||||
dep.computed();
|
||||
if (this.dirtyLevel >= 2 /* DirtyLevels.ComputedValueDirty */) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
(0, system_1.resetTracking)();
|
||||
this.queryings--;
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.dirtyLevel >= 2 /* DirtyLevels.ComputedValueDirty */;
|
||||
}
|
||||
track(fn) {
|
||||
try {
|
||||
system_1.activeTrackers.push(this);
|
||||
this.runnings++;
|
||||
preCleanup(this);
|
||||
return fn();
|
||||
}
|
||||
finally {
|
||||
postCleanup(this);
|
||||
this.runnings--;
|
||||
system_1.activeTrackers.pop();
|
||||
if (!this.runnings) {
|
||||
this.dirtyLevel = 0 /* DirtyLevels.NotDirty */;
|
||||
}
|
||||
}
|
||||
}
|
||||
reset() {
|
||||
preCleanup(this);
|
||||
postCleanup(this);
|
||||
this.dirtyLevel = 3 /* DirtyLevels.Dirty */;
|
||||
}
|
||||
deref() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
exports.Tracker = Tracker;
|
||||
function preCleanup(tracker) {
|
||||
tracker.trackId++;
|
||||
tracker.depsLength = 0;
|
||||
}
|
||||
function postCleanup(tracker) {
|
||||
if (tracker.trackToken) {
|
||||
const deps = system_1.depsMap.get(tracker.trackToken);
|
||||
if (deps && deps.length > tracker.depsLength) {
|
||||
for (let i = tracker.depsLength; i < deps.length; i++) {
|
||||
(0, system_1.cleanupDepEffect)(deps[i], tracker);
|
||||
}
|
||||
deps.length = tracker.depsLength;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user