next
Version:
The React Framework
37 lines (36 loc) • 1.14 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.trackWebVitalMetric = trackWebVitalMetric;
exports.useExperimentalWebVitalsReport = useExperimentalWebVitalsReport;
exports.webVitalsCallbacks = void 0;
var _react = require("react");
const webVitalsCallbacks = new Set();
exports.webVitalsCallbacks = webVitalsCallbacks;
const metrics = [];
function trackWebVitalMetric(metric) {
metrics.push(metric);
webVitalsCallbacks.forEach((callback)=>callback(metric)
);
}
function useExperimentalWebVitalsReport(callback) {
const metricIndexRef = (0, _react).useRef(0);
(0, _react).useEffect(()=>{
// Flush calculated metrics
const reportMetric = (metric)=>{
callback(metric);
metricIndexRef.current = metrics.length;
};
for(let i = metricIndexRef.current; i < metrics.length; i++){
reportMetric(metrics[i]);
}
webVitalsCallbacks.add(reportMetric);
return ()=>{
webVitalsCallbacks.delete(reportMetric);
};
}, [
callback
]);
}
//# sourceMappingURL=vitals.js.map
;