UNPKG

@zendesk/react-measure-timing-hooks

Version:

react hooks for measuring time to interactive and time to render of components

33 lines 2.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createQuietWindowDurationCalculator = void 0; const INITIAL_QUIET_WINDOW_SIZE = 5_000; // Google's value: 5 seconds at FMP const X_SECONDS = 15; // Google's value: 15 seconds after FMP const QUITE_WINDOW_SIZE_AT_X = 3_000; // Google's value: 3 seconds at some specified point in time x const MINIMUM_QUIET_WINDOW_SIZE = 1_000; // Google's value: 1 second as t -> infinity /** * Create a function to calculate the dynamic quiet window duration based on configurable decay points. * @param {Object} params - The parameters for the quiet window duration calculation. * @param {number} [params.D0=INITIAL_QUIET_WINDOW_SIZE] - Desired quiet window duration at FMP (in milliseconds). * @param {number} [params.Dx=QUITE_WINDOW_SIZE_AT_X] - Desired quiet window duration at x seconds after FMP (in milliseconds). * @param {number} [params.x=X_SECONDS] - Time in seconds after FMP for which Dx is specified. * @param {number} [params.DInfinity=MINIMUM_QUIET_WINDOW_SIZE] - Desired asymptotic quiet window duration (in milliseconds). * @returns A function that calculates the quiet window duration based on the current time and FMP. */ const createQuietWindowDurationCalculator = ({ D0 = INITIAL_QUIET_WINDOW_SIZE, Dx = QUITE_WINDOW_SIZE_AT_X, x = X_SECONDS, DInfinity = MINIMUM_QUIET_WINDOW_SIZE, } = {}) => /** * Calculate the dynamic quiet window duration based on configurable decay points. * @param {number} nowTime - The current end time in milliseconds. * @param {number} referenceTime - The timestamp of the First Meaningful Paint (FMP) in milliseconds. * @returns {number} - The required quiet window duration in milliseconds. */ (nowTime, referenceTime) => { const secondsPassed = (nowTime - referenceTime) / 1_000; // Calculate the decay constant k based on the given parameters const decayFactor = -Math.log((Dx - DInfinity) / (D0 - DInfinity)) / x; // Calculate the required quiet window duration at the current time const quietWindowDuration = (D0 - DInfinity) * Math.exp(-decayFactor * secondsPassed) + DInfinity; return quietWindowDuration; }; exports.createQuietWindowDurationCalculator = createQuietWindowDurationCalculator; //# sourceMappingURL=getDynamicQuietWindowDuration.js.map