@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
59 lines (58 loc) • 2.53 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getPerformanceOptions = getPerformanceOptions;
exports.startMeasureReactNodeViewRendered = startMeasureReactNodeViewRendered;
exports.stopMeasureReactNodeViewRendered = stopMeasureReactNodeViewRendered;
var _analytics = require("../analytics");
var _measure = require("./performance/measure");
// This was existing logic when converting from ReactNodeView
// our current sampling for this event is not bound by node.type
var nodeViewRenderedEventsCounter = 0;
var DEFAULT_SAMPLING_RATE = 100;
var DEFAULT_SLOW_THRESHOLD = 7;
function getPerformanceOptions(view) {
var _nodeViewTracking$sam, _nodeViewTracking$slo;
// TODO: ED-15663
// Please, do not copy or use this kind of code below
// @ts-ignore
var fakePluginKey = {
key: 'analyticsPlugin$',
getState: function getState(state) {
return state['analyticsPlugin$'];
}
};
var pluginState = fakePluginKey.getState(view.state);
var nodeViewTracking = pluginState && pluginState.performanceTracking ? pluginState.performanceTracking.nodeViewTracking || {} : {};
var samplingRate = (_nodeViewTracking$sam = nodeViewTracking.samplingRate) !== null && _nodeViewTracking$sam !== void 0 ? _nodeViewTracking$sam : DEFAULT_SAMPLING_RATE;
var slowThreshold = (_nodeViewTracking$slo = nodeViewTracking.slowThreshold) !== null && _nodeViewTracking$slo !== void 0 ? _nodeViewTracking$slo : DEFAULT_SLOW_THRESHOLD;
return {
trackingEnabled: !!nodeViewTracking.enabled,
samplingRate: samplingRate,
slowThreshold: slowThreshold
};
}
function startMeasureReactNodeViewRendered(_ref) {
var nodeTypeName = _ref.nodeTypeName;
(0, _measure.startMeasure)("\uD83E\uDD89".concat(nodeTypeName, "::ReactNodeView"));
}
function stopMeasureReactNodeViewRendered(_ref2) {
var nodeTypeName = _ref2.nodeTypeName,
dispatchAnalyticsEvent = _ref2.dispatchAnalyticsEvent,
samplingRate = _ref2.samplingRate,
slowThreshold = _ref2.slowThreshold;
(0, _measure.stopMeasure)("\uD83E\uDD89".concat(nodeTypeName, "::ReactNodeView"), function (duration) {
if (++nodeViewRenderedEventsCounter % samplingRate === 0 && duration > slowThreshold) {
dispatchAnalyticsEvent({
action: _analytics.ACTION.REACT_NODEVIEW_RENDERED,
actionSubject: _analytics.ACTION_SUBJECT.EDITOR,
eventType: _analytics.EVENT_TYPE.OPERATIONAL,
attributes: {
node: nodeTypeName,
duration: duration
}
});
}
});
}