UNPKG

@atlaskit/editor-common

Version:

A package that contains common classes and components for editor and renderer

38 lines 1.25 kB
import { isPerformanceAPIAvailable } from './is-performance-api-available'; const measureMap = new Map(); export function startMeasure(measureName) { if (!isPerformanceAPIAvailable()) { return; } performance.mark(`${measureName}::start`); measureMap.set(measureName, performance.now()); } export function stopMeasure(measureName, onMeasureComplete) { if (!isPerformanceAPIAvailable()) { return; } performance.mark(`${measureName}::end`); const start = onMeasureComplete ? measureMap.get(measureName) : undefined; try { performance.measure(measureName, `${measureName}::start`, `${measureName}::end`); } catch (error) {} finally { if (onMeasureComplete) { const entry = performance.getEntriesByName(measureName).pop(); if (entry) { onMeasureComplete(entry.duration, entry.startTime); } else if (start) { onMeasureComplete(performance.now() - start, start); } } clearMeasure(measureName); } } export function clearMeasure(measureName) { if (!isPerformanceAPIAvailable()) { return; } measureMap.delete(measureName); performance.clearMarks(`${measureName}::start`); performance.clearMarks(`${measureName}::end`); performance.clearMeasures(measureName); }