@shopify/flash-list
Version:
FlashList is a more performant FlatList replacement
42 lines • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RenderTimeTracker = void 0;
var PlatformHelper_1 = require("../../native/config/PlatformHelper");
var AverageWindow_1 = require("../../utils/AverageWindow");
var RenderTimeTracker = /** @class */ (function () {
function RenderTimeTracker() {
this.renderTimeAvgWindow = new AverageWindow_1.AverageWindow(5);
this.lastTimerStartedAt = -1;
this.maxRenderTime = 32; // TODO: Improve this even more
this.defaultRenderTime = 16;
}
RenderTimeTracker.prototype.startTracking = function () {
if (!PlatformHelper_1.PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
return;
}
if (this.lastTimerStartedAt === -1) {
this.lastTimerStartedAt = Date.now();
}
};
RenderTimeTracker.prototype.markRenderComplete = function () {
if (!PlatformHelper_1.PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
return;
}
if (this.lastTimerStartedAt !== -1) {
this.renderTimeAvgWindow.addValue(Date.now() - this.lastTimerStartedAt);
this.lastTimerStartedAt = -1;
}
};
RenderTimeTracker.prototype.getRawValue = function () {
return this.renderTimeAvgWindow.currentValue;
};
RenderTimeTracker.prototype.getAverageRenderTime = function () {
if (!PlatformHelper_1.PlatformConfig.trackAverageRenderTimeForOffsetProjection) {
return this.defaultRenderTime;
}
return Math.min(this.maxRenderTime, Math.max(Math.round(this.renderTimeAvgWindow.currentValue), 16));
};
return RenderTimeTracker;
}());
exports.RenderTimeTracker = RenderTimeTracker;
//# sourceMappingURL=RenderTimeTracker.js.map